64 votos

¿Cuál es la raíz del problema del desequilibrio de clases?

Últimamente he estado pensando mucho en el "problema del desequilibrio de clases" en el aprendizaje automático/estadístico, y cada vez tengo más la sensación de no entender lo que está pasando.

En primer lugar, permítanme definir (o intentar) mis términos:

El problema de desequilibrio de clases en el aprendizaje automático/estadístico es la observación de que algunos algoritmos de clasificación binaria(*) no funcionan bien cuando la proporción de clases 0 respecto a las clases 1 está muy sesgada.

Así, en lo anterior, por ejemplo, si hubiera cien $0$ clases para cada $1$ clase, yo diría que el desequilibrio de clase es $1$ a $100$ o $1\%$ .

La mayoría de las declaraciones del problema que he visto carecen de lo que yo consideraría una cualificación suficiente (qué modelos luchan, hasta qué punto el desequilibrio es un problema), y ésta es una fuente de mi confusión.

Un estudio de los textos estándar sobre el aprendizaje automático/estadístico no arroja muchos resultados:

  • Elementos de la inclinación estadística y Introducción al aprendizaje estadístico no contienen "desequilibrio de clases" en el índice.

  • Aprendizaje automático para el análisis predictivo de datos tampoco contiene "desequilibrio de clases" en el índice.

  • Murphy's Aprendizaje automático: Una perspectiva probabilística hace contienen "desequilibrio de clases* en el índice. La referencia es a una sección sobre SVM, donde encontré el siguiente comentario tentador:

    Vale la pena recordar que todas estas dificultades, y la plétora de heurísticas que se han propuesto para solucionarlas, surgen fundamentalmente porque las SVM no modelan la incertidumbre utilizando probabilidades, por lo que sus puntuaciones de salida no son comparables entre clases.

Este comentario coincide con mi intuición y experiencia: en mi anterior trabajo ajustábamos rutinariamente regresiones logísticas y modelos de árbol reforzados por gradiente (para minimizar la probabilidad logarítmica binomial) a datos no equilibrados (del orden de un $1\%$ desequilibrio de clases), sin problemas evidentes de rendimiento.

He leído (en algún sitio) que los modelos basados en árboles de clasificación (árboles propiamente dichos y bosques aleatorios) también sufren el problema del desequilibrio de clases. Esto enturbia un poco las aguas, los árboles, en cierto sentido, devuelven probabilidades: el registro de votos para la clase objetivo en cada nodo terminal del árbol.

Así que, para terminar, lo que realmente busco es una comprensión conceptual de las fuerzas que conducen al problema del desequilibrio de clases (si es que existe).

  • ¿Es algo que nos hacemos con algoritmos mal elegidos y umbrales de clasificación por defecto perezosos?
  • ¿Desaparece si siempre ajustamos modelos de probabilidad que optimicen los criterios de puntuación adecuados? Dicho de otro modo, ¿la causa es simplemente una mala elección de la función de pérdida, es decir, evaluar el poder predictivo de un modelo basándose en reglas de clasificación duras y en la precisión global?
  • Si es así, ¿los modelos que no optimizan las reglas de puntuación adecuadas son entonces inútiles (o al menos menos menos útiles)?

(*) Por clasificación Me refiero a cualquier modelo estadístico que se ajuste a datos de respuesta binaria. Yo soy no asumiendo que mi objetivo es una asignación dura a una u otra clase, aunque puede serlo.

35voto

Bill Vander Lugt Puntos 631

Una entrada del Enciclopedia del aprendizaje automático ( https://cling.csd.uwo.ca/papers/cost_sensitive.pdf ) explica que lo que se llama "el problema del desequilibrio de clases" se entiende mejor como tres problemas distintos:

 (1) assuming that an accuracy metric is appropriate when it is not

 (2) assuming that the test distribution matches the training 
     distribution when it does not

 (3) assuming that you have enough minority class data when you do not

Los autores lo explican:

Los conjuntos de datos con desequilibrio de clases se dan en muchas aplicaciones del mundo real en las que las distribuciones de clases de los datos están muy desequilibradas. De nuevo, sin pérdida de generalidad, asumimos que la clase minoritaria o rara es la clase positiva, y la clase mayoritaria es la clase negativa. A menudo, la clase minoritaria es muy pequeña, como el 1% del conjunto de datos. Si aplicamos la mayoría de los clasificadores tradicionales (insensibles al coste) al conjunto de datos, es probable que predigan todo como negativo (la clase mayoritaria). Esto se considera a menudo un problema en el aprendizaje de conjuntos de datos muy desequilibrados.

Sin embargo, como señala (Provost, 2000), en los clasificadores tradicionales insensibles al coste se suelen dar dos supuestos fundamentales. La primera es que el objetivo de los clasificadores es maximizar la precisión (o minimizar la tasa de error); la segunda es que la distribución de clases de los conjuntos de datos de entrenamiento y de prueba es la misma. Bajo estos dos supuestos, predecir todo como negativo para un conjunto de datos muy desequilibrado suele ser lo correcto. (Drummond y Holte, 2005) muestran que suele ser muy difícil superar a este clasificador simple en esta situación.

Por lo tanto, el problema de las clases desequilibradas sólo tiene sentido si una o las dos suposiciones anteriores no son ciertas; es decir, si el coste de los diferentes tipos de error (falsos positivos y falsos negativos en la clasificación binaria) no es el mismo, o si la distribución de clases en los datos de prueba es diferente de la de los datos de entrenamiento. El primer caso puede tratarse eficazmente utilizando métodos de metaaprendizaje sensibles al coste.

En el caso de que el coste de la clasificación errónea no sea igual, suele ser más caro clasificar erróneamente un ejemplo minoritario (positivo) en la clase mayoritaria (negativa), que un ejemplo mayoritario en la clase minoritaria (de lo contrario, es más plausible predecir todo como negativo). Es decir, FN > FP. Por lo tanto, dados los valores de FN y FP, se pueden utilizar, y se han utilizado, diversos métodos de metaaprendizaje sensibles a los costes para resolver el problema del desequilibrio de clases (Ling y Li, 1998; Japkowicz y Stephen, 2002). Si los valores de FN y FP no se desconocen explícitamente, se puede asignar que FN y FP sean proporcionales a p(-):p(+) (Japkowicz y Stephen, 2002).

En caso de que las distribuciones de clase de los conjuntos de datos de entrenamiento y de prueba sean diferentes (por ejemplo, si los datos de entrenamiento están muy desequilibrados pero los datos de prueba están más equilibrados), un enfoque obvio es muestrear los datos de entrenamiento de forma que su distribución de clase sea la misma que la de los datos de prueba (sobremuestreando la clase minoritaria y/o submuestreando la clase mayoritaria) (Provost, 2000).

Tenga en cuenta que a veces el número de ejemplos de la clase minoritaria es demasiado pequeño para que los clasificadores aprendan adecuadamente. Este es el problema de los datos de entrenamiento insuficientes (pequeños), diferente al de los conjuntos de datos desequilibrados.

Por lo tanto, como implica Murphy, no hay nada intrínsecamente problemático en el uso de clases desequilibradas, siempre que se eviten estos tres errores. Los modelos que producen probabilidades posteriores hacen más fácil evitar el error (1) que los modelos discriminantes como el SVM porque permiten separar la inferencia de la toma de decisiones. (Véase la sección 1.5.4 de Bishop Inferencia y decisión para profundizar en este último punto).

Espero que eso ayude.

9voto

que que Puntos 1435

Cualquier cosa que implique la optimización para minimizar una función de pérdida dará, si es suficientemente convexa, una solución que es un mínimo global de esa función de pérdida. Digo "suficientemente convexo" porque las redes profundas no son en general convexas, pero dan mínimos razonables en la práctica, con elecciones cuidadosas de la tasa de aprendizaje, etc.

Por lo tanto, el comportamiento de estos modelos está definido por lo que pongamos en la función de pérdida.

Imagina que tenemos un modelo, $F$ que asigna algún escalar real arbitrario a cada ejemplo, de manera que los valores más negativos tienden a indicar la clase A, y los números más positivos tienden a indicar la clase B.

$$y_f = f(\mathbf{x})$$

Utilizamos $F$ para crear el modelo $G$ que asigna un umbral, $b$ a la salida de $F$ implícita o explícitamente, de manera que cuando $F$ produce un valor mayor que $b$ entonces el modelo $G$ predice la clase B, sino predice la clase A.

$$ y_g = \begin{cases} B & \text{if } f(\mathbf{x}) > b \\ A & \text{otherwise}\\ \end{cases} $$

Al variar el umbral $b$ ese modelo $G$ aprende, podemos variar la proporción de ejemplos que se clasifican como clase A o clase B. Podemos movernos a lo largo de una curva de precisión/recuperación, para cada clase. Un umbral más alto da una menor recuperación para la clase B, pero probablemente una mayor precisión.

Imagina que el modelo $F$ es tal que si elegimos un umbral que dé igual precisión y recuerdo a cualquiera de las dos clases, entonces la precisión del modelo G es del 90%, para cualquiera de las clases (por simetría). Así, dado un ejemplo de entrenamiento $G$ acertaría el ejemplo el 90% de las veces, independientemente de cuál sea la verdad sobre el terreno, A o B. ¿Esto es, presumiblemente, a lo que queremos llegar? Llamémoslo nuestro "umbral ideal", o "modelo ideal G", o quizás $G^*$ .

Ahora, digamos que tenemos una función de pérdida que es

$$ \mathcal{L} = \frac{1}{N}\sum_{n=1}^N I_{y_i \ne g(x_i)} $$

donde $I_c$ es una variable indicadora que es $1$ cuando $c$ es verdadero, si no $0$ , $y_i$ es la verdadera clase, por ejemplo $i$ y $g(x_i)$ es la clase prevista, por ejemplo $i$ por el modelo G.

Imaginemos que tenemos un conjunto de datos que tiene 100 veces más ejemplos de entrenamiento de la clase A que de la clase B. Y entonces alimentamos los ejemplos. Por cada 99 ejemplos de A, esperamos obtener $99*0.9 = 89.1$ ejemplos correctos, y $99*0.1=9.9$ ejemplos incorrectos. Del mismo modo, por cada 1 ejemplo de B, esperamos obtener $1 * 0.9=0.9$ ejemplos correctos, y $1 * 0.1=0.1$ ejemplos incorrectos. La pérdida esperada será:

$ \mathcal{L} = (9.9 + 0.1)/100 = 0.1 $

Ahora, veamos un modelo $G$ donde el umbral se establece de tal manera que la clase A se elige sistemáticamente. Ahora, por cada 99 ejemplos de A, los 99 serán correctos. Pérdida cero. Pero cada ejemplo de B será sistemáticamente no elegido, dando una pérdida de $1/100$ por lo que la pérdida esperada sobre el conjunto de entrenamiento será:

$ \mathcal{L} = 0.01 $

Diez veces menor que la pérdida al establecer el umbral como para asignar igual recall y precisión a cada clase.

Por lo tanto, la función de pérdida impulsará el modelo $G$ para elegir un umbral que elija A con mayor probabilidad que la clase B, lo que aumenta la recuperación de la clase A, pero disminuye la de la clase B. El modelo resultante ya no se ajusta a lo que podríamos esperar, ya no se ajusta a nuestro modelo ideal $G^*$ .

Para corregir el modelo, tendríamos que, por ejemplo, modificar la función de pérdida de manera que equivocarse en B cueste mucho más que equivocarse en A. Esto modificará la función de pérdida para que tenga un mínimo más cercano al modelo ideal anterior $G^*$ que asigna la misma precisión/recuperación a cada clase.

Alternativamente, podemos modificar el conjunto de datos clonando cada ejemplo B 99 veces, lo que también hará que la función de pérdida ya no tenga un mínimo en una posición diferente de nuestro anterior umbral ideal.

5voto

cbeleites Puntos 12461

Tenga en cuenta que los clasificadores de una clase no tienen un problema de desequilibrio, ya que examinan cada clase independientemente de todas las demás y pueden hacer frente a las "no clases" simplemente no modelándolas. (Pueden tener un problema con un tamaño de muestra demasiado pequeño, por supuesto).

Muchos problemas que serían más apropiados para ser modelados por clasificadores de una clase conducen a modelos mal definidos cuando se utilizan enfoques dicriminativos, de los cuales los "problemas de desequilibrio de clases" son un síntoma.

Como ejemplo, consideremos algún producto que puede ser bueno para ser vendido o no. Esta situación suele caracterizarse por

class         | "good"                        | "not good"
--------------+-------------------------------+------------------------------------------
sample size   | large                         | small
              |                               |
feature space | single, well-delimited region | many possibilities of *something* wrong 
              |                               | (possibly well-defined sub-groups of
              |                               |    particular fault reasons/mechanisms) 
              |                               | => not a well defined region, 
              |                               | spread over large parts of feature space
              |                               |
future cases  | can be expected to end up     | may show up *anywhere* 
              | inside modeled region         | (except in good region)

Así, la clase "buena" está bien definida mientras que la clase "no buena" está mal definida. Si esta situación se modela con un clasificador discriminativo, tenemos un doble "problema de desequilibrio": la clase "no buena" no sólo tiene un tamaño de muestra pequeño, sino que además tiene una densidad de muestra aún menor (menos muestras repartidas en una parte más grande del espacio de características).

Este tipo de "problema de desequilibrio de clases" desaparecerá cuando la tarea se modele como un reconocimiento de una sola clase de la clase "buena" bien definida.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X