Domanda

io sto facendo il problema di machine learning testo categorizzazione utilizzando Naive Bayes. Ho ogni parola come una caratteristica. Sono stato in grado di attuarlo e sto ricevendo una buona precisione.

E 'possibile per me di utilizzare tuple di parole come le caratteristiche?

Per esempio, se ci sono due classi, Politica e sport. La parola detta governo potrebbe apparire in entrambi. Tuttavia, in politica posso avere una tupla (governo, la democrazia), mentre negli sport di classe posso avere una tupla (governo, Sportivo). Quindi, se un nuovo articolo di testo viene, in cui è la politica, la probabilità della tupla (governo, la democrazia) ha più probabilità rispetto alla tupla (governo, Sportivo).

Chiedo questo perché facendo questo sono io violando l'ipotesi di indipendenza del problema Naive Bayes, perché io sto considerando singole parole come caratteristiche troppo.

Inoltre, sto pensando di aggiungere pesi alle funzioni. Ad esempio, una funzionalità 3-tuple avrà meno peso rispetto Funzione 4 parametri.

In teoria, sono questi due approcci non cambiando le ipotesi di indipendenza sul classificatore bayesiano? Inoltre, non ho iniziato con l'approccio che ho citato ancora, ma sarà questo migliorare la precisione? Credo che la precisione non potrebbe migliorare, ma la quantità di dati formazione necessaria per ottenere la stessa precisione sarebbe meno.

È stato utile?

Soluzione

Anche senza l'aggiunta di bigrammi, documenti reali già viola l'ipotesi di indipendenza. Condizionata per avere Obama in un documento, il presidente è molto più probabile ad apparire. Ciò nonostante, Naive Bayes fa ancora un lavoro decente di classificazione, anche se la probabilità stima che fornisce irrimediabilmente fuori. Quindi vi consiglio di andare avanti e aggiungere funzioni più complesse al classificatore e vedere se migliorano la precisione.

Se si ottiene la stessa precisione con meno dati, che è sostanzialmente equivalente a ottenere una migliore precisione con la stessa quantità di dati.

D'altra parte, utilizzando semplici, funzioni più comuni funziona meglio come si diminuisce la quantità di dati. Se si tenta di inserire troppi parametri per troppo pochi dati, si tende a OVERFIT male.

Ma la linea di fondo è quello di provare e vedere.

Altri suggerimenti

No, da un punto di vista teorico, si è non cambiare l'ipotesi di indipendenza. Siete semplicemente creando uno spazio campione modificato (o nuovo). In generale, una volta di iniziare a usare più elevati n-grammi come eventi nel vostro spazio campionario, scarsità di dati diventa un problema. Penso che utilizzano tuple porteranno alla stessa questione. Probabilmente avrete bisogno di più dati di allenamento, non di meno. Si dovrà probabilmente anche per dare un po 'più pensato al tipo di smoothing si utilizza. Semplice Laplace smoothing non può essere l'ideale.

La maggior parte punto importante, credo, è questo: qualunque cosa classificatore che si sta utilizzando, le caratteristiche sono fortemente dipendenti dal dominio (e talvolta anche il set di dati). Ad esempio, se si sta classificando sentimento di testi sulla base di recensioni di film, utilizzando solo unigrams può sembrare controintuitivo, ma un rendimento migliore rispetto all'utilizzo di solo aggettivi. D'altra parte, per i set di dati di Twitter, una combinazione di unigrams e bigrammi sono stati trovati ad essere buono, ma più elevati n-grammi non fosse utile. Sulla base di tali relazioni (rif. Pang e Lee, opinion mining e Sentiment Analysis ), penso che usando tuple più mostrerà i risultati simili, dal momento che, dopo tutto, le tuple di parole sono semplicemente punti in un superiore che spazio tridimensionale. L'algoritmo di base si comporta allo stesso modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top