Mahout - klasyfikacja

Co to jest klasyfikacja?

Klasyfikacja to technika uczenia maszynowego, która wykorzystuje znane dane do określenia, jak nowe dane powinny zostać sklasyfikowane w zestawie istniejących kategorii. Na przykład,

  • Aplikacja iTunes używa klasyfikacji do przygotowywania list odtwarzania.

  • Dostawcy usług pocztowych, tacy jak Yahoo! a Gmail używa tej techniki do decydowania, czy nowa wiadomość powinna zostać sklasyfikowana jako spam. Algorytm kategoryzacji uczy się, analizując nawyki użytkowników związane z oznaczaniem niektórych wiadomości jako spamu. Na tej podstawie klasyfikator decyduje, czy przyszła poczta powinna trafić do Twojej skrzynki odbiorczej, czy do folderu ze spamem.

Jak działa klasyfikacja

Klasyfikując zadany zbiór danych, system klasyfikatora wykonuje następujące czynności:

  • Początkowo nowy model danych jest przygotowywany przy użyciu dowolnego algorytmu uczącego.
  • Następnie testowany jest przygotowany model danych.
  • Następnie ten model danych jest używany do oceny nowych danych i określenia ich klasy.

Zastosowania klasyfikacji

  • Credit card fraud detection- Mechanizm klasyfikacji służy do przewidywania oszustw związanych z kartami kredytowymi. Korzystając z historycznych informacji o poprzednich oszustwach, klasyfikator może przewidzieć, które przyszłe transakcje mogą przekształcić się w oszustwa.

  • Spam e-mails - W zależności od cech poprzednich wiadomości spamowych klasyfikator określa, czy nowo napotkana wiadomość e-mail powinna zostać wysłana do folderu spamu.

Naiwny klasyfikator Bayesa

Mahout używa algorytmu klasyfikatora Naive Bayes. Wykorzystuje dwie implementacje:

  • Rozproszona klasyfikacja Bayesa naiwnego
  • Uzupełniająca klasyfikacja Bayesa Naive

Naiwny Bayes to prosta technika konstruowania klasyfikatorów. Nie jest to pojedynczy algorytm do uczenia takich klasyfikatorów, ale rodzina algorytmów. Klasyfikator Bayesa tworzy modele do klasyfikowania wystąpień problemów. Klasyfikacje te są dokonywane na podstawie dostępnych danych.

Zaletą naiwnego Bayesa jest to, że wymaga on jedynie niewielkiej ilości danych szkoleniowych do oszacowania parametrów niezbędnych do klasyfikacji.

W przypadku niektórych typów modeli prawdopodobieństwa naiwne klasyfikatory Bayesa można bardzo skutecznie szkolić w nadzorowanym środowisku uczenia się.

Pomimo swoich nadmiernie uproszczonych założeń, naiwne klasyfikatory Bayesa działały całkiem dobrze w wielu skomplikowanych sytuacjach rzeczywistych.

Procedura klasyfikacji

Aby wdrożyć klasyfikację, należy wykonać następujące kroki:

  • Wygeneruj przykładowe dane
  • Utwórz pliki sekwencji z danych
  • Konwertuj pliki sekwencji na wektory
  • Trenuj wektory
  • Przetestuj wektory

Krok 1: Wygeneruj przykładowe dane

Wygeneruj lub pobierz dane do sklasyfikowania. Na przykład możesz pobrać plik20 newsgroups przykładowe dane z linku: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Utwórz katalog do przechowywania danych wejściowych. Pobierz przykład, jak pokazano poniżej.

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

Krok 2: Utwórz pliki sekwencji

Utwórz plik sekwencji z przykładu przy użyciu seqdirectoryużyteczność. Składnia do generowania sekwencji jest podana poniżej:

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

Krok 3: Konwertuj pliki sekwencji na wektory

Utwórz pliki wektorowe z plików sekwencji za pomocą seq2parseużyteczność. Opcjeseq2parse użyteczność podano poniżej:

$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.

Krok 4: Wytrenuj wektory

Trenuj wygenerowane wektory przy użyciu trainnbużyteczność. Opcje do użyciatrainnb użyteczność podano poniżej:

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

Krok 5: Przetestuj wektory

Przetestuj wektory za pomocą testnbużyteczność. Opcje do użyciatestnb użyteczność podano poniżej:

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