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,


Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.