← 8 · Atípicos y anomalías E11

LOF y DBSCAN encuentran las 3 anomalías de la muestra

La pregunta de esta página

¿Hay algo mejor que el IsolationForest para encontrar ventas raras?

1 El problema

La página 16 usa un IsolationForest, que aísla puntos partiendo el espacio al azar. Hay al menos dos familias más y conviene saber en qué se diferencian, porque cada una falla en situaciones distintas.

2 Por qué engaña

El error es tratarlos como intercambiables. Cada uno define de una forma distinta qué es un valor raro. Esa definición decide lo que encuentra.

Además, la mayoría trae un parámetro que fija cuántos atípicos va a devolver. Si se deja en su valor por defecto, el número de anomalías lo decide el parámetro y no el dato.

3 El principio

Tres formas de definir un valor raro

IsolationForest: raro es lo que se aísla con pocos cortes al azar.

LOF: raro es lo que está en una zona mucho menos poblada que la de sus vecinos. Es densidad local, así que funciona con nubes de densidad desigual.

DBSCAN: agrupa lo que está denso. Lo que no cabe en ningún grupo queda como ruido. Ese ruido son los atípicos.

4 La solución

Pasar los tres por los mismos datos y comparar contra la respuesta verdadera, que aquí existe: las anomalías vienen etiquetadas con su motivo en el propio fichero.

Se usan tres variables, el importe, la cantidad y la satisfacción, tipificadas, sobre una muestra de 4.000 ventas que contiene 3 anomalías reales.

5 Qué pasa con estos datos

LOF, fijado al 1 %
36 marcadas
acierta 3 de 3
DBSCAN
3 de ruido
en 5 grupos, acierta 3 de 3

DBSCAN las encuentra todas y no señala ninguna de más: su ruido son exactamente las 3 anomalías reales. LOF también las encuentra, con 33 falsos positivos más, porque se le pidió que marcara el 1 % de la muestra.

El parámetro que decide el resultado
LOF marcó 36 porque se le dijo que marcara el 1 %. Con otro porcentaje habría marcado otro número. El número de atípicos que devuelve un detector puede venir más de su configuración que del dato. Hay que mirarla antes de leer el resultado.

6 Para qué sirve

Para elegir con criterio. LOF encaja cuando la nube tiene zonas de densidad muy distinta, que es el caso de una cartera con clientes grandes y pequeños. DBSCAN sirve cuando interesa a la vez agrupar y detectar. Además no exige decir cuántos grupos hay.

Y como control cruzado. Que tres algoritmos con criterios distintos señalen las mismas ventas es una prueba mucho más sólida que el resultado de uno solo. Para que cuente así, los algoritmos tienen que ser independientes. La página de falsos positivos muestra dos que parecen distintos y miran lo mismo.

El detalle técnico

Muestra de 4.000 ventas con satisfacción, elegidas con semilla 42, tipificadas en importe, cantidad y satisfacción. LOF con 35 vecinos y contaminación del 1 %. DBSCAN con radio 0,8 y diez puntos mínimos. Son los valores elegidos para este ejemplo; su estabilidad no se ha medido.

Ver las dos llamadas
# LOF: compara la densidad de cada punto con la de sus vecinos
LocalOutlierFactor(n_neighbors=35, contamination=0.01).fit_predict(X)

# DBSCAN: agrupa lo denso y lo que sobra lo llama ruido
DBSCAN(eps=0.8, min_samples=10).fit(X)   # el ruido sale con etiqueta -1

Fuente: atipicos_kpi.json, campo e11_lof_dbscan.