Ich bin neu im maschinellen Lernen. Im Moment benutze ich einen Naive Bayes (NB) Klassifikator, um kleine Texte in 3 Klassen mit NLTK und Python als positiv, negativ oder neutral zu klassifizieren.
Nach einigen Tests mit einem Datensatz von 300.000 Instanzen (16.924 positive, 7.477 negative und 275.599 neutrale) stellte ich fest, dass die Genauigkeit abnimmt, wenn ich die Anzahl der Merkmale erhöhe, aber die Präzision / Abrufrate für positive und negative Klassen zunimmt. Ist dies ein normales Verhalten für einen NB-Klassifikator? Können wir sagen, dass es besser wäre, mehr Funktionen zu verwenden?
Daten:
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
Danke im Voraus...
Edit 2011/11/26
Ich habe 3 verschiedene Merkmalsauswahlstrategien (MAXFREQ, FREQENT, MAXINFOGAIN) mit dem Naive Bayes-Klassifikator getestet. Hier sind zunächst die Genauigkeit und die F1-Maße pro Klasse:
Dann habe ich den Zugfehler und den Testfehler mit einem inkrementellen Trainingssatz aufgezeichnet, wenn MAXINFOGAIN mit den Top-100- und den Top-1000-Features verwendet wurde:
Es scheint mir also, dass, obwohl die höchste Genauigkeit mit FREQENT erzielt wird, der beste Klassifikator derjenige ist, der MAXINFOGAIN verwendet, stimmt das ? Bei Verwendung der Top-100-Funktionen besteht eine Verzerrung (Testfehler stehen in der Nähe eines Zugfehlers), und das Hinzufügen weiterer Trainingsbeispiele hilft nicht. Um dies zu verbessern, benötigen wir mehr Funktionen. Mit 1000 Funktionen wird die Verzerrung reduziert, aber der Fehler steigt ... Ist das in Ordnung? Muss ich weitere Funktionen hinzufügen? Ich weiß nicht wirklich, wie ich das interpretieren soll ...
Danke noch einmal...
quelle
Antworten:
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
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:
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 ...
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.
quelle
Um zu wissen, ob es sinnvoll ist, mehr Funktionen zu verwenden, würde ich Lernkurven zeichnen. Ich denke, dies wird in der 10. Einheit der maschinellen Lernklasse von Stanford mit dem Titel "Ratschläge für die Anwendung maschinellen Lernens", die Sie hier finden: http://www.ml-class.org/course/video/preview_list, klar erklärt .
Wenn Sie Lernkurven zeichnen, können Sie verstehen, ob Ihr Problem entweder die hohe Abweichung oder die hohe Varianz ist. Solange Sie die Anzahl der Trainingsbeispiele erhöhen, sollten Sie den Trainingsfehler und den Testfehler (dh 1-Genauigkeit) aufzeichnen. Letzterer ist der Fehler Ihres Klassifikators, der auf einem anderen Datensatz geschätzt wird. Wenn diese Kurven nahe beieinander liegen, liegt ein Problem mit hoher Abweichung vor, und es wäre wahrscheinlich vorteilhaft, weitere Features einzufügen. Auf der anderen Seite haben Sie ein Problem mit hoher Varianz, wenn Ihre Kurven ziemlich getrennt sind, solange Sie die Anzahl der Trainingsbeispiele erhöhen. In diesem Fall sollten Sie die Anzahl der von Ihnen verwendeten Funktionen verringern.
Bearbeiten
quelle