machine-learning – Alta recuperación: baja precisión para conjuntos de datos no balanceados

Pregunta:

Actualmente tengo algunos problemas al analizar un conjunto de datos de tweets con máquinas de vectores de soporte. El problema es que tengo un conjunto de entrenamiento de clases binarias no balanceado (5: 2); que se espera que sea proporcional a la distribución de clases real. Al predecir, obtengo una precisión baja (0,47) para la clase minoritaria en el conjunto de validación; el recuerdo es 0,88. Intenté usar varios métodos de sobremuestreo y submuestreo (realizados en el conjunto de entrenamiento) que no mejoraron la precisión ya que el conjunto de validación también está desequilibrado para reflejar la distribución de clases real. También implementé diferentes costos en la máquina de vectores de soporte, lo que ayudó. Ahora parece que ya no puedo mejorar mi rendimiento.

¿Alguno de ustedes tiene algún consejo sobre lo que podría hacer para mejorar mi precisión sin dañar mi memoria? Además, ¿alguien tiene idea de por qué obtengo muchos más falsos positivos que falsos negativos (lo positivo es la clase minoritaria)?

Respuesta:

¿Alguien tiene idea de por qué estoy obteniendo muchos más falsos positivos que falsos negativos (lo positivo es la clase minoritaria)? ¡Gracias de antemano por tu ayuda!

Porque positivo es la clase minoritaria. Hay muchos ejemplos negativos que podrían convertirse en falsos positivos. Por el contrario, hay menos ejemplos positivos que podrían convertirse en falsos negativos.

Recuerde que Recall = Sensibilidad $ = \ dfrac {TP} {(TP + FN)} $

La sensibilidad (tasa de verdaderos positivos) está relacionada con la tasa de falsos positivos (especificidad 1) tal como se visualiza mediante una curva ROC. En un extremo, usted considera que cada ejemplo es positivo y tiene una sensibilidad del 100% con un FPR del 100%. En otro, no considera que ningún ejemplo sea positivo y tiene una sensibilidad del 0% con un FPR del 0%. Cuando la clase positiva es la minoría, incluso un FPR relativamente pequeño (que puede tener porque tiene un recuerdo alto = sensibilidad = TPR) terminará provocando una gran cantidad de FP (porque hay tantos ejemplos negativos).

Ya que

Precisión $ = \ dfrac {TP} {(TP + FP)} $

Incluso con un FPR relativamente bajo, el FP abrumará al TP si el número de ejemplos negativos es mucho mayor.

Alternativamente,

Clasificador positivo: $ C ^ + $

Ejemplo positivo: $ O ^ + $

Precisión = $ P (O ^ + | C ^ +) = \ dfrac {P (C ^ + | O ^ +) P (O ^ +)} {P (C ^ +)} $

P (O +) es bajo cuando la clase positiva es pequeña.

¿Alguno de ustedes tiene algún consejo sobre lo que podría hacer para mejorar mi precisión sin dañar mi memoria?

Como lo mencionó @rinspy, GBC funciona bien en mi experiencia. Sin embargo, será más lento que SVC con un kernel lineal, pero puede hacer árboles muy poco profundos para acelerarlo. Además, más características o más observaciones podrían ayudar (por ejemplo, puede haber alguna característica actualmente no analizada que siempre se establece en algún valor en todo su FP actual).

También podría valer la pena trazar curvas ROC y curvas de calibración. Podría darse el caso de que, aunque el clasificador tenga poca precisión, podría dar lugar a una estimación de probabilidad muy útil. Por ejemplo, el simple hecho de saber que un disco duro puede tener una probabilidad de fallar 500 veces mayor, aunque la probabilidad absoluta sea bastante pequeña, podría ser información importante.

Además, una precisión baja significa esencialmente que el clasificador devuelve muchos falsos positivos. Sin embargo, esto podría no ser tan malo si un falso positivo es barato.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım