Précision vs mesure F
Tout d'abord, lorsque vous utilisez une métrique, vous devez savoir comment la jouer. La précision mesure le ratio d'instances correctement classées dans toutes les classes. Cela signifie que si une classe se produit plus souvent qu'une autre, la précision résultante est clairement dominée par la précision de la classe dominante. Dans votre cas, si l'on construit un modèle M qui prédit simplement "neutre" pour chaque instance, la précision résultante sera
a c c = n e u t r a l( n e u t r a l + p o s i t i v e + n e ga t i v e )= 0,9188
Bon, mais inutile.
Ainsi, l'ajout de fonctionnalités a clairement amélioré la capacité de NB à différencier les classes, mais en prédisant "positif" et "négatif", on classe mal les neutres et donc la précision diminue (grosso modo). Ce comportement est indépendant de NB.
Plus ou moins de fonctionnalités?
En général, il n'est pas préférable d'utiliser plus de fonctionnalités, mais d'utiliser les bonnes fonctionnalités. Plus de fonctionnalités est préférable dans la mesure où un algorithme de sélection de fonctionnalités a plus de choix pour trouver le sous-ensemble optimal (je suggère d'explorer: sélection de fonctionnalités de validation croisée ). En ce qui concerne NB, une approche rapide et solide (mais moins qu'optimale) consiste à utiliser InformationGain (Ratio) pour trier les entités par ordre décroissant et sélectionner le top k.
Encore une fois, ce conseil (sauf InformationGain) est indépendant de l'algorithme de classification.
EDIT 27.11.11
Il y a eu beaucoup de confusion concernant le biais et la variance pour sélectionner le bon nombre de caractéristiques. Je recommande donc de lire les premières pages de ce tutoriel: compromis Bias-Variance . L'essence clé est:
- Biais élevé signifie que le modèle n'est pas optimal, c'est-à-dire que l'erreur de test est élevée (sous-ajustement, comme le dit Simone)
- High Variance signifie que le modèle est très sensible à l'échantillon utilisé pour construire le modèle . Cela signifie que l'erreur dépend fortement de l'ensemble d'apprentissage utilisé et donc la variance de l'erreur (évaluée à travers différents plis de validation croisée) sera extrêmement différente. (surajustement)
Les courbes d'apprentissage tracées indiquent en effet le biais, puisque l'erreur est tracée. Cependant, ce que vous ne pouvez pas voir, c'est la variance, car l'intervalle de confiance de l'erreur n'est pas du tout tracé.
Exemple: lorsque vous effectuez une validation croisée 3 fois 6 fois (oui, la répétition avec un partitionnement des données différent est recommandée, Kohavi suggère 6 répétitions), vous obtenez 18 valeurs. Je m'attends maintenant à ce que ...
- Avec un petit nombre de caractéristiques, l'erreur moyenne (biais) sera plus faible, cependant, la variance de l'erreur (des 18 valeurs) sera plus élevée.
- avec un nombre élevé de caractéristiques, l'erreur moyenne (biais) sera plus élevée, mais la variance de l'erreur (des 18 valeurs) plus faible.
Ce comportement de l'erreur / du biais est exactement ce que nous voyons dans vos graphiques. Nous ne pouvons pas faire de déclaration sur la variance. Le fait que les courbes soient proches les unes des autres peut être une indication que l'ensemble de test est suffisamment grand pour montrer les mêmes caractéristiques que l'ensemble d'apprentissage et donc que l'erreur mesurée peut être fiable, mais c'est le cas (du moins pour autant que je sache) il) ne suffit pas de faire une déclaration sur la variance (de l'erreur!).
Lorsque j'ajoute de plus en plus d'exemples de formation (en maintenant la taille de l'ensemble de test fixe), je m'attends à ce que la variance des deux approches (petit et grand nombre de fonctionnalités) diminue.
Oh, et n'oubliez pas de calculer l'infogain pour la sélection des fonctionnalités en utilisant uniquement les données de l'échantillon d'entraînement! On est tenté d'utiliser les données complètes pour la sélection des fonctionnalités, puis d'effectuer le partitionnement des données et d'appliquer la validation croisée, mais cela entraînera un surajustement. Je ne sais pas ce que tu as fait, c'est juste un avertissement qu'il ne faut jamais oublier.