t-SNE pour des cartes en 2D

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

t-SNE pour des cartes en 2D

  • t-SNE = « t-distributed stochastic neighbor embedding »
  • Projette les échantillons en 2D (ou 3D)
  • Préserve approximativement la proximité des échantillons
  • Idéal pour examiner des ensembles de données
Unsupervised Learning in Python

t-SNE sur l'ensemble Iris

  • L'ensemble de données Iris a 4 mesures : échantillons en 4D
  • t-SNE projette en 2D
  • t-SNE ne savait pas qu'il y avait différentes espèces
  • ... et pourtant, il les a surtout séparées

nuage de points de t-SNE appliqué à l'ensemble Iris

Unsupervised Learning in Python

Interpréter les nuages t-SNE

  • « versicolor » et « virginica » sont plus difficiles à distinguer
  • Cohérent avec l'inertie de k-means : on peut défendre 2 ou 3 regroupements

nuage de points de t-SNE appliqué à l'ensemble Iris

Unsupervised Learning in Python

t-SNE dans sklearn

  • Tableau NumPy 2D samples
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 [ 4.9  2.4  3.3  1. ]
 [ 6.3  2.8  5.1  1.5]
 ...
 [ 4.9  3.1  1.5  0.1]]
  • Liste species donnant les étiquettes d'espèces comme nombres (0, 1 ou 2)
print(species)
[0, 0, 1, 2, ..., 0]
Unsupervised Learning in Python

t-SNE dans sklearn

import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
model = TSNE(learning_rate=100)

transformed = model.fit_transform(samples) xs = transformed[:,0] ys = transformed[:,1] plt.scatter(xs, ys, c=species) plt.show()

nuage de points de t-SNE appliqué à l'ensemble Iris

Unsupervised Learning in Python

t-SNE n'a que fit_transform()

  • Possède une méthode fit_transform()
  • Ajuste le modèle et transforme les données en même temps
  • Pas de méthodes fit() ni transform() séparées
  • Impossible d'étendre la carte à de nouveaux échantillons
  • Il faut tout recommencer chaque fois !
Unsupervised Learning in Python

Taux d'apprentissage de t-SNE

  • Choisir un taux d'apprentissage adapté à l'ensemble
  • Mauvais choix : les points s'agglutinent
  • Essayer des valeurs entre 50 et 200
Unsupervised Learning in Python

Différent à chaque fois

  • Les caractéristiques t-SNE changent à chaque exécution
  • Vins du Piémont : 3 lancements, 3 nuages différents !
  • ... toutefois : les variétés (= couleurs) gardent la même position relative

 

3 nuages de points de t-SNE appliqué à l'ensemble des vins, 3 fois

Unsupervised Learning in Python

Passons à la pratique !

Unsupervised Learning in Python

Preparing Video For Download...