Empaquetamiento con sobremuestreo para modelos predictivos de eventos raros

13

¿Alguien sabe si se ha descrito lo siguiente y (de cualquier manera) si parece un método plausible para aprender un modelo predictivo con una variable objetivo muy desequilibrada?

A menudo, en aplicaciones CRM de minería de datos, buscaremos un modelo en el que el evento positivo (éxito) sea muy raro en relación con la mayoría (clase negativa). Por ejemplo, puedo tener 500,000 instancias donde solo 0.1% son de la clase de interés positiva (por ejemplo, el cliente compró). Entonces, para crear un modelo predictivo, un método es muestrear los datos mediante los cuales se mantienen todas las instancias de clase positiva y solo una muestra de las instancias de clase negativa para que la relación de clase positiva a negativa sea más cercana a 1 (tal vez 25% a 75% positivo a negativo). Sobremuestreo, submuestreo, SMOTE, etc.son todos los métodos en la literatura.

Lo que me interesa es combinar la estrategia de muestreo básica anterior pero con el embolsado de la clase negativa. Algo así como:

  • Mantenga todas las instancias de clase positivas (por ejemplo, 1,000)
  • Muestree las instancias de clase negativas para crear una muestra equilibrada (por ejemplo, 1,000).
  • Ajustar el modelo
  • Repetir

¿Alguien ha oído hablar de hacer esto antes? El problema que parece sin embolsar es que muestrear solo 1,000 instancias de la clase negativa cuando hay 500,000 es que el espacio del predictor será escaso y es posible que no tenga una representación de posibles valores / patrones de predictores. El embolsado parece ayudar a esto.

Miré a rpart y nada "se rompe" cuando una de las muestras no tiene todos los valores para un predictor (no se rompe cuando se predicen instancias con esos valores de predictor:

library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))

¿Alguna idea?

ACTUALIZACIÓN: tomé un conjunto de datos del mundo real (datos de respuesta de correo directo de marketing) y lo dividí aleatoriamente en capacitación y validación. Hay 618 predictores y 1 objetivo binario (muy raro).

Training:
Total Cases: 167,923
Cases with Y=1: 521

Validation:
Total Cases: 141,755
Cases with Y=1: 410

Tomé todos los ejemplos positivos (521) del conjunto de entrenamiento y una muestra aleatoria de ejemplos negativos del mismo tamaño para una muestra equilibrada. Encajo en un árbol rpart:

models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")

Repetí este proceso 100 veces. Luego predijo la probabilidad de Y = 1 en los casos de la muestra de validación para cada uno de estos 100 modelos. Simplemente promedié las 100 probabilidades para una estimación final. Decilé las probabilidades en el conjunto de validación y en cada decil calculé el porcentaje de casos donde Y = 1 (el método tradicional para estimar la capacidad de clasificación del modelo).

Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10)) 

Aquí está el rendimiento: ingrese la descripción de la imagen aquí

Para ver cómo esto se compara con la ausencia de embolsado, predije la muestra de validación solo con la primera muestra (todos los casos positivos y una muestra aleatoria del mismo tamaño). Claramente, los datos muestreados eran demasiado escasos o demasiado ajustados para ser efectivos en la muestra de validación de retención.

Sugiriendo la eficacia de la rutina de ensacado cuando hay un evento raro y grandes n y p.

ingrese la descripción de la imagen aquí

B_Miner
fuente

Respuestas:

7

Excepto por la inclusión de los mismos ejemplos de clase positiva en cada bolsa, esto es S ^ 3Bagging como se describe en S ^ 3Bagging: Método de inducción del clasificador rápido con submuestreo y embolsado . (No he revisado este documento en profundidad, solo lo hojeé).

No veo nada teóricamente incorrecto en su enfoque, aunque he visto con mucha más frecuencia submuestreo combinado con impulso que embolsado.

Puede que esto no responda exactamente a su pregunta, pero un excelente artículo sobre diferentes formas de tratar con datos desequilibrados es Aprender de datos desequilibrados . Parece que el aprendizaje sensible al costo puede ser más apropiado en su caso. Dado que está utilizando los bosques de decisión, la Sección 3.2.3 Árboles de decisión sensibles al costo probablemente sería útil. Afirma,

Con respecto a los árboles de decisión, el ajuste sensible al costo puede tomar tres formas: primero, los ajustes sensibles al costo pueden aplicarse al umbral de decisión; segundo, se pueden dar consideraciones sensibles al costo a los criterios divididos en cada nodo; y, por último, los esquemas de poda sensibles al costo se pueden aplicar al árbol

Los ajustes sensibles al costo en el umbral de decisión básicamente significa elegir su umbral de decisión en función del rendimiento ROC o la curva de recuperación de precisión. El rendimiento de la RPC en particular es robusto a los datos desequilibrados.

Los criterios de división sensibles al costo se reducen a cambiar su función de impureza para tratar con datos desequilibrados. El documento mencionado anteriormente dice:

En [63], se demostró que tres funciones específicas de impurezas, Gini, Entropía y DKM, mejoraron la insensibilidad de costos en comparación con la línea base de precisión / tasa de error. Además, estos experimentos empíricos también mostraron que el uso de la función DKM generalmente producía árboles de decisión más pequeños sin podar que, en el peor de los casos, proporcionaban una precisión comparable a Gini y Entropía. Una base teórica detallada que explica las conclusiones de estos resultados empíricos se estableció más tarde en [49], que generaliza los efectos del crecimiento del árbol de decisión para cualquier elección de criterios de saliva.

En cuanto a la poda,

Sin embargo, en presencia de datos desequilibrados, los procedimientos de poda tienden a eliminar las hojas que describen el concepto de minoría. Se ha demostrado que aunque podar árboles inducidos por datos desequilibrados puede dificultar el rendimiento, el uso de árboles no podados en tales casos no mejora el rendimiento [23]. Como resultado, se ha prestado atención a mejorar la estimación de probabilidad de clase en cada nodo para desarrollar estructuras de árbol de decisión más representativas de modo que la poda se pueda aplicar con efectos positivos. Algunos trabajos representativos incluyen el método de suavizado de Laplace de la estimación de probabilidad y la técnica de poda de Laplace [49].

[23] N. Japkowicz y S. Stephen, "El problema del desequilibrio de clase: un estudio sistemático", Análisis inteligente de datos, vol. 6, no. 5, págs. 429-449, 2002.

[49] C. Elkan, "Los fundamentos del aprendizaje sensible al costo", Proc. Conf. Conjunta internacional Inteligencia artificial, pp. 973-978, 2001.

[63] C. Drummond y RC Holte, "Explotación de la sensibilidad del costo (in) de los criterios de división del árbol de decisión", Proc. Conf. Internacional Machine Learning, pp. 239-246, 2000.

oscully
fuente
0

Esto es muy interesante. Recientemente tuve un proyecto que tiene una situación similar en la que la validación de eventos raros funciona bien, mientras que la validación de no eventos en el rango más bajo previsto (como 0.0 - 0.1) se realizó de manera inestable mes tras mes. Las razones detrás, como mencionó, debido a la gran población de no eventos, es mejor incluir más muestras en los conjuntos de entrenamiento para que haya suficientes muestras para cubrir varias combinaciones de variables.

Pequeño sol
fuente