Réduction de dimension avec PCA

Apprentissage non supervisé en Python

Benjamin Wilson

Director of Research at lateral.io

Réduction de dimension

  • Représente les mêmes données, en utilisant moins de fonctionnalités
  • Élément important des pipelines de machine learning
  • Peut être réalisé à l'aide de PCA
Apprentissage non supervisé en Python

Réduction de dimension avec PCA

  • Les caractéristiques PCA sont classées par ordre décroissant de variance
  • Considère que les caractéristiques à faible variance sont du "bruit"
  • … et les caractéristiques à forte variance sont informatives

Bar plot showing pca feature number vs variance with vertical line between 1 and 2, with left arrow labeled informative and right arrow labeled noisy

Apprentissage non supervisé en Python

Réduction de dimension avec PCA

  • Indiquer le nombre de fonctionnalités à conserver
  • Par exemple. PCA(n_components=2)
  • Conserve les deux premières caractéristiques PCA
  • La dimension intrinsèque constitue un choix judicieux
Apprentissage non supervisé en Python

Réduction de la dimension de l'ensemble de données sur les iris

  • samples = tableau des mesures des iris (4 caractéristiques)
  • species = liste des numéros des espèces d'iris
from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(samples)
PCA(n_components=2)
transformed = pca.transform(samples)
print(transformed.shape)
(150, 2)
Apprentissage non supervisé en Python

Ensemble de données Iris en deux dimensions

  • PCA a réduit la dimension à 2
  • Conservation des 2 caractéristiques PCA présentant la variance la plus élevée
  • Informations importantes conservées : les espèces restent distinctes
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

Scatter plot of PCA performed on Iris dataset

Apprentissage non supervisé en Python

Réduction de dimension avec PCA

  • Élimine les caractéristiques PCA à faible variance
  • Part du principe que les caractéristiques à forte variance sont informatives
  • Cette hypothèse est généralement valable dans la pratique (par exemple pour Iris)
Apprentissage non supervisé en Python

Tableaux de fréquence des mots

  • Les lignes représentent les documents, les colonnes représentent les mots
  • Les entrées mesurent la présence de chaque mot dans chaque document
  • … mesurer à l'aide de "tf-idf" (plus d'informations à ce sujet ultérieurement)

Word frequency array

Apprentissage non supervisé en Python

Matrice creuse et csr_matrix

  • "Creuse" : la plupart des entrées sont nulles
  • Il est possible d'utiliser scipy.sparse.csr_matrix à la place du tableau NumPy
  • csr_matrix n'enregistre que les entrées non nulles (gain d'espace !)

Word frequency array

Apprentissage non supervisé en Python

TruncatedSVD et csr_matrix

  • PCA scikit-learn ne prend pas en charge csr_matrix
  • Utiliser scikit-learn TruncatedSVD à la place
  • Effectue la même transformation
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Apprentissage non supervisé en Python

Passons à la pratique !

Apprentissage non supervisé en Python

Preparing Video For Download...