TP Clustering

Introduction

K-Means Clustering

Exercice 2.2

Dans le premier résultat, on lit :

 Class attribute: play
 Classes to Clusters:
 
  0 1 2  <-- assigned to cluster
  1 3 5 | yes
  1 3 1 | no
 
 Cluster 0 <-- No class
 Cluster 1 <-- no
 Cluster 2 <-- yes

Or, les clusters portent des labels “yes”, “no”, et “No class”. Le cluster #1 contient 3 des 5 “no”, le cluster #0 contient 5 des 9 “yes” : ces clusters contienent des majorités des instances de ces deux classes et se voient attribués leur noms.

N S Incorrect Remarques
3 20 6 best
1 9 le cluster “no” ne contient plus que 40% des “no”
3 8 il y a plus de “no” (3) dans le cluster “yes” que dans le cluster “no”!
5 8 les “no” sont mieux cernés, mais les “yes” pas du tout.
8 7
13 6 best
34 9
Meilleur résultat pour N=3 est 6 avec S=13 ou S=20
2 3 7
5 6
8 5 best
13 6
21 5 best
18 7
Meilleur résultat pour N=2 est 5 avec S=8 ou S=21.
Les meilleurs seeds pour N=2 et N=3 ne sont pas les mêmes!
4 20 8 Le clusters 1 et 2 devraient porter le label “yes” tous deux, mais ce n'est attribué qu'une fois.
6 20 9 La grande majorité des “yes” sont dans des cluster “No class.”
8 20 10 Les clusters semblent de plus en plus aléatoires.
  • La classification ne s'amèliore pas avec un trop grand nombre de clusters, et les clusters additionnels sont que des “no class”, donc on n'ajoute que les possibilités de classer en “inclassable.”
  • Il serait utile d'avoir la possibilité de lancer pour plusiers seeds d'un coup, soit au hasard, soit une liste qu'on entrerer, puisque k-means y est très sensible et il faudrait le faire chaque fois. Automatiser la recherche d'une bonne valeur de S, en somme.

Exercice 2.3

Visualisation. Il est noté dans l'énoncé que “représentées par une croix si la classe existante coincide avec la classe représentée par le cluster et par un carré dans le cas contraire;” ça devrait figurer dans une légende de la visualisation. Il serait (je trouve) plus lisible si les points des premières et dernières valeurs des attributs étaient affichés non pas sur les bord mais avec une marge en haut et en bas.

Exercice 2.4

Tous les attributs semblent bien répartis dans le jeu de données. D'ailleurs, on a pu voir ça dans preprocess. Le seul attribut qui n'est pas présent dans “yes” et “no” est “outlook:overcast”, mais “humidity” semble assez clivant aussi: plutôt “no” avec humidity élevé. Il manque des instances de rainy outlook avec temperature vraiment élevée.

Il serait utile de pouvoir defiler les crossplot des valeurs de paires d'attributs automatiquement et ne pas avoir à les choisir paire par paire. Et peut être avoir la possibilité de faire des combinaisons d'attributs pour voir des projections plus sophistiquées.

Clustering Conceptuel

3.1

Paramètres pour Cobweb : on ne fixe plus le nombre de clusters, mais on choisit “cutoff” et “acuity”.

3.2

La structure hiérarchique formée: pas très lisible, à prime abord. Et 12 instances incorrectement classées avec 23 clusters pour ce premier résultat!

Varions les paramètres pour chercher mieux :

C S Nombre
incorrect
Nombre de
clusters
Remarques
0.1 42 12 23
0.2 42 9 15
0.3 42 5 1 (=yes) Plus qu'un cluster, tous les “no” sont donc mal classés.
0.23 42 8 4 40% des “no” mal classés, mais 67% des “yes” mal classés!
0.235 42 5 2 Bien!
0.234 42 8 4 Cutoff trop faible, on ne peut pas (beaucoup) baisser de 0.235.
0.236 42 5 2
0.237 42 5 2
0.238 42 5 2
0.239 42 5 2
0.25 42 5 1 trop grand
0.24 42 5 2
0.245 42 5 2
0.247 42 5 1
0.246 42 5 2 Limite supérieur (approchée)
0.235 21 5 1 Plus qu'un cluster, tous les “no” sont donc mal classés.

Donc, pour S=42, le meilleur intervalle semble être de 0.235 à 0.246. Mais pour S=21, ce n'est plus vrai.

Exercice 3.3

Dessiner la structure hiérarchique de clusters.

Instance Outlook Temp Hum. Windy Play
cluster1 2.0 overcast 83.0 86.0 FALSE yes
12.0 overcast 81.0 75.0 FALSE yes
3.0 rainy 70.0 96.0 FALSE yes
4.0 rainy 68.0 80.0 FALSE yes
9.0 rainy 75.0 80.0 FALSE yes
8.0 sunny 69.0 70.0 FALSE yes
0.0 sunny 85.0 85.0 FALSE no
7.0 sunny 72.0 95.0 FALSE no
cluster2 1.0 sunny 80.0 90.0 TRUE no
5.0 rainy 65.0 70.0 TRUE no
13.0 rainy 71.0 91.0 TRUE no
11.0 overcast 72.0 90.0 TRUE yes
6.0 overcast 64.0 65.0 TRUE yes
10.0 sunny 75.0 70.0 TRUE yes

Exercice 3.4

On dirait que “Windy” est le seul critère clivant dans ce modèle. En tenant compte de “outlook:overcast”, deux des trois “yes” mal classés en cluster2 pouvait être repêchés. La “faute” des deux “no” en cluster1 est moins évidente.

Personnellement, je préfère voir la hiérarchie sous cette forme (tableau).

Exercice 3.5

Exercices sur Cobweb avec iris.arff

Variations d'“acuity” sur un petit jeu (3*5 instances).

S Cutoff Acuity Clusters Erreurs
42 0.002 3.0 1 10
42 0.002 2.0 1 10
42 0.002 1.5 1 10
42 0.002 1.0 2 5 Mieux (enfin) : voyons avec encore plus petit
42 0.002 0.5 6 5
42 0.002 0.3 8 7 Trop petit : le nombre d'erreurs augmente. Cherchons entre 0.5 et 1.0
42 0.002 0.7 2 5
42 0.002 0.6 4 5 Si on sait qu'il faut trois clusters, il faut chercher entre 0.6 et 0.7, mais faisons-nous du supervisé ou pas?
42 0.002 0.55 4 6 Remarque : plus d'erreurs que pour 0.5 ou 0.6.
42 0.002 0.65 2 5
42 0.002 0.63 3 4
42 0.002 0.64 3 4
42 0.002 0.62 3 4
42 0.002 0.61 4 5

⇒ meilleurs résultats entre 0.62 et 0.64.

Que nous montre la visualisation? Déjà, au niveau de l'output text, on voit que il distingue bien les setosa, mais ne sépare pas bien les virginica et versicolor.

Exercice 3.6

Après mélange des lignes du jeu de données, les résultats sont:

Acuity Clusters Erreurs
1.5 2 5
1.0 2 5
0.6 4 5
0.55 4 5
0.5 5 3
0.45 6 4
0.4 6 4

Comme l'énoncé suggère, la meilleur valeur pour acuity est un peu plus faible : 0.5, et ne fait que 3 erreurs, ce avec 5 clusters au lieu de 3.

Avant (cobweb1– triée par “class” ) :

1 2 4  <-- assigned to cluster
0 5 0 | Iris-setosa
4 0 1 | Iris-versicolor
5 0 0 | Iris-virginica

Après (cobweb2 –“class” désordonné) :

2 3 5 6 7  <-- assigned to cluster
0 0 4 0 1 | Iris-setosa
3 1 0 1 0 | Iris-versicolor
0 5 0 0 0 | Iris-virginica

Dans le premier cas, 4 versicolor ne sont pas distinguées des virginica. Dans le deuxième cas, cette distinction est mieux faite; d'ailleurs, si l'on fusionne C6 avec C2 et C7 avec C5, il ne reste qu'une mauvaise discrimination – un versicolor dans C3.

4 Jeu de données de base pour comparer les algorithmes

5 Questions subsidiaires

 
m1ilc/fouille_tp.txt · Dernière modification: 2009/12/19 15:18 par suitable
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki