Un número creciente de características da como resultado una caída de precisión, pero un aumento de prec / recuperación

15

Soy nuevo en Machine Learning. En este momento estoy usando un clasificador Naive Bayes (NB) para clasificar textos pequeños en 3 clases como positivos, negativos o neutros, usando NLTK y python.

Después de realizar algunas pruebas, con un conjunto de datos compuesto por 300,000 instancias (16,924 positivas 7,477 negativas y 275,599 neutrales) descubrí que cuando aumento el número de características, la precisión disminuye pero la precisión / recuperación de las clases positivas y negativas aumenta. ¿Es este un comportamiento normal para un clasificador NB? ¿Podemos decir que sería mejor usar más funciones?

Algunos datos:

Features: 50    
Accuracy: 0.88199
F_Measure Class Neutral 0.938299
F_Measure Class Positive 0.195742
F_Measure Class Negative 0.065596

Features: 500   
Accuracy: 0.822573
F_Measure Class Neutral 0.904684
F_Measure Class Positive 0.223353
F_Measure Class Negative 0.134942

Gracias por adelantado...

Editar 26/11/2011

He probado 3 estrategias de selección de características diferentes (MAXFREQ, FREQENT, MAXINFOGAIN) con el clasificador Naive Bayes. Primero, aquí están las medidas de precisión y F1 por clase:

ingrese la descripción de la imagen aquí

Luego, he trazado el error del tren y el error de prueba con un conjunto de entrenamiento incremental, cuando uso MAXINFOGAIN con las 100 características principales y las 1000 principales:

ingrese la descripción de la imagen aquí

Entonces, me parece que, aunque la mayor precisión se logra con FREQENT, el mejor clasificador es el que usa MAXINFOGAIN, ¿es así ? Cuando usamos las 100 funciones principales tenemos sesgo (el error de prueba está cerca del error de entrenamiento) y agregar más ejemplos de entrenamiento no ayudará. Para mejorar esto, necesitaremos más funciones. Con 1000 funciones, el sesgo se reduce pero el error aumenta ... ¿Está bien? ¿Debería necesitar agregar más funciones? Realmente no sé cómo interpretar esto ...

Gracias de nuevo...

kanzen_master
fuente
1
Depende de lo que quiera decir con "mejor clasificador", si su tarea es construir un clasificador con buena precisión en general, elegiría FREQENT. Por otro lado, si, como en la mayoría de las tareas de clasificación de clases raras, desea clasificar mejor la clase rara (que podría ser la clase "negativa" o "positiva") elegiría MAXINFOGAIN. Creo que su interpretación de las curvas de aprendizaje es correcta: con 100 características tiene sesgo y puede agregarlas, con 1000 tiene variación y puede eliminarlas. Tal vez pueda probar una compensación entre 100 y 1000 características para obtener mejores resultados.
Simone
¡Gracias por tu ayuda, Simone! Entendí todo menos la última parte ... ¿Podría decirme cómo ve la gran variación con las 1000 características? Dado que la diferencia entre los errores de prueba y de tren no parece ser demasiado, todavía me parece sesgo ...
kanzen_master
Puse algunos ejemplos en mi respuesta. Cuando las curvas no están tan cerca, el problema se clasifica como con alta varianza . En su caso, tal vez le dije que debido a que con menos funciones, obtiene mejores rendimientos, por lo que con 1000 características es probable que sea un problema de alta variación. En lugar de trazar los resultados de los algoritmos de selección de características con medidas calculadas en el conjunto de entrenamiento, intente dividir sus datos en el entrenamiento (2/3 de ellos) y la validación, luego realice la selección de características en el conjunto de entrenamiento y evalúelo en el conjunto de prueba . Debería encontrar un máximo en el medio de la trama.
Simone
Gracias por la respuesta El tercer ejemplo de su publicación actualizada (buen resultado, entrenamiento, curvas de error de prueba no están ni muy cerca ni muy lejos) se parece a la curva de aprendizaje que tracé usando 1000 características, por lo que pensé que usar alrededor de 1000 características sería un "buen resultado". Sin embargo, en este caso el error es mayor, lo que no es bueno. Pero, solo mirando la distancia entre las curvas, no puedo ver una gran variación con 1000 características ... (Por cierto, ya estoy dividiendo los datos en 2/3 como conjunto de entrenamiento, 1/3 como conjunto de prueba, realizando la función selección en el conjunto de entrenamiento y evaluación en el conjunto de prueba ...)
kanzen_master
1
OKAY. Soy bastante nuevo en el aprendizaje de curvas y sus ejemplos fueron realmente interesantes y me hicieron obtener información sobre ellos. Por lo tanto, gracias D T. Sí, puede haber sesgo en ambos casos. Según yo, tienes un conjunto de datos muy sesgado y, en lugar de probar la precisión, es importante echar un vistazo a la medida F. Echando un vistazo a sus tramas, parece que cuantas más características tenga, mejor será; de hecho, la medida F mejora. Escuché que en la clasificación de texto, si sus características son la frecuencia de palabras en su texto, es común usar muchas características; Por cierto, no estoy acostumbrado y no puedo decirte más.
Simone

Respuestas:

18

Precisión vs medida F

En primer lugar, cuando usas una métrica debes saber cómo jugarla. La precisión mide la proporción de instancias clasificadas correctamente en todas las clases. Eso significa que si una clase ocurre con más frecuencia que otra, entonces la precisión resultante está claramente dominada por la precisión de la clase dominante. En su caso, si uno construye un Modelo M que solo predice "neutral" para cada instancia, la precisión resultante será

unCC=nortemitutrunl(nortemitutrunl+pagosyotyovmi+nortemisoluntyovmi)=0.9188

Bien, pero inútil.

Por lo tanto, la adición de características mejoró claramente el poder de NB para diferenciar las clases, pero al predecir "positivo" y "negativo" uno clasifica erróneamente los neutrales y, por lo tanto, la precisión disminuye (en términos generales). Este comportamiento es independiente de NB.

¿Más o menos características?

En general, no es mejor usar más funciones, sino usar las funciones correctas. Más características es mejor en la medida en que un algoritmo de selección de características tiene más opciones para encontrar el subconjunto óptimo (sugiero explorar: selección de características de validación cruzada ). Cuando se trata de NB, un enfoque rápido y sólido (pero menos que óptimo) es usar InformationGain (Ratio) para ordenar las características en orden decreciente y seleccionar la k superior.

De nuevo, este consejo (excepto InformationGain) es independiente del algoritmo de clasificación.

EDITAR 27.11.11

Ha habido mucha confusión con respecto al sesgo y la varianza para seleccionar la cantidad correcta de características. Por lo tanto, recomiendo leer las primeras páginas de este tutorial: Bias-Variance tradeoff . La esencia clave es:

  • Alto sesgo significa que el modelo es menos que óptimo, es decir, el error de prueba es alto (falta de ajuste, como dice Simone)
  • Alta variación significa que el modelo es muy sensible a la muestra utilizada para construir el modelo . Eso significa que el error depende en gran medida del conjunto de entrenamiento utilizado y, por lo tanto, la varianza del error (evaluada en diferentes pliegues de validación cruzada) será extremadamente diferente. (sobreajuste)

Las curvas de aprendizaje trazadas sí indican el sesgo, ya que se traza el error. Sin embargo, lo que no puede ver es la varianza, ya que el intervalo de confianza del error no se traza en absoluto.

Ejemplo: Al realizar una validación cruzada de 3 veces 6 veces (sí, se recomienda la repetición con diferentes particiones de datos, Kohavi sugiere 6 repeticiones), obtendrá 18 valores. Ahora esperaría que ...

  • Con un pequeño número de características, el error promedio (sesgo) será menor, sin embargo, la varianza del error (de los 18 valores) será mayor.
  • con una gran cantidad de características, el error promedio (sesgo) será mayor, pero la varianza del error (de los 18 valores) menor.

Este comportamiento del error / sesgo es exactamente lo que vemos en sus tramas. No podemos hacer una declaración sobre la varianza. El hecho de que las curvas estén cercanas entre sí puede ser una indicación de que el conjunto de prueba es lo suficientemente grande como para mostrar las mismas características que el conjunto de entrenamiento y, por lo tanto, que el error medido puede ser confiable, pero esto es (al menos hasta donde yo entendí it) no es suficiente para hacer una declaración sobre la varianza (del error!).

Al agregar más y más ejemplos de capacitación (manteniendo fijo el tamaño del conjunto de pruebas), esperaría que la variación de ambos enfoques (número pequeño y alto de características) disminuya.

¡Ah, y no olvide calcular la ganancia de información para la selección de funciones utilizando solo los datos de la muestra de entrenamiento! Uno está tentado a usar los datos completos para la selección de características y luego realizar la partición de datos y aplicar la validación cruzada, pero esto conducirá a un sobreajuste. No sé lo que hiciste, esto es solo una advertencia que uno nunca debe olvidar.

steffen
fuente
1
Muchas gracias por su respuesta, explicación muy clara. Estoy usando la máxima ganancia de información como mi estrategia de selección de funciones, y las pruebas con validación cruzada 5 veces. Supongo que para saber qué características principales de k debo tomar, necesito probar iterativamente el algoritmo aumentando el número de características cada vez y tomando el k que da el puntaje f_score más alto. Sin embargo, supongo que es probable que "top k" cambie según el conjunto de datos ... ¿verdad?
kanzen_master
1
Correcto. Pero si el nuevo conjunto de datos es similar al anterior (las mismas características con las mismas distribuciones) k sigue siendo el mismo. Puede agregar un algoritmo genético para buscar el espacio de posibles soluciones más rápido o (incluso mejor) usar un algoritmo genético para encontrar el subconjunto de características óptimo independiente de InformationGain ... hay muchas maneras de hacerlo.
steffen
1
Según las conferencias de Stanford, si ve curvas de entrenamiento y prueba bien separadas que varían el número de ejemplos de entrenamiento, en realidad significa que hay una variación. Por supuesto, un mejor enfoque sería estimar los intervalos de confianza.
Simone
1
@DT 1. No conozco la conferencia, por lo tanto, no puedo conectar la explicación de Andrewg con la mía, lo siento. 2. No. Pequeño número de características => sobreajuste => bajo sesgo, alta varianza. Alto número de características => underfitting => alto sesgo, baja varianza. Realmente sugiero trazar la varianza del error de los pliegues cv para diferentes números de características y ejemplos de entrenamiento.
steffen
2
1. steffen, la conferencia está disponible aquí: ml-class.org/course/video/preview_list (Parte X, Sección "Curvas de aprendizaje") 2. Ya veo. Estaba pensando que cuando muchas características aprendidas durante el entrenamiento => el modelo se vuelve complejo y se adapta al conjunto de entrenamiento => Varianza ...
kanzen_master
5

Para saber si es útil usar más características, trazaría curvas de aprendizaje. Creo que esto se explica claramente en la décima unidad de la clase de aprendizaje automático de Stanford, llamada "Asesoramiento para aplicar el aprendizaje automático", que puede encontrar aquí: http://www.ml-class.org/course/video/preview_list .

Al trazar curvas de aprendizaje puede comprender si su problema es el sesgo alto o la varianza alta. Siempre que aumente el número de ejemplos de entrenamiento, debe trazar el error de entrenamiento y el error de prueba (es decir, 1 precisión), este último es el error de su clasificador estimado en un conjunto de datos diferente. Si estas curvas están cercanas entre sí, tiene un problema de alto sesgo y probablemente sería beneficioso insertar más características. Por otro lado, si sus curvas están bastante separadas siempre que aumente el número de ejemplos de entrenamiento, tiene un problema de alta varianza. En este caso, debe disminuir la cantidad de funciones que está utilizando.

Editar

λ

λ

Alta varianza

λ

Alto sesgo

λ=1

Buen resultado

Simone
fuente
¡Excelente! ¡Muchas gracias! Como ambas respuestas fueron realmente útiles, pero no puedo marcarlas como respuestas, marcaré la primera como respuesta. Pero esta es definitivamente la mejor manera de verificar, creo.
kanzen_master
Por cierto, estoy tratando de trazar la curva de aprendizaje de un clasificador que usa las 100 funciones principales con el puntaje de ganancia de información máxima. Al aumentar el tamaño del conjunto de datos de entrenamiento, quiero trazar el error de entrenamiento y el error de prueba. ¿Cuáles deberían ser los tamaños para el conjunto de datos de tren inicial (para aumentar gradualmente) y para el conjunto de datos de prueba (estático para todas las pruebas)? Gracias de nuevo ...
kanzen_master
2
Divida su conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. Comience con muy pocos registros de capacitación y luego continúe agregando registros. Para cada iteración, calcule el error del conjunto de entrenamiento con los registros que ha utilizado para entrenar su clasificador y luego calcule el error del conjunto de prueba siempre con todos los registros de prueba. Sé que este es un método estándar utilizado en la práctica común. ¡Sería interesante ver sus resultados! Saludos, Simone.
Simone
1
Simone, he actualizado la primera publicación con algunos resultados de precisión, medidas f1 y curvas de aprendizaje, y mi interpretación en la parte inferior, ¿podría verificarlo? Gracias ...
kanzen_master