Para un problema de clasificación si la variable de clase tiene una distribución desigual, ¿qué técnica debemos usar?

9

por ej. si tengo una calificación crediticia variable de clase con dos clases buenas y malas, donde # (bueno) = 700 y # (malo) = 300. No quiero acortar mis datos. ¿Qué técnica debo usar? Estaba usando SVM pero está dando todo lo malo como bueno en las predicciones.

asad.taj
fuente
Esta asimetría no se ve tan mal; ¿estás seguro de que no tienes un error en otro lugar? ¿También puedes dar más detalles sobre los datos? No hay una solución general para esto.
mi conjunto de datos tiene 17 predictores (3 continuos y 14 categóricos), obviamente 1 variable de clase, y un total de 1000 observaciones. La frecuencia dist. para la clase var. con train y test es train (bad) = 197, test (bad) = 103, trian (good) = 446, test (good) = 254
asad.taj

Respuestas:

6

Los tamaños de muestra de su clase no parecen tan desequilibrados, ya que tiene un 30% de observaciones en su clase minoritaria. La regresión logística debería funcionar bien en su caso. Dependiendo del número de predictores que ingresen a su modelo, puede considerar algún tipo de penalización para la estimación de parámetros, como la cresta (L2) o el lazo (L1). Para una visión general de los problemas con una clase muy desequilibrada, ver Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

No estoy familiarizado con las técnicas de calificación crediticia, pero encontré algunos documentos que sugieren que podría usar SVM con clases ponderadas, por ejemplo, Máquinas de vectores de soporte para calificación crediticia: extensión a casos no estándar . Como alternativa, puede buscar métodos de refuerzo con CART o bosques aleatorios (en este último caso, es posible adaptar la estrategia de muestreo para que cada clase esté representada al construir los árboles de clasificación). El documento de Novak y LaDue discute los pros y los contras de GLM vs particionamiento recursivo . También encontré este artículo, Construcción de cuadros de mando con tamaños de clase desequilibrados por Hand y Vinciotti.

chl
fuente
El enlace para Cramer (1999) ha cambiado a papers.tinbergen.nl/98085.pdf
germcd
10

Un enfoque popular para resolver problemas de desequilibrio de clases es sesgar el clasificador para que preste más atención a las instancias positivas. Esto se puede hacer, por ejemplo, aumentando la penalización asociada con la clasificación errónea de la clase positiva en relación con la clase negativa. Otro enfoque es preprocesar los datos sobremuestreando la clase mayoritaria o submuestreando la clase minoritaria para crear un conjunto de datos equilibrado.

Sin embargo, en su caso, el desequilibrio de clase no parece ser un problema. Quizás es una cuestión de ajuste de parámetros, ya que encontrar los parámetros óptimos para un clasificador SVM puede ser un proceso bastante tedioso. Hay dos parámetros para, por ejemplo, en un núcleo RBF: y . No se sabe de antemano qué y son mejores para un problema dado; en consecuencia, se debe hacer algún tipo de selección de modelo (búsqueda de parámetros).γ C γCγCγ

En la fase de preprocesamiento de datos, recuerde que SVM requiere que cada instancia de datos se represente como un vector de números reales. Por lo tanto, si hay atributos categóricos, se recomienda convertirlos en datos numéricos, usando m números para representar un atributo de categoría m (o reemplazarlo con m nuevas variables binarias).

Además, escalar las variables antes de aplicar SVM es crucial para evitar que los atributos en rangos numéricos mayores dominen a aquellos en rangos numéricos más pequeños.

Mira este artículo .

Si está trabajando en R, consulte la función de ajuste (paquete e1071) para ajustar los hiperparámetros mediante una búsqueda de cuadrícula en los rangos de parámetros proporcionados. Luego, usando plot.tune , puede ver visualmente qué conjunto de valores da la tasa de error más pequeña.

Hay un atajo alrededor de la búsqueda de parámetros que consume mucho tiempo. Hay un paquete R llamado "svmpath" que calcula toda la ruta de regularización para un clasificador SVM de 2 clases de una vez. Aquí hay un enlace al documento que describe lo que está haciendo.

PD: También puede encontrar este documento interesante: cómo obtener estimaciones de probabilidad calibradas

George Dontas
fuente
2
+1; Todavía ksvm de kernlab parece ser la implementación preferida de R SVM. Por ejemplo, escala las variables por sí mismo y tiene un buen procedimiento heurístico (= funciona muy bien) para elegir good para RBF. γ
1

Aconsejaría usar un valor diferente del parámetro de regularización C para ejemplos de la clase positiva y ejemplos de la clase negativa (muchos paquetes SVM lo admiten y, en cualquier caso, se implementa fácilmente). Luego use, por ejemplo, validación cruzada para encontrar buenos valores de los dos parámetros de regularización.

Se puede demostrar que esto es asypmtotically equivalente volver a muestrear los datos en una relación determinada por C + y C- (por lo que no hay ventaja en volver a muestrear en lugar de volver a ponderar, al final llegan a lo mismo puede ser continuo, en lugar de discreto, por lo que proporciona un control más preciso).

Sin embargo, no elija simplemente C + y C- para dar una ponderación de 50-50 a los patrones positivos y negativos, ya que la intensidad del efecto del problema de las "clases de desequilibrios" variará de un conjunto de datos a otro, por lo que la fuerza del óptimo re -la ponderación no puede determinarse a priori.

Recuerde también que los costos falsos positivos y falsos negativos pueden ser diferentes, y el problema puede resolverse solo si se incluyen en la determinación de C + y C-.

También vale la pena tener en cuenta que, para algunos problemas, la regla de decisión óptima de Bayes asignará todos los patrones a una sola clase e ignorará a la otra, por lo que no es necesariamente algo malo, solo puede significar que la densidad de los patrones de una clase está en todas partes debajo de la densidad de patrones de la otra clase.

Dikran Marsupial
fuente