2016-05-04 5 views
0

Ich verwende die Natural NPM package, um einige ziemlich einfache Textanalyse zu tun. Wie auch immer ich finde eine große Lücke zwischen den Ergebnissen, wenn ich die gleichen Beispieltexte (Artikel von 600-2000 Wörtern) mit dem LogisticRegressionClassifier und BayesClassifier bearbeite.Unterschied zwischen BayesClassifier und LogisticRegressionClassifier in Natural NPM Paket

BayesClassifier Ergebnisse:

mlb 
// classifier.getClassifications(data) 
[ { label: 'mlb', value: 5.056332563372173e-139 }, 
    { label: 'nba', value: 5.589251687911356e-164 }, 
    { label: 'nhl', value: 1.2887446397232257e-165 }, 
    { label: 'nfl', value: 1.4562872037319007e-167 } ] 
mlb // result of classifier.classify(data) 

LogisticRegressionClassifier Ergebnisse:

mlb 
//classifier.getClassifications(data) 
[ { label: 'mlb', value: 0.9984418828983803 }, 
    { label: 'nhl', value: 0.008472129523116049 }, 
    { label: 'nfl', value: 0.0005530225293869185 }, 
    { label: 'nba', value: 9.776621359081668e-18 } ] 
mlb // result of classifier.classify(data) 

Offensichtlich ist die LogisticRegressionClassifier mir viel bessere Ergebnisse schenkt, aber es dauert wesentlich länger, jeden Artikel zu verarbeiten. In einigen Fällen mehrere Minuten. Ich verwende 50 handselektierte Artikel für jede Kategorie.

Meine Frage ist, was ist der zugrunde liegende Unterschied zwischen diesen beiden Verarbeitungsmethoden und gibt es eine Möglichkeit, meine Proben für den BayesClassifier besser vorzubereiten (die viel schneller scheint), dh. Wäre es von Vorteil, die Artikel vor der Verarbeitung zu stempeln? Irgendwelche anderen Tipps oder Tricks?

Auch ich weiß, es gibt eine Reihe von Versuch und Irrtum beteiligt, aber basierend auf Erfahrung gibt es eine gute Anzahl von Artikeln zu verwenden, um die Algorithmen zu trainieren? Ich habe einen Bereich von 10-400 für jeden versucht und scheinen relativ ähnliche Ergebnisse unabhängig von der Stichprobengröße zu erhalten.

Antwort

0

Sie könnten die Ausgabe der Funktion getClassifications falsch verstehen. Für den Bayes-Klassifikator stellen diese Zahlen die Wahrscheinlichkeit dar, dass der Text die Bezeichnung erhält. Für die logistische Regression repräsentieren die Zahlen die Wahrscheinlichkeit jeder Klasse für den Text. In beiden Fällen sollten Sie die Klasse mit der höchsten Wahrscheinlichkeit vorhersagen. So arbeiten diese Klassifikatoren.

Von dem, was Sie hier gezeigt haben, ist es nicht offensichtlich, welche besser auf Ihre Daten arbeiten würde.

+0

Das macht Sinn. Ich hatte angenommen, dass die Ergebnisse ähnlicher wären, als sie tatsächlich sind. Für was es wert ist, habe ich alles neu geschrieben mit Python und naiveBayesClassifier. Die Ergebnisse entsprechen eher dem, was ich erwarten würde, und die Leistung scheint viel höher zu sein. Danke für die Antwort. – funador

Verwandte Themen