Évaluation d'un regroupement

Apprentissage non supervisé en Python

Benjamin Wilson

Director of Research at lateral.io

Évaluation d'un regroupement

  • Il est possible de vérifier la correspondance avec, par exemple, les espèces d'iris
  • … mais que se passe-t-il s'il n'y a aucune espèce à comparer ?
  • Mesurer la qualité d'un regroupement
  • Détermine le nombre de clusters à rechercher
Apprentissage non supervisé en Python

Iris : clusters et espèces

  • La méthode k-means a identifié trois groupes parmi les échantillons d'iris
  • Les groupes correspondent-ils aux espèces ?
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14
Apprentissage non supervisé en Python

Tableau croisé avec pandas

  • Les clusters et les espèces constituent un "tableau croisé"
  • Utiliser la bibliothèque pandas
  • Étant donné les espèces de chaque échantillon sous forme de liste species
print(species)
['setosa', 'setosa', 'versicolor', 'virginica', ... ]
Apprentissage non supervisé en Python

Aligner les étiquettes et les espèces

import pandas as pd
df = pd.DataFrame({'labels': labels, 'species': species})
print(df)
     labels     species
0         1      setosa
1         1      setosa
2         2  versicolor
3         2   virginica
4         1      setosa
...
Apprentissage non supervisé en Python

Tableau croisé des étiquettes et des espèces

ct = pd.crosstab(df['labels'], df['species'])
print(ct)
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14

Comment évaluer un regroupement en l'absence d'informations sur les espèces ?

Apprentissage non supervisé en Python

Évaluation de la qualité du regroupement

  • En utilisant uniquement des échantillons et leurs étiquettes de regroupement

  • Un regroupement efficace présente des clusters compacts

  • Les échantillons de chaque groupe sont regroupés

Apprentissage non supervisé en Python

L'inertie évalue la qualité du regroupement

  • Mesure le degré de dispersion des groupes (plus la valeur est faible, mieux c'est)
  • Distance entre chaque échantillon et le centroïde de son cluster
  • Après fit(), disponible en tant qu'attribut inertia_
  • La méthode k-means vise à minimiser l'inertie lors du choix des clusters
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
print(model.inertia_)
78.9408414261
Apprentissage non supervisé en Python

Le nombre de clusters

  • Regroupements de l'ensemble de données sur les iris avec différents nombres de clusters
  • Plus de clusters signifie moins d'inertie
  • Quel est le nombre optimal de clusters ?

Line plot of number of clusters vs. inertia

Apprentissage non supervisé en Python

Combien de clusters choisir ?

  • Un bon regroupement présente des clusters compacts (donc une faible inertie)
  • … mais pas trop de groupes !
  • Choisir un "coude" dans le graphique d'inertie
  • Lorsque l'inertie commence à diminuer plus lentement
  • Par exemple, pour l'ensemble de données sur les iris, 3 est un choix approprié

Line plot of number of clusters vs. inertia

Apprentissage non supervisé en Python

Passons à la pratique !

Apprentissage non supervisé en Python

Preparing Video For Download...