Mahout - Classement

Qu'est-ce que la classification?

La classification est une technique d'apprentissage automatique qui utilise des données connues pour déterminer comment les nouvelles données doivent être classées dans un ensemble de catégories existantes. Par exemple,

  • L'application iTunes utilise la classification pour préparer des listes de lecture.

  • Les fournisseurs de services de messagerie tels que Yahoo! et Gmail utilisent cette technique pour décider si un nouveau courrier doit être classé comme spam. L'algorithme de catégorisation s'entraîne en analysant les habitudes des utilisateurs de marquer certains mails comme des spams. Sur cette base, le classificateur décide si un futur courrier doit être déposé dans votre boîte de réception ou dans le dossier des spams.

Comment fonctionne la classification

Lors de la classification d'un ensemble donné de données, le système de classification effectue les actions suivantes:

  • Au départ, un nouveau modèle de données est préparé à l'aide de l'un des algorithmes d'apprentissage.
  • Ensuite, le modèle de données préparé est testé.
  • Par la suite, ce modèle de données est utilisé pour évaluer les nouvelles données et pour déterminer leur classe.

Applications de la classification

  • Credit card fraud detection- Le mécanisme de classification est utilisé pour prédire les fraudes par carte de crédit. En utilisant les informations historiques des fraudes précédentes, le classificateur peut prédire quelles transactions futures pourraient se transformer en fraudes.

  • Spam e-mails - En fonction des caractéristiques des spams précédents, le classificateur détermine si un e-mail nouvellement rencontré doit être envoyé dans le dossier spam.

Classificateur Naive Bayes

Mahout utilise l'algorithme de classification Naive Bayes. Il utilise deux implémentations:

  • Classification Naive Bayes distribuée
  • Classification Naive Bayes complémentaire

Naive Bayes est une technique simple pour construire des classificateurs. Ce n'est pas un algorithme unique pour entraîner de tels classificateurs, mais une famille d'algorithmes. Un classificateur Bayes construit des modèles pour classer les instances de problème. Ces classifications sont faites à partir des données disponibles.

Un avantage de Bayes naïf est qu'il ne nécessite qu'une petite quantité de données d'entraînement pour estimer les paramètres nécessaires à la classification.

Pour certains types de modèles de probabilité, les classificateurs de Bayes naïfs peuvent être entraînés très efficacement dans un environnement d'apprentissage supervisé.

Malgré ses hypothèses simplifiées à l'extrême, les classificateurs Bayes naïfs ont plutôt bien fonctionné dans de nombreuses situations complexes du monde réel.

Procédure de classification

Les étapes suivantes doivent être suivies pour mettre en œuvre la classification:

  • Générer des exemples de données
  • Créer des fichiers de séquence à partir de données
  • Convertir les fichiers de séquence en vecteurs
  • Former les vecteurs
  • Tester les vecteurs

Étape 1: générer des exemples de données

Générez ou téléchargez les données à classer. Par exemple, vous pouvez obtenir le20 newsgroups exemple de données à partir du lien suivant: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Créez un répertoire pour stocker les données d'entrée. Téléchargez l'exemple comme indiqué ci-dessous.

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

Étape 2: créer des fichiers de séquence

Créez un fichier de séquence à partir de l'exemple en utilisant seqdirectoryutilitaire. La syntaxe pour générer la séquence est donnée ci-dessous:

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

Étape 3: Convertissez les fichiers de séquence en vecteurs

Créez des fichiers vectoriels à partir de fichiers de séquence en utilisant seq2parseutilitaire. Les options deseq2parse l'utilité sont données ci-dessous:

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

Étape 4: Former les vecteurs

Entraînez les vecteurs générés à l'aide du trainnbutilitaire. Les options à utilisertrainnb l'utilité sont données ci-dessous:

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

Étape 5: Testez les vecteurs

Testez les vecteurs en utilisant testnbutilitaire. Les options à utilisertestnb l'utilité sont données ci-dessous:

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