2010-09-06 17 views
5

Ich beginne mit NaiveBayes/Simple Klassifikator für die Klassifizierung (Weka), aber ich habe einige Probleme zu verstehen, während das Training der Daten. Der Datensatz, den ich verwende, ist weather.nominal.arff.interpretieren Naive Bayes Ergebnisse

alt text

Während ich den Einsatz Trainingstest aus den Optionen verwenden, das Klassifikator Ergebnis:

Correctly Classified Instances 13 - 92.8571 %  
Incorrectly Classified Instances 1 - 7.1429 % 

a b classified as 
9 0 a =yes 
1 4 b = no 

Meine erste Frage, was sollte ich von den nicht korrekt zugeordnete Instanzen zu verstehen? Warum ist ein solches Problem aufgetreten? Welche Attributsammlung ist falsch klassifiziert? Gibt es eine Möglichkeit, das zu verstehen?

Zweitens, wenn ich die 10-fache Kreuzvalidierung versuche, warum bekomme ich verschiedene (weniger) korrekt klassifizierte Instanzen?

Die Ergebnisse sind:

Correctly Classified Instances   8    57.1429 % 
Incorrectly Classified Instances   6    42.8571 % 

a b <-- classified as 
7 2 | a = yes 
4 1 | b = no 

Antwort

8

Sie können die einzelnen Vorhersagen für jede Instanz erhalten, indem Sie diese Option wählen aus:

Weitere Optionen ...> Ausgabe Prognosen> Plain

Welche gibt Ihnen zusätzlich zu den Bewertungsmetriken Folgendes:

=== Predictions on training set === 

inst#  actual predicted error prediction 
    1  2:no  2:no  0.704 
    2  2:no  2:no  0.847 
    3  1:yes  1:yes  0.737 
    4  1:yes  1:yes  0.554 
    5  1:yes  1:yes  0.867 
    6  2:no  1:yes + 0.737 
    7  1:yes  1:yes  0.913 
    8  2:no  2:no  0.588 
    9  1:yes  1:yes  0.786 
    10  1:yes  1:yes  0.845 
    11  1:yes  1:yes  0.568 
    12  1:yes  1:yes  0.667 
    13  1:yes  1:yes  0.925 
    14  2:no  2:no  0.652 

die angibt, dass die 6. Instanzen falsch klassifiziert wurde. Beachten Sie, dass auch wenn Sie an denselben Instanzen trainieren und testen, aufgrund von Inkonsistenzen in den Daten Fehlklassifizierungen auftreten können (das einfachste Beispiel besteht darin, dass zwei Instanzen die gleichen Funktionen haben, jedoch unterschiedliche Klassenbezeichnungen aufweisen).

Denken Sie daran, dass der obige Testmodus voreingenommen ist (etwas betrügerisch, da er die Antworten auf die Fragen sehen kann). Daher sind wir normalerweise daran interessiert, eine realistischere Schätzung des Modellfehlers bei ungesehenen Daten zu erhalten. Cross-validation ist eine solche Technik, wo es die Daten in 10 geschichtete Falten unterteilt, das Testen auf einer Falte durchführt, während das Training auf den anderen neun, schließlich die durchschnittliche Genauigkeit über die zehn Läufe berichtet.

+0

danke für die klare antwort und weka tip + 1. der verwirrende Punkt ist voreingenommen, was meinst du? Sollte ich immer Kreuzvalidierung für alle meine verschiedenen Klassifikationsalgorithmen verwenden? – berkay

+4

Denken Sie darüber nach, Sie wollen ein Naive Bayes-Netz lernen, das Ihre Daten modelliert, dann wollen Sie seine Vorhersagegenauigkeit testen. Wenn Sie das Modell trainieren und es mit denselben Instanzen testen, dann überschätzen Sie seine Genauigkeit (es hat sich gezeigt, dass diese speziellen Beispiele damit gut abschneiden), werden aber wahrscheinlich bei neuen Daten weniger erfolgreich sein. Der Schlüsselpunkt hier ist ** Generalisierung **: Wir wollen über die Instanzen hinaus, die zur "Trainingszeit" zur Verfügung gestellt wurden, zu neuen ungesehenen Beispielen verallgemeinern. – Amro

+0

Amro danke für klare Antworten. Ich poste hier, um eine Frage des Rückrufs und der Genauigkeit von Kreuzvalidierungsergebnissen zu stellen. Recall (7/(2 + 7)) = 0778 und Genauigkeit ist (1/(1 + 4)) = 0.2, aber Weka sagt für die Präzision = 0.636? Irgendeine Idee dazu? – berkay

Verwandte Themen