Mahout - Clustering

Le clustering est la procédure pour organiser les éléments ou éléments d'une collection donnée en groupes en fonction de la similitude entre les éléments. Par exemple, les applications liées à la publication d'actualités en ligne regroupent leurs articles d'actualité à l'aide du clustering.

Applications du clustering

  • Le regroupement est largement utilisé dans de nombreuses applications telles que les études de marché, la reconnaissance de formes, l'analyse de données et le traitement d'images.

  • Le clustering peut aider les spécialistes du marketing à découvrir des groupes distincts dans leur base de clients. Et ils peuvent caractériser leurs groupes de clients en fonction des modèles d'achat.

  • Dans le domaine de la biologie, il peut être utilisé pour dériver des taxonomies végétales et animales, catégoriser des gènes ayant une fonctionnalité similaire et avoir un aperçu des structures inhérentes aux populations.

  • Le regroupement aide à identifier les zones d'utilisation des terres similaires dans une base de données d'observation de la Terre.

  • Le clustering aide également à classer les documents sur le Web pour la découverte d'informations.

  • Le clustering est utilisé dans les applications de détection des valeurs aberrantes telles que la détection de fraude par carte de crédit.

  • En tant que fonction d'exploration de données, l'analyse de cluster sert d'outil pour obtenir un aperçu de la distribution des données afin d'observer les caractéristiques de chaque cluster.

En utilisant Mahout, nous pouvons regrouper un ensemble donné de données. Les étapes requises sont les suivantes:

  • Algorithm Vous devez sélectionner un algorithme de clustering approprié pour regrouper les éléments d'un cluster.

  • Similarity and Dissimilarity Vous devez avoir une règle en place pour vérifier la similitude entre les éléments nouvellement rencontrés et les éléments dans les groupes.

  • Stopping Condition Une condition d'arrêt est requise pour définir le point où aucune mise en cluster n'est requise.

Procédure de clustering

Pour regrouper les données données, vous devez -

  • Démarrez le serveur Hadoop. Créez les répertoires requis pour stocker les fichiers dans Hadoop File System. (Créez des répertoires pour le fichier d'entrée, le fichier de séquence et la sortie en cluster en cas de canopy).

  • Copiez le fichier d'entrée dans le système de fichiers Hadoop à partir du système de fichiers Unix.

  • Préparez le fichier de séquence à partir des données d'entrée.

  • Exécutez l'un des algorithmes de clustering disponibles.

  • Obtenez les données groupées.

Démarrer Hadoop

Mahout fonctionne avec Hadoop, assurez-vous donc que le serveur Hadoop est opérationnel.

$ cd HADOOP_HOME/bin
$ start-all.sh

Préparation des répertoires de fichiers d'entrée

Créez des répertoires dans le système de fichiers Hadoop pour stocker le fichier d'entrée, les fichiers de séquence et les données en cluster à l'aide de la commande suivante:

$ hadoop fs -p mkdir /mahout_data
$ hadoop fs -p mkdir /clustered_data
$ hadoop fs -p mkdir /mahout_seq

Vous pouvez vérifier si le répertoire est créé à l'aide de l'interface Web hadoop dans l'URL suivante - http://localhost:50070/

Il vous donne la sortie comme indiqué ci-dessous:

Copie du fichier d'entrée sur HDFS

Maintenant, copiez le fichier de données d'entrée du système de fichiers Linux dans le répertoire mahout_data du système de fichiers Hadoop comme indiqué ci-dessous. Supposons que votre fichier d'entrée est mydata.txt et qu'il se trouve dans le répertoire / home / Hadoop / data /.

$ hadoop fs -put /home/Hadoop/data/mydata.txt /mahout_data/

Préparation du fichier de séquence

Mahout vous fournit un utilitaire pour convertir le fichier d'entrée donné dans un format de fichier de séquence. Cet utilitaire nécessite deux paramètres.

  • Le répertoire du fichier d'entrée où résident les données d'origine.
  • Le répertoire du fichier de sortie dans lequel les données en cluster doivent être stockées.

Ci-dessous est l'invite d'aide de mahout seqdirectory utilitaire.

Step 1:Accédez au répertoire de base de Mahout. Vous pouvez obtenir de l'aide de l'utilitaire comme indiqué ci-dessous:

[[email protected] bin]$ ./mahout seqdirectory --help
Job-Specific Options:
--input (-i) input Path to job input directory.
--output (-o) output The directory pathname for output.
--overwrite (-ow) If present, overwrite the output directory

Générez le fichier de séquence à l'aide de l'utilitaire en utilisant la syntaxe suivante:

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

Example

mahout seqdirectory
-i hdfs://localhost:9000/mahout_seq/
-o hdfs://localhost:9000/clustered_data/

Algorithmes de clustering

Mahout prend en charge deux algorithmes principaux pour le clustering, à savoir:

  • Regroupement de la canopée
  • K-signifie clustering

Regroupement de la canopée

Le clustering de la canopée est une technique simple et rapide utilisée par Mahout à des fins de clustering. Les objets seront traités comme des points dans un espace ordinaire. Cette technique est souvent utilisée comme étape initiale dans d'autres techniques de clustering telles que le clustering k-means. Vous pouvez exécuter une tâche Canopy en utilisant la syntaxe suivante:

mahout canopy -i <input vectors directory>
-o <output directory>
-t1 <threshold value 1>
-t2 <threshold value 2>

Le travail Canopy nécessite un répertoire de fichiers d'entrée avec le fichier de séquence et un répertoire de sortie dans lequel les données groupées doivent être stockées.

Example

mahout canopy -i hdfs://localhost:9000/mahout_seq/mydata.seq
-o hdfs://localhost:9000/clustered_data
-t1 20
-t2 30

Vous obtiendrez les données groupées générées dans le répertoire de sortie donné.

Clustering K-means

Le clustering K-means est un algorithme de clustering important. L'algorithme de clustering k en k-means représente le nombre de clusters dans lesquels les données doivent être divisées. Par exemple, la valeur k spécifiée pour cet algorithme est sélectionnée comme 3, l'algorithme va diviser les données en 3 clusters.

Chaque objet sera représenté sous forme de vecteur dans l'espace. Initialement, k points seront choisis par l'algorithme de manière aléatoire et traités comme des centres, chaque objet le plus proche de chaque centre est regroupé. Il existe plusieurs algorithmes pour la mesure de distance et l'utilisateur doit choisir celui requis.

Creating Vector Files

  • Contrairement à l'algorithme Canopy, l'algorithme k-means nécessite des fichiers vectoriels en entrée, vous devez donc créer des fichiers vectoriels.

  • Pour générer des fichiers vectoriels à partir du format de fichier de séquence, Mahout fournit le seq2parse utilitaire.

Voici quelques-unes des options de seq2parseutilitaire. Créez des fichiers vectoriels à l'aide de ces options.

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

Après avoir créé des vecteurs, continuez avec l'algorithme k-means. La syntaxe pour exécuter le travail k-means est la suivante:

mahout kmeans -i <input vectors directory>
-c  <input clusters directory>
-o  <output working directory>
-dm <Distance Measure technique>
-x  <maximum number of iterations>
-k  <number of initial clusters>

Le travail de clustering K-means nécessite un répertoire de vecteurs d'entrée, un répertoire de clusters de sortie, une mesure de distance, le nombre maximal d'itérations à effectuer et une valeur entière représentant le nombre de clusters dans lesquels les données d'entrée doivent être divisées.