Detección de novedades y valores atípicos con Scikit-Learn

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La detección de novedades y valores atípicos son técnicas utilizadas para identificar si una nueva observación pertenece a la misma distribución que las observaciones existentes o si debe considerarse diferente. Estas técnicas se utilizan comúnmente para limpiar conjuntos de datos reales identificando observaciones anormales o inusuales.

Hay dos distinciones importantes en este contexto:

  1. Detección de valores atípicos: Los datos de entrenamiento contienen valores atípicos, que son observaciones que se alejan de las demás. Los estimadores de detección de valores atípicos tratan de ajustarse a las regiones donde los datos de entrenamiento están más concentrados, ignorando las observaciones aberrantes.
  2. Detección de novedades: Los datos de entrenamiento no están contaminados por valores atípicos, y el objetivo es detectar si una nueva observación es un valor atípico. En este contexto, un valor atípico también se llama novedad.

El proyecto scikit-learn proporciona un conjunto de herramientas de aprendizaje automático que se pueden utilizar tanto para la detección de novedades como de valores atípicos. Estas herramientas se implementan utilizando algoritmos de aprendizaje no supervisado, lo que significa que aprenden patrones a partir de los datos sin necesidad de ejemplos etiquetados.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71120{{"Detección de novedades y valores atípicos con Scikit-Learn"}} end

Importar las bibliotecas necesarias

Primero, necesitamos importar las bibliotecas necesarias. En este ejemplo, usaremos el módulo sklearn de scikit-learn.

from sklearn import neighbors

Cargar el conjunto de datos

A continuación, necesitamos cargar el conjunto de datos en el que queremos realizar la detección de valores atípicos. Puede utilizar cualquier conjunto de datos de su elección o crear un conjunto de datos personalizado. En este ejemplo, usaremos un conjunto de datos de muestra llamado X_train.

X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]

Crear un estimador de detección de valores atípicos

Ahora, podemos crear un objeto de estimador de detección de valores atípicos a partir de la clase neighbors.LocalOutlierFactor. Esta clase implementa el algoritmo Local Outlier Factor, que es un método popular para la detección de valores atípicos.

estimator = neighbors.LocalOutlierFactor()

Ajustar el modelo a los datos de entrenamiento

A continuación, podemos ajustar el estimador de detección de valores atípicos a nuestros datos de entrenamiento utilizando el método fit.

estimator.fit(X_train)

Predecir valores atípicos

Una vez que el modelo está ajustado, podemos utilizar el método predict para predecir si nuevas observaciones son valores atípicos o no. El método predict devuelve 1 para los valores no atípicos y -1 para los valores atípicos.

X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)

Acceder a las puntuaciones de valores atípicos

Además de predecir valores atípicos, también podemos acceder a las puntuaciones de valores atípicos para cada observación utilizando el atributo negative_outlier_factor_. Las puntuaciones de valores atípicos más bajas indican una mayor anomalía.

outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)

Resumen

En este laboratorio, aprendimos cómo realizar la detección de novedades y valores atípicos utilizando la biblioteca scikit - learn. Creamos un estimador de detección de valores atípicos, lo ajustamos a los datos de entrenamiento, predecimos valores atípicos en nuevas observaciones y accedimos a las puntuaciones de valores atípicos. Estas técnicas se pueden utilizar para identificar observaciones anormales o inusuales en un conjunto de datos y se utilizan comúnmente para tareas de detección de anomalías.