Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

La detección de valores atípicos es una tarea importante en el campo del aprendizaje automático. Se utiliza para identificar observaciones inusuales o puntos de datos que se desvían de la tendencia general del conjunto de datos. Un algoritmo efectivo para la detección de valores atípicos es el algoritmo  Isolation Forest .

En el blog de hoy, cubriremos los conceptos básicos del algoritmo Isolation Forest y demostraremos cómo usarlo para detectar valores atípicos en un conjunto de datos usando Python . Puedes ver el video completo de este tutorial en la parte inferior de este blog .

Tabla de contenido

Algoritmo de bosque de aislamiento frente a método de diagrama de caja 

A continuación se muestran dos imágenes para la detección de valores atípicos. Observe las diferencias significativas en la representación visual cuando se utiliza el en comparación con cuando se utiliza el modelo de aprendizaje automático de bosque aislado para la detección de valores atípicos. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

En el modelo ML de Isolation Forest, el porcentaje de valores atípicos detectados por el algoritmo de detección de anomalías IS es del 32,56 %. Usando el mismo algoritmo, el 67,44 % restante de los datos cae en el rango normal, que es bastante sensible. Nuestro objetivo es afinar esta sensibilidad usando Python

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

El método tradicional de detección de valores atípicos

La forma tradicional de encontrar un valor atípico es utilizando un método de diagrama de caja . En este método, usamos el IQR para encontrar lo que está fuera del rango esperado de los datos. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

En este ejemplo, este único punto sobre el bigote es nuestro valor atípico.

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Si traducimos este gráfico visual a un gráfico circular, obtendremos este valor atípico en particular que equivale al 2,33 % de los datos totales. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

En este blog, aprenderemos cómo usar el método ML de Isolation Forest, ajustarlo para que coincida con el método tradicional y aumentar o disminuir su sensibilidad.

El conjunto de datos para el algoritmo del bosque de aislamiento

Abra nuestro conjunto de datos en LuckyTemplates. Luego haga clic en Transformar datos. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Aparecerá nuestro conjunto de datos para este tutorial. Contiene la fecha , el número de usuarios , el índice y el valor atípico del bosque de aislamiento con salida 1 para el rango normal y -1 para valores atípicos  .

También tenemos una columna para valores atípicos tradicionales y una columna condicional titulada Detección de anomalías IS que refleja el valor atípico del bosque de aislamiento. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Nuestra segunda consulta muestra nuestro marco de datos en el que aprenderemos cómo poner todo junto. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Los códigos Python

En el panel Propiedades , podemos ver nuestros dos scripts de Python en ejecución. Creamos la salida de Isolation Forest con uno de estos scripts de Python y generamos el valor atípico tradicional con el otro. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Código de Python del algoritmo del bosque de aislamiento

Haga clic en Ejecutar secuencia de comandos de Python para ver el código. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

En este código de Python, importamos pandas como pd y usamos algo llamado Isolation Forest. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Un bosque de aislamiento es un modelo basado en árboles que toma decisiones basadas en una estructura de árbol y luego decide si es un valor atípico o no. Lo llamamos modelo de conjunto porque utiliza dos métodos diferentes para encontrar un valor atípico en particular. 

También reemplazamos la variable del conjunto de datos , que contiene nuestro conjunto de datos por defecto, como df

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Dado nuestro conjunto de datos, no necesitaremos las dos líneas de códigos resaltadas a continuación, por lo que podemos eliminar esas líneas. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Lo que estamos haciendo es instanciar el modelo.

Guarde el modelo como IsolationForest y deje que el modelo aprenda los datos con los usuarios. Luego, cree una nueva columna llamada Detección de anomalías que revisará todos los datos que aprende y predecirá cuál debería ser un valor atípico o no. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Para esta función, el valor predeterminado de contaminación se establece en 0,5 . Por lo tanto, es súper sensible en este momento y buscará muchos valores atípicos. Es por eso que en nuestro gráfico circular anterior, tenemos un rango muy alto de valores atípicos en 32.56%. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Para hacerlo menos sensible, podemos agregar la contaminación = .1 en la función IsolationForest .

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Finalmente, restablezca el índice y haga clic en Aceptar.

El resultado mostrará una tabla resumen. Dirígete al panel Pasos aplicados y haz clic en df.

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

En el resultado, podemos encontrar los valores atípicos en la columna Detección de anomalías

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

También queremos ver cómo se comporta junto al valor atípico tradicional. 

Código tradicional de Python para valores atípicos

Ejecutaremos otro script de Python que, en este ejemplo, es Run Python script1.

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Este código agrega una función de valor atípico usando el primer y tercer cuartiles. Cuando restamos q1 de q3 , obtenemos el rango intercuartílico (RIC)

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Las siguientes dos líneas establecen las condiciones para los valores atípicos. La primera línea dice que cualquier valor inferior a 1,5 * iqr se considera un valor atípico negativo o inferior. Así es también como encontramos valores atípicos en la forma tradicional.

También sabemos que tenemos un valor atípico como el punto más alto en nuestros datos. Para dar cuenta de eso, la segunda línea establece que los puntos de datos superiores a q3 + 1,5 * iqr también se consideran valores atípicos. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Devuelva ese conjunto de datos y use la función outliers(df, 'Users') . Luego haga clic en Aceptar.

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Aparecerá una tabla resumen similar a la que tenemos anteriormente. 

Si vamos al panel Pasos aplicados y hacemos clic en Changed Type1 , obtendremos las columnas Tradicionales de valores atípicos y Detección de anomalías una al lado de la otra, y esta última usa 1 y -1 para indicar valores atípicos y no.

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Sin embargo, cuando usamos fechas con Python, pueden parecer desordenadas. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Lo que podemos hacer es crear una columna adicional usando el índice de Agregar columna .

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Luego, agregue Index a la columna anterior con Merge , para que podamos conservar toda la información en esa columna/conjunto de datos original. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Una vez que tengamos todo junto, podemos ejecutar nuestro código y actualizar nuestras imágenes. Recuerde que cambiamos la contaminación del valor atípico de 0,5 a 0,1, por lo que deberíamos ver que esta parte del gráfico se reduce un poco. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Vuelva a las imágenes y haga clic en Aplicar cambios. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Observe cómo la Detección de anomalías pasó del 32,56 % al 11,63 % de nuestros datos. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Como vemos en nuestros resultados, esta es una buena manera de optimizar nuestra detección de valores atípicos. 

Recuerde también que cuando las personas usan el método tradicional, pueden usar valores inferiores a 1.5, pero 1.5 x IQR es la forma tradicional, sin embargo. 

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python

Algoritmo de bosque de aislamiento para la detección de valores atípicos en Python


Detección y presentación de resultados atípicos en LuckyTemplates
Creación de puntos de activación de valores atípicos dinámicos en LuckyTemplates
Función de detección de anomalías de LuckyTemplates: cómo funciona

Conclusión

Al usar el algoritmo Isolation Forest, podemos identificar y excluir fácilmente cualquier observación inusual de nuestro conjunto de datos, mejorando así la precisión de nuestro análisis. Este tutorial ha proporcionado una guía paso a paso sobre cómo usar el algoritmo Isolation Forest para la detección de valores atípicos usando Python, lo que debería ayudarlo a comenzar a implementarlo en sus propios proyectos.

Lo que hicimos fue una manera muy fácil de usar nuestro código Python para encontrar anomalías. Puede optimizar aún más ese algoritmo modificando la contaminación y una serie de otras variables que puede aprender a través de la página de códigos de Python

Mis mejores deseos,


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber