2010-09-06 17 views
5

Inizio a utilizzare NaiveBayes/Simple classificatore per la classificazione (Weka), tuttavia ho alcuni problemi da capire durante l'addestramento dei dati. Il set di dati che sto usando è weather.nominal.arff.interpretare i risultati di Naive Bayes

alt text

Mentre io uso di test di formazione uso dalle opzioni, il risultato è classificatore:

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

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

La mia prima domanda che cosa devo capire dalle istanze classificati errate? Perché si è verificato un problema simile? quale collezione di attributi è classificata come errata? c'è un modo per capirlo?

In secondo luogo, quando provo la convalida incrociata di 10 volte, perché ottengo istanze classificate correttamente (meno) correttamente?

I risultati sono:

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

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

risposta

8

È possibile ottenere le singole previsioni per ogni istanza scegliendo questa opzione dal:

Altre opzioni ...> previsioni di output> plaintext

Che vi darà oltre alle metriche di valutazione, le seguenti:

=== 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 

che indica che la sesta istanza è stata classificata in modo errato. Si noti che anche se si allena e si esegue il test sugli stessi casi, si possono verificare errori di classificazione dovuti a incongruenze nei dati (l'esempio più semplice è avere due istanze con le stesse caratteristiche ma con un'etichetta di classe diversa).

Ricordare che il modo di test sopra descritto è parziale (è piuttosto imbroglio poiché può visualizzare le risposte alle domande). Pertanto siamo solitamente interessati a ottenere una stima più realistica dell'errore del modello su dati non visibili. Cross-validation è una di queste tecniche, in cui divide i dati in 10 pieghe stratificate, eseguendo il test su una piega, mentre si allena sugli altri nove, infine riporta l'accuratezza media delle dieci esecuzioni.

+0

grazie per la risposta chiara e suggerimento weka + 1. il punto di confusione è di parte, cosa intendi? Devo usare sempre la convalida incrociata per tutti i miei diversi algoritmi di classificazione? – berkay

+4

pensaci, vuoi imparare una rete Naive Bayes che modella i tuoi dati, quindi vuoi testarne la precisione di previsione. Se si allena il modello e lo si verifica sullo stesso insieme di istanze, si sta sovrastimando la sua accuratezza (ha visto quegli esempi particolari che quindi si comportano bene su di essi), ma probabilmente avrà meno successo sui nuovi dati. Il punto chiave qui è ** generalizzazione **: vogliamo generalizzare oltre le istanze che sono state fornite in "tempo di allenamento" a nuovi esempi mai visti. – Amro

+0

Amro ringrazia per le risposte chiare. sto postando qui per fare una domanda di richiamo e precisione dei risultati della convalida incrociata. recall (7/(2 + 7)) = 0778 e precision is (1/(1 + 4)) = 0.2, tuttavia weka dice per precisione = 0.636? qualche idea su questo? – berkay

Problemi correlati