6 votos

¿Cómo entrenar un clasificador para distribuciones de clase desequilibradas?

He intentado utilizar una red neuronal ReLU para clasificar conjuntos de datos de 3 clases que no están equilibrados (tanto en el conjunto de entrenamiento como en el de prueba), es decir, el 30% de las muestras están en la clase A, el 10% en la clase B y el 60% en la clase C. Y, en concreto para este problema, estoy interesado sobre todo en la precisión de la clase C (con recalls razonables), ya que es la única clase de la que puedo hacer uso. Actualmente clono artificialmente y añado ajustes aleatorios de +/-5% a las muestras de las clases A y B para que cada clase tenga aproximadamente 1/3 de muestras en el conjunto de entrenamiento. Y luego elijo la época ganadora basándome en la puntuación F1 para la clase C.

NEW BEST: epoch 1, score: 0.572852844535, F1: 0.58989
5, precision 0.516919, recall 0.686862, accuracy 0.643098 (0.572852844535), learning_rate=1.0 (patience: 320000 / 1599)
F1: 0.589895, precision 0.516919, recall 0.686862, accuracy 0.643098
precisions: [ 0.19046712  0.48642075  0.61648193]
recalls: [ 0.17856346  0.10650572  0.82099259]
class[0] is predicted as class[0]: 40
class[0] is predicted as class[1]: 4
class[0] is predicted as class[2]: 180
class[1] is predicted as class[0]: 54
class[1] is predicted as class[1]: 36
class[1] is predicted as class[2]: 248
class[2] is predicted as class[0]: 116
class[2] is predicted as class[1]: 34
class[2] is predicted as class[2]: 688

NEW BEST epoch 14, score: 0.708267443522, F1: 0.5302
56, precision 0.612621, recall 0.467413, accuracy 0.556719 (0.708267443522), learning_rate=0.974310040474 (patience: 343195 / 22399)
F1: 0.530256, precision 0.612621, recall 0.467413, accuracy 0.556719
precisions: [ 0.22606464  0.33912306  0.82626222]
recalls: [ 0.49551359  0.46152481  0.44271548]
class[0] is predicted as class[0]: 111
class[0] is predicted as class[1]: 89
class[0] is predicted as class[2]: 24
class[1] is predicted as class[0]: 128
class[1] is predicted as class[1]: 156
class[1] is predicted as class[2]: 54
class[2] is predicted as class[0]: 252
class[2] is predicted as class[1]: 215
class[2] is predicted as class[2]: 371

Como se ve arriba, en la época 1, la precisión parece mucho mejor porque la red acaba de clasificar todas las muestras de prueba en la clase C; en la época 14, la precisión parece peor, pero en realidad es mejor porque la red también puede clasificar otras clases.

¿Cómo puedo entrenar o probar este conjunto de datos desequilibrado? ¿Debo equilibrar artificialmente el conjunto de prueba además del conjunto de entrenamiento?

3voto

Dominique Paul Puntos 121

Jain y Nag sugieren un conjunto de datos de entrenamiento equilibrado y un conjunto de datos de prueba representativo para la evaluación.

El conjunto de entrenamiento equilibrado permite al modelo familiarizarse con estados de interés menos frecuentes y le ayuda a formular reglas generales.

Sin embargo, como señala @rep_ho, deberías utilizar un conjunto de pruebas que represente a la población de tus datos. De lo contrario, los resultados estarían sesgados.

Sin embargo, hay que tener en cuenta que basarse en la precisión como medida de rendimiento en un conjunto de datos muy desequilibrado puede ser una métrica engañosa. Si tiene un conjunto de datos con dos grupos divididos en 90/10, el modelo podría simplemente "adivinar" la primera categoría todo el tiempo y, sin embargo, lograr una precisión del 90%.

1voto

Johnny Cat Puntos 21

En el caso de una muestra desequilibrada, puede utilizar el sobremuestreo para los que están infrarrepresentados o el submuestreo para los que tienen más representaciones.

  • Pero el sobremuestreo y el submuestreo sólo deben realizarse si cree que su muestra no representa a la población real

  • Ahora se plantea la pregunta de cómo saber si mi muestra es una representación correcta de la población. Depende de dos factores

  • 1) Hay que consultar a un experto en la materia o

  • 2) Los resultados de su prueba dicen que : Por ejemplo, la PA sistólica y diastólica de la población se encontraría sin duda dentro de los intervalos confinados, pero su muestra podría tener un conjunto de datos que tienen las personas con PA alta solamente.

Puede consultar www.analyticsvidhya.com para aprender a realizar sobremuestreos y submuestreos en R.

0voto

Thieme Hennis Puntos 31

Definitivamente, no debe equilibrar su conjunto de pruebas. El conjunto de pruebas debe ser una evaluación independiente de su modelo.

Es posible que deba utilizar puntuaciones diferentes a la precisión. Por ejemplo, precisión equilibrada (media de especificidad y sensibilidad), kappa, puntuación F. Estas medidas dependen de su decisión, posiblemente arbitraria, de dónde colocar el punto de corte. Podría utilizar el área bajo la curva ROC o el área bajo la curva de precisión/recuperación, que podría interesarle, ya que lo que le interesa es la precisión con una recuperación razonable.

Otra cosa que puedes hacer es mover el punto de corte. Así, no predecirá la clase A si su red confía en A para > 0,333, sino para > 0,1, por ejemplo. Otra cosa que puede hacer es utilizar puntos de datos sintéticos, como ya ha hecho. Existen los algoritmos SMOTE y ROSE, que podrían funcionar mejor que tu imputación ingenua de ruido. También puede poner más peso, en su formación a su clase minoritaria.

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