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:
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:
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...
fuente
Respuestas:
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á
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:
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 ...
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.
fuente
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
fuente