Entrenamiento de un árbol de decisión contra datos no balanceados


43

Soy nuevo en la minería de datos y estoy tratando de entrenar un árbol de decisión contra un conjunto de datos que está altamente desequilibrado. Sin embargo, estoy teniendo problemas con poca precisión predictiva.

Los datos consisten en estudiantes que estudian cursos, y la variable de clase es el estado del curso que tiene dos valores: Retirado o Actual.

  • Años
  • Etnicidad
  • Género
  • Curso
    ...
  • Estado del curso

En el conjunto de datos hay muchas más instancias que son actuales que retiradas. Las instancias retiradas solo representan el 2% del total de instancias.

Quiero poder construir un modelo que pueda predecir la probabilidad de que una persona se retire en el futuro. Sin embargo, cuando se prueba el modelo con los datos de entrenamiento, la precisión del modelo es terrible.

He tenido problemas similares con los árboles de decisión donde los datos están dominados por una o dos clases.

¿Qué enfoque puedo usar para resolver este problema y construir un clasificador más preciso?


44
Una cosa a considerar es cambiar los términos de penalización para diferentes tipos de clasificación incorrecta. No dice qué software está utilizando, pero creo que todo buen software de árbol debería incluir formas de hacerlo.
Peter Flom - Restablece a Monica

Respuestas:


61

Este es un problema interesante y muy frecuente en la clasificación, no solo en los árboles de decisión sino en prácticamente todos los algoritmos de clasificación.

Como descubrió empíricamente, un conjunto de entrenamiento que consta de diferentes números de representantes de cualquier clase puede dar como resultado un clasificador sesgado hacia la clase mayoritaria. Cuando se aplica a un conjunto de prueba que está igualmente desequilibrado, este clasificador produce una estimación de precisión optimista. En un caso extremo, el clasificador podría asignar cada caso de prueba a la clase mayoritaria, logrando así una precisión igual a la proporción de casos de prueba pertenecientes a la clase mayoritaria. Este es un fenómeno bien conocido en la clasificación binaria (y se extiende naturalmente a configuraciones de varias clases).

Este es un tema importante, porque un conjunto de datos desequilibrado puede conducir a estimaciones de rendimiento infladas. Esto a su vez puede llevar a conclusiones falsas sobre la importancia con la que el algoritmo ha funcionado mejor que el azar.

La literatura de aprendizaje automático sobre este tema ha desarrollado esencialmente tres estrategias de solución.

  1. Puede restablecer el equilibrio en el conjunto de entrenamiento submuestreando la clase grande o sobremuestreando la clase pequeña, para evitar que surjan sesgos en primer lugar.

  2. Alternativamente, puede modificar los costos de clasificación errónea, como se señaló en una respuesta anterior, nuevamente para evitar sesgos.

  3. Una salvaguarda adicional es reemplazar la precisión por la llamada precisión equilibrada . Se define como la media aritmética de las precisiones específicas de la clase, donde y representa la precisión obtenida en ejemplos positivos y negativos, respectivamente. Si el clasificador se desempeña igualmente bien en cualquiera de las clases, este término se reduce a la precisión convencional (es decir, el número de predicciones correctas dividido por el número total de predicciones). Por el contrario, si la precisión convencional está por encima del azar solo porque el clasificador aprovecha un conjunto de prueba desequilibrado, entonces la precisión equilibrada, según corresponda, caerá al azar (vea el esquema a continuación).π+π-ϕ:=12(π++π),π+π

Precisión versus precisión equilibrada

Recomendaría considerar al menos dos de los enfoques anteriores en conjunto. Por ejemplo, podría sobremuestrear su clase minoritaria para evitar que su clasificador adquiera un sesgo a favor de la clase mayoritaria. Después de esto, al evaluar el rendimiento de su clasificador, puede reemplazar la precisión por la precisión equilibrada. Los dos enfoques son complementarios. Cuando se aplican juntos, deberían ayudarlo a prevenir su problema original y evitar conclusiones falsas derivadas de él.

Me gustaría publicar algunas referencias adicionales a la literatura si desea hacer un seguimiento de esto.


3
Broder: gracias por la información detallada. ¡Eso ha sido realmente útil! Inicialmente intenté usar la funcionalidad de minería de datos en SQL Server, sin embargo, siguiendo su consejo, cambié a usar R. Usé el algoritmo SMOTE para reequilibrar el conjunto de datos e intenté usar ambos árboles de decisión y SVM. Los DT ofrecen una precisión equilibrada del 81%, y aún mejor con SVM. Sin embargo, una pregunta: ¿debería probar el modelo con un conjunto de datos que también contiene datos reequilibrados? ¿O debería ser probado contra datos más como el original?
chrisb

2
Esto es genial de escuchar. Con respecto a su pregunta: no desea equilibrar los datos de su prueba. Esto sesgaría su evaluación de rendimiento, ya que estaría probando algunos ejemplos dos veces (en el caso de sobremuestreo) u omitir algunos ejemplos de la prueba (en el caso de submuestreo). En resumen, desea equilibrar su conjunto de entrenamiento (por separado dentro de cada pliegue de validación cruzada), pero luego probar los datos de prueba no modificados (potencialmente desequilibrados).
Kay Brodersen

Gracias Broder Hacer eso pone una imagen diferente de las cosas. La precisión equilibrada cae a aproximadamente el 56%. La sensibilidad cae al 17% en mi mejor modelo (correspondiente a la clase que necesito para obtener mejores predicciones). Supongo que esto tiene sentido porque la clase sobremuestreada es esa clase, por lo que esos ejemplos se contarán varias veces. Intentaré aumentar el equilibrio del conjunto de datos de entrenamiento para ver si esto hace alguna diferencia.
chrisb

Después de haberlo probado con diferentes proporciones de datos equilibrados, la mejor precisión equilibrada que puedo obtener es con Ada Boost con un 60%. Sin embargo, estoy luchando para determinar qué es "bueno". Mi objetivo principal es predecir los estudiantes que pueden retirarse de su curso. Con Retiro como mi clase positiva, he estado tratando de maximizar mi número de positivos verdaderos (es decir, aumentar la sensibilidad). Reequilibrar los datos hace esto en detrimento de la cantidad de falsos negativos. El 60% no me parece mucho mejor que el azar, pero no tengo una base para lo que es "bueno" en este caso.
chrisb

2
@chrisb, este es un comentario un poco tardío (!). En una tangente, puede intentar la regresión de riesgos proporcionales de Cox ( cran.r-project.org/doc/contrib/Fox-Companion/… ) para modelar la supervivencia de sus estudiantes. Es posible que no necesite un muestreo inferior o excesivo.
Zhubarb

8

Las siguientes cuatro ideas pueden ayudarlo a abordar este problema.

  1. Seleccione una medida de rendimiento adecuada y luego ajuste los hiperparámetros de su modelo, por ejemplo, la regularización, para obtener resultados satisfactorios en el conjunto de datos de validación cruzada y, una vez satisfecho, pruebe su modelo en el conjunto de datos de prueba. Para estos fines, separe el 15% de sus datos para usarlos en la validación cruzada y el 15% para las pruebas finales. Una medida establecida en Machine Learning, defendida por Andrews Ng, es la estadística F1 definida como . Intente maximizar esta cifra en el conjunto de datos de validación cruzada y asegúrese de que el rendimiento también sea estable en el conjunto de datos de prueba.2PrecisionRecallPrecision+Recall

  2. Utilice el parámetro 'anterior' en los árboles de decisión para informar al algoritmo de la frecuencia previa de las clases en el conjunto de datos, es decir, si hay 1,000 positivos en un conjunto de conjuntos de datos 1,000,0000 prior = c(0.001, 0.999)(en R).

  3. Use el argumento de 'pesos' en la función de clasificación que usa para penalizar severamente el algoritmo por clasificaciones erróneas de los casos positivos raros

  4. Utilice el argumento de "costo" en algunos algoritmos de clasificación, por ejemplo, rparten R, para definir los costos relativos de las clasificaciones erróneas de positivos verdaderos y negativos verdaderos. Naturalmente, debe establecer un alto costo para la clasificación errónea de la clase rara.

No estoy a favor del sobremuestreo, ya que introduce observaciones dependientes en el conjunto de datos y esto viola los supuestos de independencia realizados tanto en Estadística como en Aprendizaje automático.


2

Di una respuesta en un tema reciente :

Lo que hacemos es elegir una muestra con diferentes proporciones. En el ejemplo mencionado anteriormente, eso sería 1000 casos de "SÍ" y, por ejemplo, 9000 casos de "NO". Este enfoque da modelos más estables. Sin embargo, debe probarse en una muestra real (que con 1,000,000 de filas).

No solo ofrece un enfoque más estable, sino que los modelos son generalmente mejores, en lo que respecta a las medidas de elevación.

Puede buscarlo como "sobremuestreo en estadísticas", el primer resultado es bastante bueno: http://www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

Agregando a la respuesta de @Kay la primera estrategia de solución: el sobremuestreo de minorías sintéticas ( SMOTE ) generalmente funciona mejor que el muestreo bajo o excesivo de mi experiencia, ya que creo que crea un compromiso entre ambos. Crea muestras sintéticas de la clase minoritaria utilizando los puntos de datos trazados en el espacio predictivo multivariado y toma más o menos puntos medios entre puntos adyacentes en ese espacio para crear nuevos puntos sintéticos y, por lo tanto, equilibra ambos tamaños de clase. (no estoy seguro de los puntos medios, detalles del algoritmo aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.