CLUSTERING SOUS
MAHOUT
Dr Mustapha MICHRAFY Dr Bernard KOUAKOU
Contact des auteurs :
datascience.km@gmail.com
Mustapha MIC...
Plan
• Présentation de Mahout
• Présentation du clustering
• Les algorithmes de clustering
• Clustering en ligne de comman...
Présentation de Mahout
• Objectif
• Caractéristique
• Compilation des sources
• Format et représentation de données
Mustap...
Présentation de Mahout
• Mahout : objectif
• Mahout est un API Java dédié aux algorithmes
d’apprentissage, à savoir:
Recom...
Mahout : caractéristique
• Mahout est un projet Apache, open source
• Il est évolutif (« scalable »)
• Portable ( API Java...
Mahout : Compilation des sources
• Prérequis
Maven 2 et plus
Java 6
• Étapes de la compilation des sources
télécharger les...
Mahout : Installation et configuration
• Prérequis
• Java
• Et Hadoop (pour les version mapreduce)
• Installation
téléchar...
Présentation de mahout
• Format et représentation de données
• Sélection des caractéristiques et vectorisation :
Identifie...
Présentation du clustering
• Objectif du Clustering
• Classement des méthodes de « Clustering »
• Critère de distinction d...
Présentation du clustering
• Clustering : objectif
• Il vise à répartir l'échantillon en groupes d'observations
homogènes....
Présentation du clustering
• Classement des méthodes de « Clustering »
• Méthodes de type CAH
Ce sont les méthodes constru...
Présentation du clustering
• Critère de distinction des méthodes (1)
• Trois points permettent de distinguer les méthodes....
Présentation du clustering
• Critère de distinction des méthodes (2)
• Point 2 : Le critère de similarité/distance entre d...
Présentation du clustering
• Qualité d’une méthode de clustering (1)
• Une bonne méthode produit des clusters ayant :
une ...
Présentation du clustering
• Qualité d’une méthode de clustering (2)
• la qualité des clusters est étroitement liée au :
1...
Présentation du clustering
Distance Inter-clusters
x
y
(0,0)
Grande distance inter-cluster
x
y
(0,0)
petite distance inter...
Présentation du clustering
Distance Intra-clusters
x
y
(0,0)
Grande distance intra-cluster
x
y
(0,0)
petite distance intra...
Présentation du clutering
• Similarité et dissimilarité
• Une métrique de similarité/dissimilarité est exprimée par une
di...
Algorithmes de clustering sous Mahout
• Mode d’utilisation des algorithmes
• Distances sous Mahout
• Schéma général des al...
Algorithmes de clustering sous Mahout
• Introduction
• Mahout propose plusieurs algorithmes de clustering dont :
• Canopy
...
Algorithmes de clustering sous Mahout
• Mode d’utilisation des algorithmes
• Deux modes d’utilisation des algorithmes sous...
Algorithmes de clustering sous Mahout
• Données fournies en Entrées des algorithmes
• Les vecteurs d’entrée (sous forme de...
Algorithmes de clustering sous Mahout
• caractéristique d’une distance
• d(x,y) >= 0
• d(x,y) = 0 ssi x = y
• La symétrie ...
Algorithmes de clustering sous Mahout
• Distances proposées par Mahout
• Distance euclidienne d x, y 	ൌ	 ∑ ሺ‫ݔ‬௜ െ	‫ݕ‬௜ሻଶ௡...
Algorithmes de clustering sous Mahout
Générer les vecteurs
via les données
Ecrire les vecteurs
dans un dossier
Ecrire les ...
Algorithmes de clustering sous Mahout
• Algorithme de Canopy : principe
• C’est un algorithme de classification non superv...
Algorithmes de Canopy
1. Entrée
• Ensemble des points E
• Distance d
• T1 et T2 deux seuils, T1 > T2
2. Sélectionner un él...
K-means : caractéristiques
1. Il s’agit d’un algorithme de partitionnement.
2. L’objectif est de construire une partition ...
Algorithme Kmeans
Entrée
• E, ensemble de points
• D, distance
• K, nombre de cluster
1. Choisir k objets Mi (i=1..k) form...
Fuzzy K-means : Caractéristiques
Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
Algorithme Fuzzy K-means
Entrée
• ݊ points, ‫ݔ‬௜		݅ ൌ 1. . ݊,
• ܿ nombre de clusters,
• ݉ le degré flou et ߝ		le seuil de ...
Clustering en ligne de commande
• Algorithme canopy en ligne de commande
• Algorithme K-means en ligne de commande
• Algor...
Canopies en ligne de commande
• bin/mahout canopybin/mahout canopybin/mahout canopybin/mahout canopy 
• i <input vectors d...
K-means en ligne de commande
• bin/mahout kmeans 
• i <input vectors directory> 
• c <input clusters directory> 
• o <outp...
Fuzzy K-means en ligne de commande
bin/mahout fkmeans 
• -i <input vectors directory> 
• -c <input clusters directory> 
• ...
API Clustering sous Mahout
• Le package Canopy
• Les packages relatifs à K-means
• Les packages relatifs à Fuzzy K-means
•...
A propos de l’API Clustering
• L’organisation des packages des algorithmes (canopy, k-
means, fuzzy k-means) est similaire...
Package Canopy
• Package org.apache.mahout.clustering.canopy
Ce package présente les classes relatives à l’algorithme
cano...
Package org.apache.mahout.clustering.canopy
• Les classes de ce package :
• CanopyDriver
• Canopy
• CanopyClusterer
• Cano...
La classe canopy
• Cette classe encapsule les données d’un canopy
• Elle étend la classe DistanceMeasureCluster
• Distance...
Classe CanopyClusterer (1)
• Cette classe permet de gérer les canopy
• CanopyMapper, CanopyReducer et CanopyDrivers font
a...
Classe CanopyClusterer (2)
• canopyCovers teste si un point est couvert par un canopy
public boolean canopyCovers(Canopy, ...
La classe CanopyConfigKeys
• C’est une classe finale.
• Elle ne comporte aucune méthode.
• Les attributs portent le qualif...
Les classes CanapyMapper et CanopyReducer
• Les classes CanopyMapper et CanopyReducer sont utilisées
dans le mode parallèl...
La classe CanopyDriver
• La classe principale qui gère les étapes de l’algorithme
• Elle étend AbstractJob
• Les deux prin...
La classe CanopyDriver : séquence d’appel dans run(…)
1. Construire les clusters en appelant buildClusters(..)
a. Si runSe...
Packages relatifs à l’algorithme K-means
• Deux principaux package regroupent les classes de
l’algorithme K-means :
org.ap...
Package org.apache.mahout.clustering.kmeans
• Ce package est composé de plusieurs classes.
• La classe principale est KMea...
La classe KMeansDriver
• Cette classe dispose d’un ensemble de méthodes permettant la
mise en œuvre de l’algorithme K-mean...
La classe KMeansDriver : la méthode run()
• La méthode Run1 fait appel à deux méthodes :
public static Path buildClusters(...
Packages relatifs à l’algorithme Fuzzy K-means
• Deux principaux packages regroupent les classes de
l’algorithme Fuzzy K-m...
Package org.apache.mahout.clustering.fuzzykmeans
• Ce package est composé de plusieurs classes dont la
principale est Fuzz...
La classe FuzzyKMeansDriver
• Cette classe dispose d’un ensemble de méthodes permettant la
mise en œuvre de l’algorithme F...
La classe FUZZYKMeansDriver
• Comme la méthode run() de la classe KmeansDriver, La méthode
run() fait appel à deux méthode...
Arborescence de la classe de type « cluster »
DistanceMeasureCluster
Canopy
AbstractCluster
Object
<<Interface>>
cluster
o...
Arborescence des classes de type Driver
org.apache.hadoop.util.Tool
AbstractJob
CanopyDriver
org.apache.hadoop.conf.Config...
API Math de Mahout
• Interface vector
• Cette interface regroupe un ensemble d’opérations
relatives à un vecteur.
• Packag...
API Math de Mahout
• Fichiers séquentiels
• Objectif : ecrire/lire une paire de key/value.
• Package : org.apache.hadoop.i...
API Math de Mahout
Fichiers séquentiels (Writer et Reader)
• La classe SequenceFile.Writer
SequenceFile.Writer(FileSystem,...
API Math de Mahout
L’interface distance et ses Implémentations
• L’interface DistanceMeasure présente un ensemble de
servi...
Évaluation des clusterings
• Evaluation des algorithmes de clustering
• API Mahout pour l’affichage des clusters
• API Mah...
Évaluation des algorithme de clustering
• Mahout propose des outils pour évaluer la qualité des
résultats obtenus par un a...
Affichage et visualisation des clusters
• Le package org.apache.mahout.utils.clustering propose des
classes dédiées à l’af...
Formats d’affichage des clusters
• Plusieurs classes sont dédiées aux formats d’affichage.
• Ces classes implémentent la c...
La classe ClusterDumper
• ObjectifObjectifObjectifObjectif : Afficher et visualiser les clusters afin d’en apprécier la qu...
Densités Inter-clusters et Intra-clusters
• Pour un grand volume de données, il est impossible d’afficher et
d’observer le...
Distances Inter-clusters et Intra-clusters
• Mahout fournit 2 packages pour :
calculer les distances intra-cluster et inte...
Classe RepresentativePointsDriver (1)
• Cette classe permet de créer et d’afficher les points par itération.
• Il s’agit d...
Classe RepresentativePointsDriver (2)
• Ses méthodes « publics » sont des méthodes de classe (static).
• Notons aussi que ...
Formules des densités Inter/Intra-clusters
(pour la classe ClusterEvaluator )
Mustapha MICHRAFY & Bernard KOUAKOU datascie...
La classe ClusterEvaluator
• Les méthodes sont :
• Map<Map<Map<Map<Integer,VectorInteger,VectorInteger,VectorInteger,Vecto...
La classe CDbwEvaluator (1)
• Le calcul des densités s’appuyent sur la métrique CDBw (Compose
Density between and within c...
La classe CDbwEvaluator (2)
• Constructeurs
public CDbwEvaluator(Map<Integer,List<VectorWritable>>
representativePoints, L...
La classe ClusterDumper et ses dépendances
AbstractClusterWriter
JsonClusterWriter
CvsClusterWriter
GraphClusterWriter
Clu...
Liens entre ClusterEvaluator, CDBwEvaluator,
ClsuterDumper et leurs dépendances
RepresentativePointsDriver
ClusterEvaluato...
Exécution en ligne de commande : ClusterDumper (1)
bin/mahout clusterdump
• input ( i) <input Path to job input directory>...
Exécution en ligne de commande : ClusterDumper (2)
• samplePoints ( sp) <samplePoints Specifies the maximum number of
poin...
ClusterDumper : exemples en ligne de commande
Exemple 1
bin/mahout clusterdump 
-i <OUTPUT DIR>/output/clusters-10-final 
...
Les auteurs
• Mustapha MICHRAFY
• Bull/Fastconnect
• Bernard KOUAKOU
• CGI inc.
Mustapha MICHRAFY & Bernard KOUAKOU datasc...
Références
• Data Mining et statistique décisionnelle, Stéphane TUFFÉRY
• Mahout en Action, Sean Owen, Robin Anil, Ted Dun...
Prochain SlideShare
Chargement dans…5
×

Mahout clustering

2 030 vues

Publié le

Une présentation d’algorithmes de « clustering » implémentés par Apache Mahout.

Publié dans : Données & analyses
0 commentaire
8 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 030
Sur SlideShare
0
Issues des intégrations
0
Intégrations
11
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
8
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Mahout clustering

  1. 1. CLUSTERING SOUS MAHOUT Dr Mustapha MICHRAFY Dr Bernard KOUAKOU Contact des auteurs : datascience.km@gmail.com Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  2. 2. Plan • Présentation de Mahout • Présentation du clustering • Les algorithmes de clustering • Clustering en ligne de commande • API clustering • Évaluation des clusters Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  3. 3. Présentation de Mahout • Objectif • Caractéristique • Compilation des sources • Format et représentation de données Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  4. 4. Présentation de Mahout • Mahout : objectif • Mahout est un API Java dédié aux algorithmes d’apprentissage, à savoir: Recommandation Clustering Classification • Mahout supporte l’écosystème Hadoop Les algorithmes sont programmés sous le paradigme MapReduce Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  5. 5. Mahout : caractéristique • Mahout est un projet Apache, open source • Il est évolutif (« scalable ») • Portable ( API Java) • Algorithmes en deux modes Exécutable sous le framework hadoop En séquentiel Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  6. 6. Mahout : Compilation des sources • Prérequis Maven 2 et plus Java 6 • Étapes de la compilation des sources télécharger les sources de Mahout (Mahout-distribution-version- src.zip) dézipper le fichier téléchargé aller à la racine du dossier Mahout compiler les sources : mvn install Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  7. 7. Mahout : Installation et configuration • Prérequis • Java • Et Hadoop (pour les version mapreduce) • Installation télécharger Mahout (Mahout-distribution-version-src.zip) dézipper le fichier téléchargé dans le dossier home/opt • Configuration • Ajouter le dossier Mahout dans le classpath Ouvrir .bashrc export Mahout_HOME=/home/opt/dossier_Mahout export PATH=$PATH:$MAHOUT_HOME/bin • Pointer sur Hadoop Ouvrir le fichier bin/mahout et fixer la valeur de HADOOP_CONF_DIR HADOOP_CONF_DIR=Home/Path_Hadoop Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  8. 8. Présentation de mahout • Format et représentation de données • Sélection des caractéristiques et vectorisation : Identifier un ensemble de caractéristiques pertinentes des objets à grouper ; Attribuer des valeurs numériques aux caractéristiques retenues pour les objets ; Vectorisation : Représenter chaque objet par un vecteur en utilisant ces valeurs numériques. Si n caractéristiques ont été retenues, alors un vecteur de dimensions n est construit pour chaque objet. • Mahout prend en entrée seulement les fichiers séquentiels Écrire donc tous les vecteurs dans un même fichier de type « SequenceFile ». Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  9. 9. Présentation du clustering • Objectif du Clustering • Classement des méthodes de « Clustering » • Critère de distinction des méthodes • Qualité d’une méthode de clustering • Similarité et dissimilarité Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  10. 10. Présentation du clustering • Clustering : objectif • Il vise à répartir l'échantillon en groupes d'observations homogènes. • Chaque groupe est bien différencié des autres. • Certaines méthodes visent à construire une hiérarchie, c-à- d une suite de partitions « emboîtées », de plus en plus fines, sur un ensemble d'observations (objets) initial. Cette hiérarchie peut être résumée par un arbre hiérarchique. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  11. 11. Présentation du clustering • Classement des méthodes de « Clustering » • Méthodes de type CAH Ce sont les méthodes construisant une hiérarchie par agrégations successives d’objets, puis de groupes, en fonction des distances entre objets ou groupes. • Méthodes de type CDH Elles procèdent par dichotomie itérative : l’ensemble des éléments est divisé en deux, puis chacune de ses parties est, à son tour subdivisée, et ainsi de suite. • Méthode de partitionnement Elles visent à construire une partition de l’ensemble des données initiales selon certains critères. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  12. 12. Présentation du clustering • Critère de distinction des méthodes (1) • Trois points permettent de distinguer les méthodes. • Point 1 : Le principe de construction des groupes Procéder séquentiellement en regroupant les observations les plus « semblables » en premier lieu ; c’est le principe des méthodes hiérarchiques. Ou regrouper simultanément en k groupes toutes les observations. C’est le principe des méthodes non- hiérarchiques. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  13. 13. Présentation du clustering • Critère de distinction des méthodes (2) • Point 2 : Le critère de similarité/distance entre deux observations/variables. • Point 3 : Le critère de similarité/distance entre deux groupes ou entre une observation et un groupe. ??? ??? ??? Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  14. 14. Présentation du clustering • Qualité d’une méthode de clustering (1) • Une bonne méthode produit des clusters ayant : une forte similarité intra‐classe ; une faible similarité inter‐classe. • La qualité d’un clustering dépend de la mesure de similarité. • La qualité d’une méthode peut aussi être mesurée par sa capacité à identifier des motifs pertinents. • En pratique, une fonction est utilisée pour la mesure de la qualité. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  15. 15. Présentation du clustering • Qualité d’une méthode de clustering (2) • la qualité des clusters est étroitement liée au : 1. Système de Pondération Identifier les bonnes caractéristiques à prendre en compte ; Donner un poids (une valeur numérique conséquente) à chacune des caractéristiques. Les valeurs associées à une caractéristique devront être cohérentes, pour l’ensemble des objets. 2. Choix de la Distance Une bonne distance devra pouvoir mettre en lumière les objets similaires et les affecter à un même cluster. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  16. 16. Présentation du clustering Distance Inter-clusters x y (0,0) Grande distance inter-cluster x y (0,0) petite distance inter-cluster Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  17. 17. Présentation du clustering Distance Intra-clusters x y (0,0) Grande distance intra-cluster x y (0,0) petite distance intra-cluster Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  18. 18. Présentation du clutering • Similarité et dissimilarité • Une métrique de similarité/dissimilarité est exprimée par une distance. • La distance dépend du type des données : binaires, nominales, ordinales ou continues. • La pondération des dimensions selon l’application et la sémantique des données. • La notion de similarité est assez difficile à définir : la réponse est très subjective. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  19. 19. Algorithmes de clustering sous Mahout • Mode d’utilisation des algorithmes • Distances sous Mahout • Schéma général des algorithmes • Principe de l’Algorithme de Canopy • Algorithme Canopy • Algorithme K-means • Algorithme Fuzzy K-means Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  20. 20. Algorithmes de clustering sous Mahout • Introduction • Mahout propose plusieurs algorithmes de clustering dont : • Canopy • K-means • Fuzy K-means Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  21. 21. Algorithmes de clustering sous Mahout • Mode d’utilisation des algorithmes • Deux modes d’utilisation des algorithmes sous Mahout 1. Mode 1 : ligne de commande 2. Mode 2 : via l’API Mahout Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  22. 22. Algorithmes de clustering sous Mahout • Données fournies en Entrées des algorithmes • Les vecteurs d’entrée (sous forme de SequenceFile) • Les clusters initiaux ( sous forme de SequenceFile) • La mesure de similarité (Distance) • La précision pour la convergence • Le nombre d’itérations Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  23. 23. Algorithmes de clustering sous Mahout • caractéristique d’une distance • d(x,y) >= 0 • d(x,y) = 0 ssi x = y • La symétrie : d(x,y) = d(y,x) • Inégalité triangulaire : d(x,y) =< d(x,z) + d(z,y) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  24. 24. Algorithmes de clustering sous Mahout • Distances proposées par Mahout • Distance euclidienne d x, y ൌ ∑ ሺ‫ݔ‬௜ െ ‫ݕ‬௜ሻଶ௡ ௜ୀଵ • Squared Euclidean distance measure d x, y ൌ ∑ ሺ‫ݔ‬௜ െ ‫ݕ‬௜ሻଶ௡ ௜ୀଵ • Distance Manhattan d x, y ൌ ∑ ‫ݔ‬௜ െ ‫ݕ‬௜ ௡ ௜ୀଵ • Cosine distance d x, y ൌ 1 െ ∑ ௫೔ ௬೔ ೙ ೔సభ ∑ ௫೔ మ೙ ೔సభ ∑ ௬೔ మ೙ ೔సభ ൘ • DistanceTanimoto d x, y ൌ 1 െ ∑ ‫ݔ‬௜‫ݕ‬௜ ௡ ௜ୀଵ ∑ ‫ݔ‬௜ ଶ௡ ௜ୀଵ ൅ ∑ ‫ݕ‬௜ ଶ௡ ௜ୀଵ െ ∑ ‫ݔ‬௜‫ݕ‬௜ ௡ ௜ୀଵ ൙ Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  25. 25. Algorithmes de clustering sous Mahout Générer les vecteurs via les données Ecrire les vecteurs dans un dossier Ecrire les clusters initiaux Moteur de clustering Clusters générés Schéma général des algorithmes Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  26. 26. Algorithmes de clustering sous Mahout • Algorithme de Canopy : principe • C’est un algorithme de classification non supervisé. • Il vise à construire un des canopy « qui peuvent se chevaucher » d’une manière rapide. • Il fait partie de la phase de prétraitement pour k-means ou clustering hiérarchique. • Il est essentiellement utilisé pour accélérer la mise en place des grappes pour des instances de grande taille. • Cet algorithme ne nécessite pas la spécification du nombre de clusters. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  27. 27. Algorithmes de Canopy 1. Entrée • Ensemble des points E • Distance d • T1 et T2 deux seuils, T1 > T2 2. Sélectionner un élément x au hasard dans E. 3. Créer un canopy Cx en utilisant les y : d(x,y) < T1 4. Supprimer les y de E tels que d(x,y) < T2 5. Si E est non vide, aller à l’étape 2 Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  28. 28. K-means : caractéristiques 1. Il s’agit d’un algorithme de partitionnement. 2. L’objectif est de construire une partition à k clusters d’une base de n objets 3. Chaque cluster est représenté par son centre (centroid) 4. Le nombre k de clusters est une entrée 5. Le codage des variables et la distance utilisée ont un impact sur le résultat. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  29. 29. Algorithme Kmeans Entrée • E, ensemble de points • D, distance • K, nombre de cluster 1. Choisir k objets Mi (i=1..k) formant ainsi k clusters ; 2. Affecter chaque objet O de E au cluster Ch de centre Mh tel que d(O, Mh) est minimale ( d(O,Mh) <= d(O, Mi ), i=1..k) ; 3. Recalculer Mi de chaque cluster (le barycentre) ; 4. Aller à l’étape 2 si on vient de faire une affectation (lors de l’itération courante). Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  30. 30. Fuzzy K-means : Caractéristiques Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  31. 31. Algorithme Fuzzy K-means Entrée • ݊ points, ‫ݔ‬௜ ݅ ൌ 1. . ݊, • ܿ nombre de clusters, • ݉ le degré flou et ߝ le seuil de convergence 1- Choisir aléatoirement c centres ‫ܥ‬௝ ݆ ൌ 1. . ܿ 2- Initialiser la matrice ܷ : ‫ݑ‬௜௝ ൌ ଵ ∑ ೣ೔ష೎ೕ ೣ೔ష೎ೖ మ ೘షభ ೎ ೖసభ 3- À l’étape 3, actualiser d’abord ‫ܥ‬ et puis ܷ ܿ௝ ൌ ∑ ௨೔ೕ ೘ ௫೔ ೙ ೔సభ ∑ ௨೔ೕ ೘೙ ೔సభ ݆ ൌ 1. . ܿ, ݁‫ݑ ݐ‬௜௝ ൌ ଵ ∑ ೣ೔ష೎ೕ ೣ೔ష೎ೖ మ ೘షభ ೎ ೖసభ ݅ ൌ 1. . ݊, ݆ ൌ 1. . ܿ 4- Si max௜௝ ‫ݑ‬௜௝ ௛ାଵ െ ‫ݑ‬௜௝ ௛ ൑ ߝ stop, sinon aller à l étape 3 Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  32. 32. Clustering en ligne de commande • Algorithme canopy en ligne de commande • Algorithme K-means en ligne de commande • Algorithme FuzzyKemans en ligne de commande Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  33. 33. Canopies en ligne de commande • bin/mahout canopybin/mahout canopybin/mahout canopybin/mahout canopy • i <input vectors directory> • o <output working directory> • dm <DistanceMeasure> • t1 <T1 threshold> • t2 <T2 threshold> • t3 <optional reducer T1 threshold> • t4 <optional reducer T2 threshold> • cf <optional cluster filter size (default: 0)> • ow <overwrite output directory if present> • cl <run input vector clustering after computing Canopies> • xm <execution method: sequential or mapreduce> Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  34. 34. K-means en ligne de commande • bin/mahout kmeans • i <input vectors directory> • c <input clusters directory> • o <output working directory> • k <optional number of initial clusters to sample from input vectors> • dm <DistanceMeasure> • x <maximum number of iterations> • cd <optional convergence delta. Default is 0.5> • ow <overwrite output directory if present> • cl <run input vector clustering after computing Canopies> • xm <execution method: sequential or mapreduce> Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  35. 35. Fuzzy K-means en ligne de commande bin/mahout fkmeans • -i <input vectors directory> • -c <input clusters directory> • -o <output working directory> • -dm <DistanceMeasure> • -m <fuzziness argument >1> • -x <maximum number of iterations> • -k <optional number of initial clusters to sample from input vectors> • -cd <optional convergence delta. Default is 0.5> • -ow <overwrite output directory if present> • -cl <run input vector clustering after computing Clusters> • -e <emit vectors to most likely cluster during clustering> • -t <threshold to use for clustering if -e is false> • -xm <execution method: sequential or mapreduce> Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  36. 36. API Clustering sous Mahout • Le package Canopy • Les packages relatifs à K-means • Les packages relatifs à Fuzzy K-means • L’arborescence des classes de type driver • L’arborescence des classe de type cluster Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  37. 37. A propos de l’API Clustering • L’organisation des packages des algorithmes (canopy, k- means, fuzzy k-means) est similaire. • Chacun des trois algorithmes repose sur une classe driver CanopyDriver pour l’algorithme canopy KMeansDriver pour pour l’algorithme k-means FuzzyKMeansDriver pour l’algorithme Fuzzy K-means • La structure des trois classes drivers est similaire. • Les classes drivers disposent des mêmes méthodes : run, buildcluster, clusterData • La description de l’API concerne la version 0.9 de Mahout. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  38. 38. Package Canopy • Package org.apache.mahout.clustering.canopy Ce package présente les classes relatives à l’algorithme canopy pour les modes séquentiel et parallèle (mapreduce). • CanopyDriver C’est la classe principale. C’est le point d’entrée de l’algorithme. Cette classe encapsule les étapes de l’algorithme canopy pour les différents modes d’exécution. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  39. 39. Package org.apache.mahout.clustering.canopy • Les classes de ce package : • CanopyDriver • Canopy • CanopyClusterer • CanopyConfigKeys • CanopyMapper • CanopyReducer Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  40. 40. La classe canopy • Cette classe encapsule les données d’un canopy • Elle étend la classe DistanceMeasureCluster • DistanceMeasureCluster étend AbstractCluster • AstractCluster implémente Cluster • Constructeurs public Canopy() public Canopy(Vector center, int canopyId, DistanceMeasure measure) • Services Creer un canopy Calculer le barycentre Ajouter un point a un canopy Et des getters et setters Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  41. 41. Classe CanopyClusterer (1) • Cette classe permet de gérer les canopy • CanopyMapper, CanopyReducer et CanopyDrivers font appel à cette classe. • Constructeurs public CanopyClusterer(DistanceMeasure measure, double t1, double t2) public CanopyClusterer(Configuration config) • Services • addPointToCanopie ajoute un point aux canopy public void addPointToCanopies(Vector, Collection<Canopy> ) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  42. 42. Classe CanopyClusterer (2) • canopyCovers teste si un point est couvert par un canopy public boolean canopyCovers(Canopy, Vector) • createCanopies crée des canopy en utilisant vecteurs et seuils public static List<Canopy> createCanopies(List<Vector> points, DistanceMeasure measure, double t1, double t2) • getCenters retourne les barycentres des canopy public static List<Vector> getCenters(Iterable<Canopy> canopies) • updateCentroid actualise le barycentre de chaque canopy public static void updateCentroids(Iterable<Canopy> canopies) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  43. 43. La classe CanopyConfigKeys • C’est une classe finale. • Elle ne comporte aucune méthode. • Les attributs portent le qualificatif public static final. • Elle encapsule l’ensemble des clés utilisées relatives au seuil de canopy. • Elle encapsule aussi la mesure de la distance. • Elle dispose d’un constructeur sans arguments. • Les attributs de cette classe sont utilisés par les classes CanopyMapper, CanopyRudcer, CanopyDriver et CanopyClusterer Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  44. 44. Les classes CanapyMapper et CanopyReducer • Les classes CanopyMapper et CanopyReducer sont utilisées dans le mode parallèle pour construire les canopy. • Elles sont appelées par la méthode buildClustersMR de la classe CanopyDriver • CanopyMapper redéfinit la méthode mapper() ainsi que stup() et cleanup(). • CanopyReducer redéfinit les méthodes reducer() et stup() • Les deux classes CanopyMapper et CanopyReducer font appel aux classes Canoyp, CanopyClusterer et CanopyConfig Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  45. 45. La classe CanopyDriver • La classe principale qui gère les étapes de l’algorithme • Elle étend AbstractJob • Les deux principales méthodes sont public static void run(…) public static Path buildClusters(…) • Les méthodes précédentes font appel à : Algorithme séquentielAlgorithme séquentielAlgorithme séquentielAlgorithme séquentiel : private static Path buildClustersSeq(…) Algorithme parallèleAlgorithme parallèleAlgorithme parallèleAlgorithme parallèle : private static Path buildClustersMR(…) Calcul des points des clustersCalcul des points des clustersCalcul des points des clustersCalcul des points des clusters : private static void clusterData (…) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  46. 46. La classe CanopyDriver : séquence d’appel dans run(…) 1. Construire les clusters en appelant buildClusters(..) a. Si runSequentiel = true alors - Appeler la méthode séquentielle buildClustersSeq(…) b. Sinon Appeler la méthode parallèle buildClustersMR() 2. Calculer des points de chaque clusters a. Si runClustering = true alors - Appeler la méthode clusterData() b. Fin Si Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  47. 47. Packages relatifs à l’algorithme K-means • Deux principaux package regroupent les classes de l’algorithme K-means : org.apache.mahout.clustering.kmeans ; org.apache.mahout.clustering.iterator. • Le package org.apache.mahout.clustering.kmeans pilote les différentes étapes de l’algorithme k means. • Le package org.apache.mahout.clustering.iterator se charge de l’implémentation des algorithmes séquentiel et parallèle de k means. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  48. 48. Package org.apache.mahout.clustering.kmeans • Ce package est composé de plusieurs classes. • La classe principale est KMeansDriver . • C’est la classe KMeansDriver qui sera utilisée via l’API. • Les classes de ce package sont : Kluster : elle permet de créer un cluster. Elle étend DistanceMeasureCluster KMeansUtil : C’est une classe finale qui permet de créer une liste de kluster. KMeansConfigKeys : il dispose des clés qui seront utilisées par la configuration relative à mapreduce KMeansDriver : c’est la classe principale disposant des méthodes qui seront exploitées via l’API pour l’algorithme K- means Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  49. 49. La classe KMeansDriver • Cette classe dispose d’un ensemble de méthodes permettant la mise en œuvre de l’algorithme K-means. • La méthode principale est run(…) • La méthode run à trois signatures différentes. • Deux méthodes statiques et une public non statique. 1. Run1 : publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid runrunrunrun(Configuration conf, Path input, Path clustersIn, Path output, double convergenceDelta, int maxIterations, boolean runClustering, double clusterClassificationThreshold, boolean runSequential) 2. Run2 : publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid runrunrunrun(Path input, Path , Path double , int , boolean , double, boolean ) 3. Run3 : publicpublicpublicpublic intintintint runrunrunrun(String[] ) • Run2 crée une configuration et fait appel à Run1. • Run3, utilisée via la ligne de commande, instancie les données et fait appel à Run1. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  50. 50. La classe KMeansDriver : la méthode run() • La méthode Run1 fait appel à deux méthodes : public static Path buildClusters(Configuration conf, Path input, Path clustersIn, Path output, int maxIterations, String delta, boolean runSequential) public static void clusterData(Configuration conf, Path input, Path clustersIn, Path output, double clusterClassificationThreshold, boolean runSequential) • Les arguments de la méthodes run() input, clustersIn, output : les dossiers pour les vecteurs d’entrée, les clusters initiaux, et le dossier de sortie. Les fichiers utilisés sont de type séquentiel (SequenceFile). Le dossier de sortie de l’itération courante est utilisé comme entrée pour l’itération suivante convergenceDelta : un nombre réel positif est utilisé pour la convergence. clusterClassificationThreshold : il doit être dans [0,1], utilisé dans clusterData() pour la constitution des points relatifs à chaque cluster. maxIterations : le nombre maximum d’itérations fixé pour le calcul des clusters. runSequential : il détermine le mode d’exécution ( séquentiel ou parallèle) runClustering : si sa valeur est vraie, les points des clusters sont calculés et stockés dans un dossier nommé clusteredPoints. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  51. 51. Packages relatifs à l’algorithme Fuzzy K-means • Deux principaux packages regroupent les classes de l’algorithme Fuzzy K-means : org.apache.mahout.clustering. fuzzykmeans org.apache.mahout.clustering.iterator • Le package org.apache.mahout.clustering. fuzzykmeans pilote les différentes étapes de l’algorithme Fuzzy k means. Ce dernier à une structure similaire à celle du package de K means. • Le package org.apache.mahout.clustering.iterator se charge de l’implemantation des algorithmes séquentiel et parallèle de l’algorithme Fuzzy k means. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  52. 52. Package org.apache.mahout.clustering.fuzzykmeans • Ce package est composé de plusieurs classes dont la principale est FuzzyKMeansDriver . • Les classes de ce package sont : SoftCluster : elle permet de créer un cluster. Elle étend Kluster. FuzzyKMeansUtil : C’est une classe finale qui permet de créer une liste de SoftCluster. FuzzyKMeansClusterer : elle permet de calculer le degré d’affinité d’un point par rapport à un cluster. FuzzyKMeansConfigKeys : elle dispose d’une clé qui sera utilisée par la configuration relative à mapreduce. FuzzyKMeansDriver : c’est la classe principale disposant des méthodes qui seront exploitées via l’API. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  53. 53. La classe FuzzyKMeansDriver • Cette classe dispose d’un ensemble de méthodes permettant la mise en œuvre de l’algorithme Fuzzy K-Means. • Cette classe est très similaire à la classe KmeansDriver. • La méthode principale est run(…). • La méthode run() à trois signatures différentes : 1. Run1 : publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid runrunrunrun(Configuration conf, Path input, Path clustersIn, Path output, double convergenceDelta, int maxIterations, floatfloatfloatfloat mmmm, boolean runClustering, booleanbooleanbooleanboolean emitMostLikelyemitMostLikelyemitMostLikelyemitMostLikely, double threshold,, boolean runSequential) 2. Run2 : publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid runrunrunrun(Path input, Path , Path, double , int, floatfloatfloatfloat ,,,, boolean , booleanbooleanbooleanboolean ,,,, double , boolean ) 3. Run3 : publicpublicpublicpublic intintintint runrunrunrun(String[] ) • Run3 instancie les données et fait appel à Run1. • la méthode Run3 est utilisée via la ligne de commande. • Run2 ne dispose pas d’une configuration comme argument d’entrée. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  54. 54. La classe FUZZYKMeansDriver • Comme la méthode run() de la classe KmeansDriver, La méthode run() fait appel à deux méthodes : void buildClusters( …) Void clusterData() • Les arguments de la méthode run() : float m : ce paramètre, spécifique à l’algorithme fuzzy k-means, décrit le degré d’affinité. boolean emitMostLikely : si sa valeur est « vraie », on associe le cluster le plus probable à chaque point. double threshold : il est utilisé si emitMostLikely est « false ». Il est similaire à clusterClassificationThreshol utilisé dans la méthode run de l’algorithme KmeansDriver. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  55. 55. Arborescence de la classe de type « cluster » DistanceMeasureCluster Canopy AbstractCluster Object <<Interface>> cluster org.apache.hadoop.util.Tool Kluster <<Interface>> Model bind<VectorWritable> <<Interface>> Parametered Arborescence de la classe Canopy et Kluster SoftCluster Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  56. 56. Arborescence des classes de type Driver org.apache.hadoop.util.Tool AbstractJob CanopyDriver org.apache.hadoop.conf.Configured Interface org.apache.hadoop.util.Tool KmeansDriver FuzzyKMeansDriver SpectralKMeansDriver Interface org.apache.hadoop.conf.Configurable Java.lang.Object Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  57. 57. API Math de Mahout • Interface vector • Cette interface regroupe un ensemble d’opérations relatives à un vecteur. • Package : org.apache.mahout.math • Interface Matrix • Cette interface regroupe un ensemble d’opérations relatives à une matrice. • Package : org.apache.mahout.math Les deux interfaces sont implémentées par plusieurs classes (voir la doc). Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  58. 58. API Math de Mahout • Fichiers séquentiels • Objectif : ecrire/lire une paire de key/value. • Package : org.apache.hadoop.io.SequenceFile • SequenceFile est un format Hadoop pour encoder une série de clé-valeur. • SequenceFile fournit deux classes internes : Writer et Reader • La clé et la valeur doivent respectivement implémenter les interfaces WritableComparable et Writable de hadoop. • Les classes SequenceFile.Writer et SequenceFile.Reader sont utilisées pour la génération des données sous forme d’un fichier séquentiel ou la lecture des fichiers des clusters. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  59. 59. API Math de Mahout Fichiers séquentiels (Writer et Reader) • La classe SequenceFile.Writer SequenceFile.Writer(FileSystem, Configuration, Path,Class,Class) constructeurconstructeurconstructeurconstructeur void append(Object key, Object val) ajouterajouterajouterajouter ((((kyekyekyekye,,,, valvalvalval) de type object) de type object) de type object) de type object. void append(Writable key, Writable val) ajouterajouterajouterajouter un (key,un (key,un (key,un (key, valvalvalval)))) void close() fermerfermerfermerfermer lelelele fichierfichierfichierfichier • La classe SequenceFile.Reader SequenceFile.Reader(FileSystem, Path, Configuration) constructeurconstructeurconstructeurconstructeur Class<?> getKeyClass() renvoyerrenvoyerrenvoyerrenvoyer lalalala classeclasseclasseclasse de lade lade lade la cléclécléclé Class<?> getValueClass() renvoyer la classe de la valeurrenvoyer la classe de la valeurrenvoyer la classe de la valeurrenvoyer la classe de la valeur boolean next(Writable key, Writable val) lire lalire lalire lalire la prochaineprochaineprochaineprochaine pair <key, value>pair <key, value>pair <key, value>pair <key, value> void close() fermerfermerfermerfermer lelelele fichierfichierfichierfichier Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  60. 60. API Math de Mahout L’interface distance et ses Implémentations • L’interface DistanceMeasure présente un ensemble de services relatifs à une distance. • Package : org.apache.mahout.common.distance • Cette interface est implémentée par plusieurs classes dont : • EuclideanDistanceMeasure : distance euclidienne 2 d • SquaredEuclideanDistanceMeasure : distance euclidienne • ManhattanDistanceMeasure : Distance de Manhattan • CosineDistanceMeasure : distance cosinus • TanimotoDistanceMeasure : distance de Tanimoto • etc. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  61. 61. Évaluation des clusterings • Evaluation des algorithmes de clustering • API Mahout pour l’affichage des clusters • API Mahout pour l’évaluation des clusters • Diagrammes et relation de dépendance • Exécution en ligne de commande Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  62. 62. Évaluation des algorithme de clustering • Mahout propose des outils pour évaluer la qualité des résultats obtenus par un algorithme de clustering. • L’évaluation d’un clustering se fait à travers : 1. L’affichage et la visualisation des clusters générés ; 2. L’étude de la distance intra-clusters et inter-clusters. • Trois packages sont dédiés à l’analyse et à l’évaluation des clusters : 1. org.apache.mahout.utils.clustering 2. org.apache.mahout.clustering.evaluation 3. package org.apache.mahout.clustering.cdbw • Ces 3 packages sont dans le module « integration » de la version 0.9 de Mahout. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  63. 63. Affichage et visualisation des clusters • Le package org.apache.mahout.utils.clustering propose des classes dédiées à l’affichage sous différents formats. • La classe clé du package est ClusterDumper. • ClusterDumper affiche les clusters selon le format spécifié. • Elle supporte plusieurs formats : TEXT, CSV, JSON, GRAPH_ML • L’affichage par format est délégué à des classes du package. • ClusterDumper est une classe finale et étend la classe AbstractJob. • ClusterDumper peut être utilisée via l’API Mahout ou en ligne de commande en passant par bin/bin/bin/bin/mahoutmahoutmahoutmahout.... Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  64. 64. Formats d’affichage des clusters • Plusieurs classes sont dédiées aux formats d’affichage. • Ces classes implémentent la classe abstraite AbstractClusterWriterAbstractClusterWriterAbstractClusterWriterAbstractClusterWriter • AbstractClusterWriterAbstractClusterWriterAbstractClusterWriterAbstractClusterWriter implémente l’interface ClusterWriterClusterWriterClusterWriterClusterWriter. • ClusterWriterClusterWriterClusterWriterClusterWriter dispose d’une seule méthode writewritewritewrite avec 3 signatures pour afficher une liste de clusters de type ClusterWritableClusterWritableClusterWritableClusterWritable. • Mahout offre 4 implémentations de la classe AbstractClusterWriterAbstractClusterWriterAbstractClusterWriterAbstractClusterWriter : 1.1.1.1. ClusterDumperWriterClusterDumperWriterClusterDumperWriterClusterDumperWriter pour générer du format TEXTTEXTTEXTTEXT 2.2.2.2. CSVClusterWriterCSVClusterWriterCSVClusterWriterCSVClusterWriter pour générer du format CVSCVSCVSCVS 3.3.3.3. GraphMLClusterWriterGraphMLClusterWriterGraphMLClusterWriterGraphMLClusterWriter pour générer du format GraphMLGraphMLGraphMLGraphML 4.4.4.4. JsonClusterWriterJsonClusterWriterJsonClusterWriterJsonClusterWriter pour générer du format JSONJSONJSONJSON • Le format se configure via la classe ClusterDumperClusterDumperClusterDumperClusterDumper avec la méthode setOutputFormatsetOutputFormatsetOutputFormatsetOutputFormat (), option(), option(), option(), option of en ligne de commande.of en ligne de commande.of en ligne de commande.of en ligne de commande. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  65. 65. La classe ClusterDumper • ObjectifObjectifObjectifObjectif : Afficher et visualiser les clusters afin d’en apprécier la qualité. • Elle transforme les résultats de type SequenceFile en un format lisible. • Trois principales méthodesTrois principales méthodesTrois principales méthodesTrois principales méthodes voidvoidvoidvoid printClustersprintClustersprintClustersprintClusters(String[](String[](String[](String[] dictionarydictionarydictionarydictionary)))) : pour afficher les clusters ; publicpublicpublicpublic intintintint runrunrunrun(String[](String[](String[](String[] argsargsargsargs)))) : pour lancer l’affichage en ligne de commande via bin/mahout. Cette méthode fait appel à printClustersprintClustersprintClustersprintClusters() ;() ;() ;() ; voidvoidvoidvoid setOutputFormatsetOutputFormatsetOutputFormatsetOutputFormat(OUTPUT_FORMAT of(OUTPUT_FORMAT of(OUTPUT_FORMAT of(OUTPUT_FORMAT of)))) : pour fixer le format d’affichage. OUTPUT_FORMAT est un champs public, de type énumération de la classe ClusterDumper, permettant de spécifier le format d’affichage. • ConstructeursConstructeursConstructeursConstructeurs public ClusterDumper(Path seqFileClusterIn, Path pointsClustered) ; public ClusterDumper(). Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  66. 66. Densités Inter-clusters et Intra-clusters • Pour un grand volume de données, il est impossible d’afficher et d’observer les clusters. • L’alternative est d’utiliser les distances Inter-clusters et Intra- clusters mesurant resp. la séparation et la compacité des clusters • Distance Inter-clusters vise à : • évaluer la distance entre chaque paire de centroids ; • mesurer l’éloignement/rapprochement des clusters. • Distance Intra-clusters vise à : • évaluer la distance entre chaque paire d’objets du même cluster ; • mesurer le rapprochement des points au sein du même cluster ; • exprimer la capacité de la mesure de similarité à retrouver et regrouper des objets similaires. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  67. 67. Distances Inter-clusters et Intra-clusters • Mahout fournit 2 packages pour : calculer les distances intra-cluster et inter-cluster ; calculer et afficher les points des différents clusters. • Les packages sont : org.apache.mahout.clustering.evaluation ; org.apache.mahout.clustering.cdbw. • Les 3 principales classes sont : RepresentativePointsDriverRepresentativePointsDriverRepresentativePointsDriverRepresentativePointsDriver : pour calculer et afficher les points des clusters ; ClusterEvaluatorClusterEvaluatorClusterEvaluatorClusterEvaluator : pour calculer les distances intra/inter clusters ; CDbwEvaluatorCDbwEvaluatorCDbwEvaluatorCDbwEvaluator : pour calculer densité intra/inter clusters à l’aide de la méthode CDbw. • En mode parallèle, la classe RepresentativePointsDriver fait appel aux classes suivantes : RepresentativePointsMapperRepresentativePointsMapperRepresentativePointsMapperRepresentativePointsMapper RepresentativePointsReducerRepresentativePointsReducerRepresentativePointsReducerRepresentativePointsReducer Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  68. 68. Classe RepresentativePointsDriver (1) • Cette classe permet de créer et d’afficher les points par itération. • Il s’agit d’une classe finale, qui étend la classe AbstractJobAbstractJobAbstractJobAbstractJob.... • Elle est aussi utilisée lors du calcul des densités intra-cluster par les classes d’évaluation ClusterEvaluatorClusterEvaluatorClusterEvaluatorClusterEvaluator etetetet CDbwEvaluatorCDbwEvaluatorCDbwEvaluatorCDbwEvaluator.... • CetteCetteCetteCette classeclasseclasseclasse doitdoitdoitdoit etreetreetreetre appeléeappeléeappeléeappelée apresapresapresapres avoiravoiravoiravoir calculécalculécalculécalculé les clustersles clustersles clustersles clusters ainsiainsiainsiainsi quequequeque les points.les points.les points.les points. • LesLesLesLes deuxdeuxdeuxdeux principalesprincipalesprincipalesprincipales méthodesméthodesméthodesméthodes de lade lade lade la classeclasseclasseclasse sontsontsontsont : Run ()Run ()Run ()Run () : pour calculer les points à chaque itération printRepresentativePoints (..) : pour afficher les points par itération en utilisant les données générées par la méthode run(). L’argument runSequential de run() précise le mode d’exécution : runSequential égal « true », pour le mode séquentiel ; runSequentiel égal « false », pour le mode parallèle. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  69. 69. Classe RepresentativePointsDriver (2) • Ses méthodes « publics » sont des méthodes de classe (static). • Notons aussi que la classe est finale et a d’un constructeur privé. • Les méthodes « public » sont : publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid runrunrunrun(Configuration(Configuration(Configuration(Configuration confconfconfconf,,,, PathPathPathPath clustersInclustersInclustersInclustersIn,,,, PathPathPathPath clusteredPointsInclusteredPointsInclusteredPointsInclusteredPointsIn,,,, PathPathPathPath output,output,output,output, DistanceMeasureDistanceMeasureDistanceMeasureDistanceMeasure measuremeasuremeasuremeasure,,,, intintintint numIterationsnumIterationsnumIterationsnumIterations,,,, booleanbooleanbooleanboolean runSequentialrunSequentialrunSequentialrunSequential) throws IOException, InterruptedException : calculer les points/iteration publicpublicpublicpublic intintintint run(String[]run(String[]run(String[]run(String[] argsargsargsargs)))) throws ClassNotFoundException, IOException, InterruptedException : constituer les params et fait appel à la methode run() precedente. publicpublicpublicpublic staticstaticstaticstatic voidvoidvoidvoid printRepresentativePointsprintRepresentativePointsprintRepresentativePointsprintRepresentativePoints((((PathPathPathPath output,output,output,output, intintintint numIterationsnumIterationsnumIterationsnumIterations)))) : afficher les points pour les iterations k ( k < numIterations). Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  70. 70. Formules des densités Inter/Intra-clusters (pour la classe ClusterEvaluator ) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  71. 71. La classe ClusterEvaluator • Les méthodes sont : • Map<Map<Map<Map<Integer,VectorInteger,VectorInteger,VectorInteger,Vector>>>> interClusterDistancesinterClusterDistancesinterClusterDistancesinterClusterDistances()()()() Calculer la distance pour chaque paire de «centroids». • doubledoubledoubledouble interClusterDensityinterClusterDensityinterClusterDensityinterClusterDensity()()()() Calculer la densité inter clusters ; Cette méthode fait appel à la méthode interClusterDistances() . • publicpublicpublicpublic Map<Map<Map<Map<Integer,VectorInteger,VectorInteger,VectorInteger,Vector>>>> interClusterDistancesinterClusterDistancesinterClusterDistancesinterClusterDistances()()()() Calculer la distance entre chaque paire de points du meme cluster. • doubledoubledoubledouble intraClusterDensityintraClusterDensityintraClusterDensityintraClusterDensity()()()() Calculer la densité intra cluster ; Cette méthode fait appel à la méthode interClusterDistances(). • Deux Constructeurs • publicpublicpublicpublic ClusterEvaluatorClusterEvaluatorClusterEvaluatorClusterEvaluator(Map<(Map<(Map<(Map<Integer,ListInteger,ListInteger,ListInteger,List<<<<VectorWritableVectorWritableVectorWritableVectorWritable>>,>>,>>,>>, List<Cluster> ,List<Cluster> ,List<Cluster> ,List<Cluster> , DistanceMeasureDistanceMeasureDistanceMeasureDistanceMeasure)))) • ClusterEvaluatorClusterEvaluatorClusterEvaluatorClusterEvaluator(Configuration(Configuration(Configuration(Configuration confconfconfconf,,,, PathPathPathPath clustersInclustersInclustersInclustersIn)))) Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  72. 72. La classe CDbwEvaluator (1) • Le calcul des densités s’appuyent sur la métrique CDBw (Compose Density between and within clusters). • CDbwEvaluator appartient au package org.apache.mahout.clustering.cdbw. • CDbw utilise un ensemble de points pour représenter le cluster (à l’inverse des approches utilisant le centroid). • La compacité des clusters est évaluée par la formule d’intra-cluster density. • La séparation des clusters est évaluée par une formule qui tient à la fois compte des distances entre les clusters et l’intra-cluster density. • La classe ClusterDumper fait appel aux méthodes de la classe CDBwEvaluator pour l’évaluation des clusters. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  73. 73. La classe CDbwEvaluator (2) • Constructeurs public CDbwEvaluator(Map<Integer,List<VectorWritable>> representativePoints, List<Cluster> clusters, DistanceMeasure measure) ; public CDbwEvaluator(Configuration conf, Path clustersIn). • Les principales méthodes publics sont : public doublepublic doublepublic doublepublic double intraClusterDensityintraClusterDensityintraClusterDensityintraClusterDensity()()()() : evalue le pourcentage de points appartenant au voisinage des points choisis pour représenter les clusters. L’objectif étant d’avoir une valeur élevée de cette densité. publicpublicpublicpublic doubledoubledoubledouble interClusterDensityinterClusterDensityinterClusterDensityinterClusterDensity()()()() : evalue la densité moyenne des points dans les zones situées entre les clusters. L’objectif étant d’avoir la plus faible densité pour ces régions. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  74. 74. La classe ClusterDumper et ses dépendances AbstractClusterWriter JsonClusterWriter CvsClusterWriter GraphClusterWriter ClusterDumperWriter Closeable AbstractJob ClusterDumper <<Interface>> ClusterWriter Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  75. 75. Liens entre ClusterEvaluator, CDBwEvaluator, ClsuterDumper et leurs dépendances RepresentativePointsDriver ClusterEvaluator CDbwEvaluator AbstractJob RepresentativePointsMapper RepresentativePointsReducer ClusterDumper Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  76. 76. Exécution en ligne de commande : ClusterDumper (1) bin/mahout clusterdump • input ( i) <input Path to job input directory> • output ( o) < output file; if not specified, it prints the output to the console.> • outputFormat ( of) <outputFormat The optional output format for the results. Options: TEXT, CSV, JSON or GRAPH_ML .> • substring ( b) <substring The number of chars of the asFormatString() to print> • evaluate ( e) <Run ClusterEvaluator and CDbwEvaluator over the input. The output will be appended to the rest of the output at the end. > Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  77. 77. Exécution en ligne de commande : ClusterDumper (2) • samplePoints ( sp) <samplePoints Specifies the maximum number of points to include per cluster. The default is to include all points. > • distanceMeasure ( dm) <distanceMeasure The classname of the DistanceMeasure. Default is SquaredEuclidean > • dictionary ( d) <The dictionary file that contains the reverse mapping of integer ID to word.> • dictionaryType ( dt) <dictionaryType The dictionary file type (text|sequencefile); defaulted to ‘text’ .> • numWords ( n) <The number of top terms to print, defaulted to 10> • pointsDir ( p) <pointsDir The directory containing points sequence files mapping input vectors to their cluster. If specified, then the program will output the points associated with a cluster. > Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  78. 78. ClusterDumper : exemples en ligne de commande Exemple 1 bin/mahout clusterdump -i <OUTPUT DIR>/output/clusters-10-final -o <OUTPUT DIR>/output/clustersanalyze.txt Exemple 2 • l’option –-evaluate permet de calculer les distances Inter et Intra-clusters • bin/mahout clusterdump -i <OUTPUT DIR>/output/clusters-10-final -p <OUTPUT DIR>/output/clusteredPoints -o /clusterPointsanalyze.txt --evaluate Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com
  79. 79. Les auteurs • Mustapha MICHRAFY • Bull/Fastconnect • Bernard KOUAKOU • CGI inc. Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com Contact des auteurs : datascience.km@gmail.com
  80. 80. Références • Data Mining et statistique décisionnelle, Stéphane TUFFÉRY • Mahout en Action, Sean Owen, Robin Anil, Ted Dunning, Ellen Friedman • Site web de mahout : http://mahout.apache.org/ • Mahout 0.9 API : https://builds.apache.org/job/Mahout Quality/javadoc/ • Évaluation CDbw : http://www.db net.aueb.gr/files/HV_shortSETN02.pdf • Mahout svn (vesrion 0.1 à 0.9) : http://svn.apache.org/repos/asf/mahout/tags/ • Mahout svn (version plus récente dans trunk) : http://svn.apache.org/repos/asf/mahout/trunk/ Mustapha MICHRAFY & Bernard KOUAKOU datascience.km@gmail.com

×