Precisione vs misura F.
Prima di tutto, quando usi una metrica dovresti sapere come giocarla. La precisione misura il rapporto tra istanze correttamente classificate in tutte le classi. Ciò significa che se una classe si verifica più spesso di un'altra, l'accuratezza risultante è chiaramente dominata dall'accuratezza della classe dominante. Nel tuo caso, se si costruisce un modello M che prevede semplicemente "neutro" per ogni istanza, l'accuratezza risultante sarà
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
Bene, ma inutile.
Quindi l'aggiunta di funzionalità ha chiaramente migliorato la potenza di NB nel differenziare le classi, ma predicendo "positivo" e "negativo" si classificano erroneamente i neutri e quindi la precisione diminuisce (approssimativamente). Questo comportamento è indipendente da NB.
Più o meno funzionalità?
In generale non è meglio usare più funzioni, ma usare le giuste funzionalità. Più funzioni è meglio nella misura in cui un algoritmo di selezione delle caratteristiche ha più scelte per trovare il sottoinsieme ottimale (suggerisco di esplorare: selezione delle caratteristiche di crossvalidated ). Quando si tratta di NB, un approccio rapido e solido (ma meno che ottimale) è quello di utilizzare InformationGain (Ratio) per ordinare le caratteristiche in ordine decrescente e selezionare il k superiore.
Ancora una volta, questo consiglio (tranne InformationGain) è indipendente dall'algoritmo di classificazione.
MODIFICA 27.11.11
C'è stata molta confusione riguardo alla distorsione e alla varianza nel selezionare il numero corretto di funzioni. Consiglio quindi di leggere le prime pagine di questo tutorial: compromesso di bias-varianza . L'essenza chiave è:
- High Bias significa che il modello è meno che ottimale, ovvero che l'errore di test è elevato (insufficiente, come dice Simone)
- Alta varianza significa che il modello è molto sensibile al campione usato per costruire il modello . Ciò significa che l'errore dipende in larga misura dal set di allenamento utilizzato e quindi la varianza dell'errore (valutata su diverse pieghe di crossvalidation) sarà estremamente diversa. (overfitting)
Le curve di apprendimento tracciate indicano effettivamente il Bias, poiché l'errore è tracciato. Tuttavia, ciò che non è possibile visualizzare è la varianza, poiché l'intervallo di confidenza dell'errore non viene tracciato affatto.
Esempio: eseguendo una Crossvalidation 3 volte 6 volte (sì, si consiglia la ripetizione con partizionamento dati diverso, Kohavi suggerisce 6 ripetizioni), si ottengono 18 valori. Ora mi aspetto che ...
- Con un numero limitato di funzioni, l'errore medio (bias) sarà inferiore, tuttavia, la varianza dell'errore (dei 18 valori) sarà maggiore.
- con un numero elevato di funzioni, l'errore medio (bias) sarà maggiore, ma la varianza dell'errore (dei 18 valori) sarà inferiore.
Questo comportamento dell'errore / bias è esattamente quello che vediamo nei tuoi grafici. Non possiamo fare una dichiarazione sulla varianza. Il fatto che le curve siano vicine tra loro può essere un'indicazione che il set di test è abbastanza grande da mostrare le stesse caratteristiche del set di allenamento e quindi che l'errore misurato può essere affidabile, ma questo è (almeno per quanto ho capito esso) non è sufficiente per fare una dichiarazione sulla varianza (dell'errore!).
Quando si aggiungono sempre più esempi di addestramento (mantenendo fisse le dimensioni del set di test), mi aspetto che la varianza di entrambi gli approcci (piccolo e elevato numero di funzioni) diminuisca.
Oh, e non dimenticare di calcolare l'infogain per la selezione delle funzioni usando solo i dati nel campione di addestramento! Si è tentati di utilizzare i dati completi per la selezione delle funzionalità e quindi eseguire il partizionamento dei dati e applicare la convalida incrociata, ma ciò comporterà un overfitting. Non so cosa hai fatto, questo è solo un avvertimento che non dovresti mai dimenticare.