Mahout - Classificazione

Cos'è la classificazione?

La classificazione è una tecnica di apprendimento automatico che utilizza dati noti per determinare come classificare i nuovi dati in un insieme di categorie esistenti. Per esempio,

  • L'applicazione iTunes utilizza la classificazione per preparare le playlist.

  • Fornitori di servizi di posta come Yahoo! e Gmail utilizzano questa tecnica per decidere se un nuovo messaggio deve essere classificato come spam. L'algoritmo di categorizzazione si allena analizzando le abitudini degli utenti di contrassegnare determinati messaggi come spam. Sulla base di ciò, il classificatore decide se una futura posta debba essere depositata nella tua casella di posta o nella cartella spam.

Come funziona la classificazione

Durante la classificazione di un determinato insieme di dati, il sistema di classificazione esegue le seguenti azioni:

  • Inizialmente viene preparato un nuovo modello di dati utilizzando uno qualsiasi degli algoritmi di apprendimento.
  • Quindi il modello di dati preparato viene testato.
  • Successivamente, questo modello di dati viene utilizzato per valutare i nuovi dati e per determinarne la classe.

Applicazioni di classificazione

  • Credit card fraud detection- Il meccanismo di classificazione viene utilizzato per prevedere le frodi con carte di credito. Utilizzando le informazioni storiche delle frodi precedenti, il classificatore può prevedere quali transazioni future potrebbero trasformarsi in frodi.

  • Spam e-mails - A seconda delle caratteristiche dei messaggi di spam precedenti, il classificatore determina se un messaggio di posta elettronica appena incontrato deve essere inviato alla cartella dello spam.

Classificatore Naive Bayes

Mahout utilizza l'algoritmo di classificazione Naive Bayes. Utilizza due implementazioni:

  • Classificazione Naive Bayes distribuita
  • Classificazione complementare Naive Bayes

Naive Bayes è una tecnica semplice per costruire classificatori. Non è un singolo algoritmo per l'addestramento di tali classificatori, ma una famiglia di algoritmi. Un classificatore Bayes costruisce modelli per classificare le istanze del problema. Queste classificazioni vengono effettuate utilizzando i dati disponibili.

Un vantaggio dell'ingenuo Bayes è che richiede solo una piccola quantità di dati di addestramento per stimare i parametri necessari per la classificazione.

Per alcuni tipi di modelli di probabilità, i classificatori bayesiani ingenui possono essere addestrati in modo molto efficiente in un ambiente di apprendimento supervisionato.

Nonostante i suoi presupposti troppo semplificati, i classificatori bayesiani ingenui hanno funzionato abbastanza bene in molte situazioni complesse del mondo reale.

Procedura di classificazione

I seguenti passaggi devono essere seguiti per implementare la classificazione:

  • Genera dati di esempio
  • Crea file di sequenza dai dati
  • Converti file di sequenza in vettori
  • Allena i vettori
  • Prova i vettori

Passaggio 1: generazione di dati di esempio

Genera o scarica i dati da classificare. Ad esempio, puoi ottenere il file20 newsgroups dati di esempio dal seguente collegamento: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Crea una directory per memorizzare i dati di input. Scarica l'esempio come mostrato di seguito.

$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Passaggio 2: creare file di sequenza

Crea un file di sequenza dall'esempio usando seqdirectoryutilità. La sintassi per generare la sequenza è data di seguito:

mahout seqdirectory -i <input file path> -o <output directory>

Passaggio 3: converti i file di sequenza in vettori

Crea file vettoriali da file di sequenza usando seq2parseutilità. Le opzioni diseq2parse utilità sono riportate di seguito:

$MAHOUT_HOME/bin/mahout seq2sparse
--analyzerName (-a) analyzerName  The class name of the analyzer
--chunkSize (-chunk) chunkSize    The chunkSize in MegaBytes.
--output (-o) output              The directory pathname for o/p
--input (-i) input                Path to job input directory.

Passaggio 4: addestra i vettori

Addestra i vettori generati usando il trainnbutilità. Le opzioni da utilizzaretrainnb utilità sono riportate di seguito:

mahout trainnb
 -i ${PATH_TO_TFIDF_VECTORS}
 -el
 -o ${PATH_TO_MODEL}/model
 -li ${PATH_TO_MODEL}/labelindex
 -ow
 -c

Passaggio 5: prova i vettori

Prova i vettori usando testnbutilità. Le opzioni da utilizzaretestnb utilità sono riportate di seguito:

mahout testnb
 -i ${PATH_TO_TFIDF_TEST_VECTORS}
 -m ${PATH_TO_MODEL}/model
 -l ${PATH_TO_MODEL}/labelindex
 -ow
 -o ${PATH_TO_OUTPUT}
 -c
 -seq