Genauigkeit gegen F-Maß
Wenn Sie eine Metrik verwenden, sollten Sie zunächst wissen, wie man sie spielt. Die Genauigkeit misst das Verhältnis der korrekt klassifizierten Instanzen über alle Klassen hinweg. Das heißt, wenn eine Klasse häufiger vorkommt als eine andere, wird die resultierende Genauigkeit eindeutig von der Genauigkeit der dominierenden Klasse dominiert. In Ihrem Fall, wenn man ein Modell M konstruiert, das für jede Instanz nur "neutral" vorhersagt, wird die resultierende Genauigkeit sein
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
Gut, aber nutzlos.
Das Hinzufügen von Merkmalen verbesserte die Fähigkeit von NB, die Klassen zu unterscheiden, deutlich, aber durch Vorhersagen von "positiv" und "negativ" werden Neutrale falsch klassifiziert, und daher nimmt die Genauigkeit ab (grob gesprochen). Dieses Verhalten ist unabhängig von NB.
Mehr oder weniger Funktionen?
Im Allgemeinen ist es nicht besser, mehr Funktionen zu verwenden, sondern die richtigen Funktionen zu verwenden. Mehr Features sind insofern besser, als ein Feature-Auswahl-Algorithmus mehr Auswahlmöglichkeiten hat, um die optimale Teilmenge zu finden (ich schlage vor, Folgendes zu untersuchen: Feature-Auswahl von crossvalidated ). Wenn es um NB geht, besteht ein schneller und solider (aber nicht optimaler) Ansatz darin, InformationGain (Ratio) zu verwenden, um die Merkmale in absteigender Reihenfolge zu sortieren und das obere k auszuwählen.
Auch dieser Hinweis (mit Ausnahme von InformationGain) ist unabhängig vom Klassifizierungsalgorithmus.
EDIT 27.11.11
Es gab viel Verwirrung hinsichtlich der Abweichung und der Varianz bei der Auswahl der richtigen Anzahl von Merkmalen. Ich empfehle daher, die ersten Seiten dieses Tutorials zu lesen: Bias-Variance tradeoff . Das Wesentliche ist:
- High Bias bedeutet, dass das Modell nicht optimal ist, dh der Testfehler ist hoch (underfitting, wie Simone es ausdrückt)
- Hohe Varianz bedeutet, dass das Modell sehr empfindlich auf das zum Erstellen des Modells verwendete Beispiel reagiert . Dies bedeutet, dass der Fehler stark vom verwendeten Trainingssatz abhängt und daher die Varianz des Fehlers (über verschiedene Kreuzvalidierungsfalten hinweg bewertet) extrem unterschiedlich sein wird. (Überanpassung)
Die eingezeichneten Lernkurven geben tatsächlich den Bias an, da der Fehler eingezeichnet ist. Was Sie jedoch nicht sehen können, ist die Varianz, da das Konfidenzintervall des Fehlers überhaupt nicht aufgezeichnet wird.
Beispiel: Wenn Sie eine dreifache Kreuzvalidierung sechsmal durchführen (Ja, eine Wiederholung mit unterschiedlicher Datenpartitionierung wird empfohlen, Kohavi schlägt sechs Wiederholungen vor), erhalten Sie 18 Werte. Ich würde jetzt erwarten, dass ...
- Mit einer kleinen Anzahl von Merkmalen ist der durchschnittliche Fehler (Bias) geringer, die Varianz des Fehlers (der 18 Werte) ist jedoch höher.
- Bei einer hohen Anzahl von Merkmalen ist der durchschnittliche Fehler (Bias) höher, die Varianz des Fehlers (der 18 Werte) jedoch niedriger.
Dieses Verhalten des Fehlers / der Abweichung ist genau das, was wir in Ihren Darstellungen sehen. Über die Varianz können wir keine Aussage machen. Dass die Kurven nahe beieinander liegen, kann ein Hinweis darauf sein, dass der Testsatz groß genug ist, um die gleichen Eigenschaften wie der Trainingssatz aufzuweisen, und daher der gemessene Fehler zuverlässig sein kann, aber dies ist (zumindest soweit ich verstanden habe) es reicht nicht aus, eine Aussage über die Varianz (des Fehlers!) zu treffen.
Wenn ich mehr und mehr Trainingsbeispiele hinzufüge (wobei die Größe des Testsatzes konstant bleibt), würde ich erwarten, dass die Varianz beider Ansätze (kleine und große Anzahl von Features) abnimmt.
Oh, und vergessen Sie nicht, den Infogewinn für die Funktionsauswahl nur anhand der Daten im Trainingsbeispiel zu berechnen! Man ist versucht, die vollständigen Daten für die Featureauswahl zu verwenden und dann eine Datenpartitionierung durchzuführen und die Kreuzvalidierung anzuwenden. Dies führt jedoch zu einer Überanpassung. Ich weiß nicht, was du getan hast, das ist nur eine Warnung, die man niemals vergessen sollte.