Mahout - Klassifikation
Was ist Klassifizierung?
Die Klassifizierung ist eine maschinelle Lerntechnik, bei der anhand bekannter Daten festgelegt wird, wie die neuen Daten in eine Reihe vorhandener Kategorien eingeteilt werden sollen. Zum Beispiel,
Die iTunes-Anwendung verwendet die Klassifizierung, um Wiedergabelisten vorzubereiten.
Mail-Dienstleister wie Yahoo! und Google Mail verwenden diese Technik, um zu entscheiden, ob eine neue E-Mail als Spam eingestuft werden soll. Der Kategorisierungsalgorithmus trainiert sich selbst, indem er die Benutzergewohnheiten analysiert, bestimmte E-Mails als Spam zu markieren. Auf dieser Grundlage entscheidet der Klassifizierer, ob eine zukünftige E-Mail in Ihrem Posteingang oder im Spam-Ordner abgelegt werden soll.
Wie die Klassifizierung funktioniert
Während der Klassifizierung eines bestimmten Datensatzes führt das Klassifizierungssystem die folgenden Aktionen aus:
- Zunächst wird unter Verwendung eines der Lernalgorithmen ein neues Datenmodell erstellt.
- Anschließend wird das vorbereitete Datenmodell getestet.
- Danach wird dieses Datenmodell verwendet, um die neuen Daten auszuwerten und ihre Klasse zu bestimmen.
Anwendungen der Klassifikation
Credit card fraud detection- Der Klassifizierungsmechanismus wird verwendet, um Kreditkartenbetrug vorherzusagen. Anhand historischer Informationen früherer Betrugsfälle kann der Klassifizierer vorhersagen, welche zukünftigen Transaktionen zu Betrug führen können.
Spam e-mails - Abhängig von den Merkmalen früherer Spam-Mails bestimmt der Klassifizierer, ob eine neu aufgetretene E-Mail an den Spam-Ordner gesendet werden soll.
Naiver Bayes-Klassifikator
Mahout verwendet den Naive Bayes-Klassifikatoralgorithmus. Es werden zwei Implementierungen verwendet:
- Verteilte Naive Bayes-Klassifizierung
- Komplementäre Naive Bayes Klassifizierung
Naive Bayes ist eine einfache Technik zum Konstruieren von Klassifikatoren. Es ist kein einzelner Algorithmus zum Trainieren solcher Klassifikatoren, sondern eine Familie von Algorithmen. Ein Bayes-Klassifikator erstellt Modelle zur Klassifizierung von Probleminstanzen. Diese Klassifizierungen werden anhand der verfügbaren Daten vorgenommen.
Ein Vorteil von naiven Bayes besteht darin, dass nur eine geringe Menge an Trainingsdaten erforderlich ist, um die für die Klassifizierung erforderlichen Parameter abzuschätzen.
Für einige Arten von Wahrscheinlichkeitsmodellen können naive Bayes-Klassifikatoren in einer überwachten Lernumgebung sehr effizient trainiert werden.
Trotz seiner stark vereinfachten Annahmen haben naive Bayes-Klassifikatoren in vielen komplexen realen Situationen recht gut funktioniert.
Verfahren der Klassifizierung
Die folgenden Schritte sind zu befolgen, um die Klassifizierung zu implementieren:
- Beispieldaten generieren
- Erstellen Sie Sequenzdateien aus Daten
- Konvertieren Sie Sequenzdateien in Vektoren
- Trainiere die Vektoren
- Testen Sie die Vektoren
Schritt 1: Beispieldaten generieren
Generieren oder laden Sie die zu klassifizierenden Daten herunter. Zum Beispiel können Sie die bekommen20 newsgroups Beispieldaten von folgendem Link: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
Erstellen Sie ein Verzeichnis zum Speichern von Eingabedaten. Laden Sie das Beispiel wie unten gezeigt herunter.
$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
Schritt 2: Erstellen Sie Sequenzdateien
Erstellen Sie eine Sequenzdatei aus dem Beispiel mit seqdirectoryNützlichkeit. Die Syntax zum Generieren der Sequenz ist unten angegeben:
mahout seqdirectory -i <input file path> -o <output directory>
Schritt 3: Konvertieren von Sequenzdateien in Vektoren
Erstellen Sie Vektordateien aus Sequenzdateien mit seq2parseNützlichkeit. Die Optionen vonseq2parse Dienstprogramm sind unten angegeben:
$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.
Schritt 4: Trainieren Sie die Vektoren
Trainieren Sie die generierten Vektoren mit dem trainnbNützlichkeit. Die zu verwendenden Optionentrainnb Dienstprogramm sind unten angegeben:
mahout trainnb
-i ${PATH_TO_TFIDF_VECTORS}
-el
-o ${PATH_TO_MODEL}/model
-li ${PATH_TO_MODEL}/labelindex
-ow
-c
Schritt 5: Testen Sie die Vektoren
Testen Sie die Vektoren mit testnbNützlichkeit. Die zu verwendenden Optionentestnb Dienstprogramm sind unten angegeben:
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