Machine Learning avec Weka Module X8II090 - Cours 2 Florian Boudin Département informatique, Université de Nantes Révision 1 du 4 janvier 2012 Plan Préambule Clustering Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 2 sur 47 Quiz sur les notions vues précédemment 1. Qu’est ce que Weka ? 2. Quel est l’évaluation la plus fiable ? l’algo le plus performant ? I I I Algo1, 81.3% d’instances correctement classées en découpage 23 / 13 Algo2, 78.4% de précision en validation croisée 10 strates Algo3, 72.1% de f-mesure en validation croisée 10 strates 3. A quoi sert une matrice de coût ? 04 jan 2012 / Rév. 1 - page 3 sur 47 Quiz sur les notions vues précédemment 1. Qu’est ce que Weka ? I Suite de logiciels d’apprentissage automatique et d’exploration de données écrite en Java 2. Quel est l’évaluation la plus fiable ? l’algo le plus performant ? I I I Algo1, 81.3% d’instances correctement classées en découpage 23 / 13 Algo2, 78.4% de précision en validation croisée 10 strates Algo3, 72.1% de f-mesure en validation croisée 10 strates 3. A quoi sert une matrice de coût ? I Les erreurs des classifieurs sont inévitables puisqu’aucun modèle n’est parfait ! Les matrices de coût permettent d’intégrer le fait que certaines erreurs sont pires que d’autres 04 jan 2012 / Rév. 1 - page 3 sur 47 Le problème des probabilités nulles Taille Style Utilité Mignon petit petit grand grand coloré pas coloré coloré pas coloré utile inutile inutile utile oui oui non non petit coloré inutile ??? I Calculer P(oui|E) et P(non|E) I Rappel : P(H|E) = P(E|H)×P(H) P(E) 04 jan 2012 / Rév. 1 - page 4 sur 47 Le problème des probabilités nulles Taille Style Utilité Mignon petit petit grand grand coloré pas coloré coloré pas coloré utile inutile inutile utile oui oui non non petit coloré inutile ??? P(oui|E) = P(oui|E) = P(non|E) = P(non|E) = I Calculer P(oui|E) et P(non|E) I Rappel : P(H|E) = P(E|H)×P(H) P(E) P(petit|oui) · P(coloré|oui) · P(inutile|oui) · P(oui) /P(E) 2/2 · 1/2 · 1/2 · 1/2 = 0.125 P(petit|non) · P(coloré|non) · P(inutile|non) · P(non) /P(E) 0/2 · 1/2 · 1/2 · 1/2 = 0 → Lissage 04 jan 2012 / Rév. 1 - page 4 sur 47 Détails de la sortie par défaut (1) I Classifieur J48, découpage 66-33, données Titanic Time taken to build model: 0 seconds === Evaluation on test split === Correctly Classified Instances 578 77.2727 % Incorrectly Classified Instances 170 22.7273 % Kappa statistic 0.3803 -> mesure le taux de correlation Mean absolute error 0.3259 Root mean squared error 0.4079 Relative absolute error 74.3732 % Root relative squared error 86.9037 % -> utilise pour la prediction numerique -> mesure l'amplitude des erreurs Total Number of Instances 748 04 jan 2012 / Rév. 1 - page 5 sur 47 Détails de la sortie par défaut (2) === Detailed Accuracy By Class === TP Rate FP Rate Prec. Recall F-Meas. ROC Area Class 0.327 0.01 0.941 0.327 0.485 0.703 yes 0.99 0.673 0.751 0.99 0.854 0.703 no 0.773 0.456 0.813 0.773 0.733 0.703 -> details des mesures pour chaque classe -> ROC area = aire sous la courbe ROC -> (true positive rate vs false positive rate) === Confusion Matrix === a b <-- classified as 80 165 | a = yes 5 498 | b = no -> Matrice de confusion (voir cours 1) 04 jan 2012 / Rév. 1 - page 6 sur 47 Détails de la sortie par défaut (3) J48 pruned tree -----------------sex = male | class = 1st | | age = adult: no (175.0/57.0) | | age = child: yes (5.0) | class = 2nd | | age = adult: no (168.0/14.0) | | age = child: yes (11.0) | class = 3rd: no (510.0/88.0) | class = crew: no (862.0/192.0) sex = female | class = 1st: yes (145.0/4.0) | class = 2nd: yes (106.0/13.0) | class = 3rd: no (196.0/90.0) | class = crew: yes (23.0/3.0) 04 jan 2012 / Rév. 1 - page 7 sur 47 Plan Préambule Clustering Introduction Présentation de KMeans Clustering hierarchique Clustering avec Weka Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 8 sur 47 Apprentissage supervisé vs non-supervisé Apprentissage supervisé Apprentissage non supervisé x2 x1 Ensemble d’entrainement : {(x(1) , y(1) ), (x(2) , y(2) ), · · · (x(m) , y(m) )} Ensemble d’entrainement : {x(1) , x(2) , · · · x(m) } 04 jan 2012 / Rév. 1 - page 9 sur 47 Apprentissage supervisé vs non-supervisé Apprentissage supervisé Apprentissage non supervisé x2 x1 Ensemble d’entrainement : {(x(1) , y(1) ), (x(2) , y(2) ), · · · (x(m) , y(m) )} Ensemble d’entrainement : {x(1) , x(2) , · · · x(m) } 04 jan 2012 / Rév. 1 - page 9 sur 47 Apprentissage supervisé vs non-supervisé Apprentissage supervisé x2 Apprentissage non supervisé x2 x1 Ensemble d’entrainement : {(x(1) , y(1) ), (x(2) , y(2) ), · · · (x(m) , y(m) )} x1 Ensemble d’entrainement : {x(1) , x(2) , · · · x(m) } 04 jan 2012 / Rév. 1 - page 9 sur 47 Apprentissage supervisé vs non-supervisé Apprentissage supervisé x2 Apprentissage non supervisé x2 x1 Ensemble d’entrainement : {(x(1) , y(1) ), (x(2) , y(2) ), · · · (x(m) , y(m) )} x1 Ensemble d’entrainement : {x(1) , x(2) , · · · x(m) } 04 jan 2012 / Rév. 1 - page 9 sur 47 Les algorithmes de clustering I Algorithme de clustering I I I I Applications I I I Méthode pour grouper les données en sous-ensembles cohérents ou clusters Entrée : un ensemble de données non étiquetées Sortie : plusieurs sous-ensembles de données cohérents Segmentation de marché Analyse de réseaux sociaux, etc. Algorithme de classification dans Weka I I I I HierarchicalClusterer SimpleKMeans Cobweb EM (Expectation-Maximisation), etc. 04 jan 2012 / Rév. 1 - page 10 sur 47 L’onglet Cluster dans l’Explorer 04 jan 2012 / Rév. 1 - page 11 sur 47 Plan Préambule Clustering Introduction Présentation de KMeans Clustering hierarchique Clustering avec Weka Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 12 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Présentation de KMeans x2 x1 04 jan 2012 / Rév. 1 - page 13 sur 47 Algorithme KMeans (1) I Entrée : I I Ensemble de données {x(1) , x(2) , · · · x(m) }, x(i) ∈ Rn K (nombre de clusters) I Initialiser aléatoirement K centroïdes µ1 , µ2 , · · · µK ∈ Rn I Répéter : I Étape 1 : assignation des clusters Pour i = 1 jusqu’à m c(i) = index (1 à K) du centroïde le plus proche de x(i) trouver mink ||x(i) − µk ||2 I Étape 2 : Déplacement des centroïdes Pour k = 1 jusqu’à K µk = moyenne des points assignés au cluster k 04 jan 2012 / Rév. 1 - page 14 sur 47 Algorithme KMeans (2) I La performance de KMeans dépend de beaucoup de paramètres I I Utiliser Kmeans sans connaitre le nombre de clusters I I Nombre de clusters, initialisation des centroïdes, etc. Comment choisir le nombre de clusters ? Il existe différentes stratégies 1. Essayer différentes possibilités et voir quelle est la meilleure 2. Réaliser un premier clustering (e.g. k = 2) et considérer un découpage plus fin des clusters 04 jan 2012 / Rév. 1 - page 15 sur 47 Algorithme KMeans (3) I Une méthode simple et intuitive : la elbow method I Cost Function I Tracer la courbe entre le nombre de clusters (en abscisses) et la fonction de coût (en ordonnées) Pour KMeans, la fonction de coût est la sum of squared errors Coude 1 2 3 4 5 6 7 8 Number of clusters I Attention la elbow method n’est pas toujours concluante 04 jan 2012 / Rév. 1 - page 16 sur 47 Algorithme KMeans (4) Evaluation extrinsèque du nombre de clusters poids I KMeans produit des clusters qui seront utilisés en entrée d’une autre application Taille de T-shirts taille poids I Taille de T-shirts taille 04 jan 2012 / Rév. 1 - page 17 sur 47 Algorithme KMeans (4) Evaluation extrinsèque du nombre de clusters I KMeans produit des clusters qui seront utilisés en entrée d’une autre application poids Taille de T-shirts L poids I Taille de T-shirts M S taille taille 04 jan 2012 / Rév. 1 - page 17 sur 47 Algorithme KMeans (4) Evaluation extrinsèque du nombre de clusters I KMeans produit des clusters qui seront utilisés en entrée d’une autre application poids Taille de T-shirts L Taille de T-shirts XL poids I L M M S S XS taille taille 04 jan 2012 / Rév. 1 - page 17 sur 47 Plan Préambule Clustering Introduction Présentation de KMeans Clustering hierarchique Clustering avec Weka Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 18 sur 47 Clustering hierarchique (1) I Clustering hiérarchique I I I Ascendant / agglomératif Descendant / divisif Clustering hierarchique → dendrogramme 04 jan 2012 / Rév. 1 - page 19 sur 47 Clustering hierarchique (2) I Agglomerative Hierarchical Clustering (HAC) I Supposons une mesure de similarité entre deux instances 1. Initialiser les instances dans des clusters séparés 2. Regrouper les deux clusters les plus similaires jusqu’à ce qu’il n’y ai plus qu’un seul cluster I L’historique des regroupements forme un arbre binaire I Comment mesurer la distance entre deux clusters ? I I I I Single-link : distance entre les instances les plus proches Complete-link : distance entre les instances les plus éloignées Average-link : distance moyenne entre les instances Adjcomplete-link, Ward-link, etc. 04 jan 2012 / Rév. 1 - page 20 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Clustering hierarchique (3) I Agglomerative Hierarchical Clustering (HAC) Average-link : distance moyenne entre les instances I Dendrogramme x2 C B A H D E G F x1 ABCDEHFG 04 jan 2012 / Rév. 1 - page 21 sur 47 Plan Préambule Clustering Introduction Présentation de KMeans Clustering hierarchique Clustering avec Weka Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 22 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (1) 04 jan 2012 / Rév. 1 - page 23 sur 47 Clustering avec Weka (2) 04 jan 2012 / Rév. 1 - page 24 sur 47 Clustering avec Weka (3) I En ligne de commande, les algorithmes de clustering s’utilisent d’une manière similaire aux classifieurs : -t -T -p -c -x -d I <file> spécifie l’ensemble d’entraînement <file> spécifie l’ensemble de test <attribute range> affichage des prédictions <index> attribut utilisé pour l’évaluation <folds> validation croisée (density-based clusterers) <file> et -l <file> sauvegarder et charger un modèle Lancer Kmeans sur l’ensemble de données data.arff en utilisant le dernier attribut comme classe pour l’évaluation java weka.clusterers.SimpleKMeans -t data.arff -c last 04 jan 2012 / Rév. 1 - page 25 sur 47 Clustering avec Weka (4) I Évaluation difficile I I Plusieurs clustering possibles Comparaison avec les classes des données étiquetées Démonstration 1 I I I I I Application de KMeans avec plusieurs mesures de distance Application de HierarchicalClusterer avec linkTypes Ensemble de données weather.arff Ensemble de points dans un plan cartésien à deux dimensions Explication du jitter dans l’onglet visualize I Ajout de bruit aléatoire aux coordonnées des points tracés afin de répartir les données (de sorte de pouvoir voir les points qui auraient pu être masquées par d’autres) 04 jan 2012 / Rév. 1 - page 26 sur 47 Plan Préambule Clustering Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 27 sur 47 Interface Knowledge Flow (1) I Interface visuelle orientée utilisateur I I Knowledge Flow = Flux de connaissances Processus d’analyse des données I I I Composants Weka sélectionnés dans une barre d’outils Composants (icones) placés sur un canevas Composants connectés et représentés par un graphe dirigé 04 jan 2012 / Rév. 1 - page 28 sur 47 Interface Knowledge Flow (2) 04 jan 2012 / Rév. 1 - page 29 sur 47 Data Sources/Sinks I Utilisé pour indiquer la source des données I Nombreux formats supportés (ARFF, CSV, bases de données, ...) I Utilisé pour indiquer l’endroit où les données seront écrites I Nombreux formats supportés 04 jan 2012 / Rév. 1 - page 30 sur 47 Filters/Classifiers I Utilisé pour appliquer un pré-traitement au données I Nombreux filtres supervisés/non supervisés I Utilisé pour indiquer l’algorithme de classification à utiliser I Nombreux paramètres réglables 04 jan 2012 / Rév. 1 - page 31 sur 47 Clusterers/Associations I Utilisé pour indiquer l’algorithme de clustering à utiliser I Utilisé pour la génération de règles d’association 04 jan 2012 / Rév. 1 - page 32 sur 47 Evaluation/Visualization I Utilisé pour configurer les paramètres de l’évaluation I Paramètres pour le découpage des données, mesures, ... I Utilisé pour visualiser les sorties des classifieurs I Comparable à l’interface Explorer 04 jan 2012 / Rév. 1 - page 33 sur 47 Un exemple de Knowledge Flow (1) I Classification avec le Knowledge Flow I I I I I I ArffLoader : lit une source au format ARFF ClassAssigner : désigne la colonne considérée comme classe TrainTestSplitMaker : découpe des données en entraînement/test NaiveBayes : algorithme de classification ClassifierPerformanceEvaluator : évaluation du classifieur TextViewer : affichage au format texte 04 jan 2012 / Rév. 1 - page 34 sur 47 Un exemple de Knowledge Flow (2) I Clustering avec le Knowledge Flow I I I I I I I ArffLoader : lit une source au format ARFF ClassAssigner : désigne la colonne considérée comme classe TrainTestSplitMaker : découpe des données en entraînement/test SimpleKMeans : algorithme de clustering TextViewer : affichage au format texte PredictionAppender : ajoute la prédiction du clusterer aux données DataVisualizer : trace un graphique 2D des données 04 jan 2012 / Rév. 1 - page 35 sur 47 Un exemple de Knowledge Flow (3) I Interface accessible aux néophytes I Possibilité d’enregistrer les flux en binaire/xml Démonstration 2 I I Classification J48 avec le Knowledge Flow Clustering hierarchique avec le Knowledge Flow 04 jan 2012 / Rév. 1 - page 36 sur 47 Plan Préambule Clustering Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 37 sur 47 Utiliser Weka dans votre code (1) I Il est possible d’utiliser weka dans son propre code Java I Une API riche, de nombreux exemples import weka.clusterers.SimpleKMeans; import weka.clusterers.ClusterEvaluation; public class ClusteringDemo { public static void main(String[] args) { String[] options; options = new String[2]; options[0] = "-t"; options[1] = "fichier.arff"; System.out.println( ClusterEvaluation.evaluateClusterer( new SimpleKMeans(), options )); } } 04 jan 2012 / Rév. 1 - page 38 sur 47 Utiliser Weka dans votre code (2) I Python I I I I Perl, C++, etc. I I pyweka : un wrapper de weka pour Python JPype : accéder aux librairies Java avec Python Jython : Python pour la plateforme Java Peu d’initiatives Logiciels utilisant Weka I I Très nombreux prototypes de recherche Pentaho Business Intelligence (BI) 04 jan 2012 / Rév. 1 - page 39 sur 47 Utiliser Weka dans votre code (3) I Récupérer les prédictions pour chaque instance d’un classifieur I I I -c last la classe correspond au dernier attribut -p 0 Affiche les prédictions avec les attributs <range> -distribution affiche la distribution de probabilités java weka.classifiers.bayes.NaiveBayes -t train.arff -T test.arff -p 0 -distribution > output.txt I Contenu du fichier output.txt inst# actual 1 2:no 1 2:no 2 1:yes [...] predicted error distribution 1:yes + *1,0 1:yes + *0.622,0.378 1:yes *0.776,0.224 04 jan 2012 / Rév. 1 - page 40 sur 47 Utiliser Weka dans votre code (4) I Récupérer les numéros des clusters assignés par un Clusterer I Le filtre AddCluster ajoute le cluster comme attribut nominal java weka.filters.unsupervised.attribute.AddCluster -W "weka.clusterers.SimpleKMeans -N 3" -I last -i iris.arff -o out.arff I Contenu du fichier out.arff @attribute sepallength numeric [...] @attribute cluster {cluster1,cluster2,cluster3} @data 5.1,3.5,1.4,0.2,Iris-setosa,cluster2 4.9,3,1.4,0.2,Iris-setosa,cluster2 [...] 04 jan 2012 / Rév. 1 - page 41 sur 47 Utiliser Weka dans votre code (5) I Probabilité qu’une instance soit assignée à un cluster java weka.filters.unsupervised.attribute.ClusterMembership -W weka.clusterers.EM -I last -i iris.arff -o out.arff -- -N 3 (options supplementaires pour EM) I Contenu du fichier out.arff @attribute pCluster_0_0 numeric @attribute pCluster_0_1 numeric @attribute pCluster_0_2 numeric @data 0.999944,0,0.000056 0.098355,0,0.901645 0,1,0 [...] 04 jan 2012 / Rév. 1 - page 42 sur 47 Plan Préambule Clustering Interface Knowledge Flow Utiliser Weka dans votre code Conclusion 04 jan 2012 / Rév. 1 - page 43 sur 47 Résumé du cours I Aperçu de Weka et de ses nombreuses interfaces I I I I Explorer/Experimenter pour visualiser, premiers tests Simple CLI pour lancer des tâches lourdes KnowledgeFlow pour visualiser la chaîne de traitement Notions d’algorithmes de classification / clustering I Il n’y a pas de “meilleur" algorithme I Connaissances minimales pour entraîner, évaluer et comparer des méthodes d’apprentissage automatique I De nombreuses fonctionnalités supplémentaires : méthodes de régression, règles d’associations, sélection d’attributs, etc. 04 jan 2012 / Rév. 1 - page 44 sur 47 Pentaho I Leader des applications BI Open source I Modèle par souscription d’abonnement I I Gratuité de la version Community edition Composants de la suite Pentaho I I I I I Analysis : traitement analytique en ligne (OLAP) Reporting : création de rapports Data Mining : technologie de Data Mining Weka... Data Integration : extraction, transformation, chargement des infos DashBoard : tableaux de bord pour les renseignements immédiats 04 jan 2012 / Rév. 1 - page 45 sur 47 Autres outils de Machine Learning I Shogun toolbox I I Orange I I Apache, Java, calcul distribué sur la plateforme Hadoop Bibliothèques spécialisés I I OpenSource, Python, sponsorisé par l’INRIA/Google Apache Mahout I I GNU GPL, C++/Python, interface graphique évoluée scikit-learn I I OpenSource, C++, bio-informatique (grande quantité de données) LibSVM, SVMlight, CRF++, etc. Matlab/R/Octave et les suites bureautiques (Office, Ooo) 04 jan 2012 / Rév. 1 - page 46 sur 47 Coursera I Coursera est un portail web qui permet l’accès gratuit à certain cours d’Université prestigieuses I I I I Stanford University (ML, NLP, Cripto, etc.) University of California, Berkeley (Computer vision, etc.) University of Michigan (Model Thinking) Le cours de Machine Learning est donné par Andrew Ng I I I Lectures découpées en vidéos de 8-12 minutes Vidéos sous-titrées Quiz, devoirs, etc. I https://www.coursera.org I http://www.ml-class.org 04 jan 2012 / Rév. 1 - page 47 sur 47