Reducerea dimensiunilor cu PCA

Învățare nesupervizată în Python

Benjamin Wilson

Director of Research at lateral.io

Reducerea dimensiunilor

  • Reprezintă aceleași date cu mai puține caracteristici
  • Componentă importantă a fluxurilor de machine learning
  • Poate fi realizată prin PCA
Învățare nesupervizată în Python

Reducerea dimensiunilor cu PCA

  • Caracteristicile PCA sunt în ordine descrescătoare a varianței
  • Presupune că trăsăturile cu varianță mică sunt "zgomot"
  • ... și cele cu varianță mare sunt informative

Grafic cu bare: număr caracteristică PCA vs. varianță, cu linie verticală între 1 și 2, săgeată stânga etichetată informativ și săgeată dreapta etichetată zgomotos

Învățare nesupervizată în Python

Reducerea dimensiunilor cu PCA

  • Specificați câte caracteristici să fie păstrate
  • Ex. PCA(n_components=2)
  • Păstrează primele 2 caracteristici PCA
  • Dimensiunea intrinsecă este o alegere bună
Învățare nesupervizată în Python

Reducerea dimensiunilor setului de date Iris

  • samples = matrice de măsurători iris (4 caracteristici)
  • species = listă cu numerele speciilor de 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)
Învățare nesupervizată în Python

Setul de date Iris în 2 dimensiuni

  • PCA a redus dimensiunea la 2
  • S-au păstrat cele 2 caracteristici PCA cu varianță maximă
  • Informații esențiale păstrate: speciile rămân distincte
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

Grafic de dispersie al PCA pe setul de date Iris

Învățare nesupervizată în Python

Reducerea dimensiunilor cu PCA

  • Elimină caracteristicile PCA cu varianță redusă
  • Presupune că trăsăturile cu varianță mare sunt informative
  • Ipoteză valabilă în practică (ex. pentru iris)
Învățare nesupervizată în Python

Matrici de frecvență a cuvintelor

  • Rândurile reprezintă documente, coloanele reprezintă cuvinte
  • Intrările măsoară prezența fiecărui cuvânt în fiecare document
  • ... măsurate prin "tf-idf" (mai târziu)

Matrice de frecvență a cuvintelor

Învățare nesupervizată în Python

Matrici sparse și csr_matrix

  • "Sparse": majoritatea intrărilor sunt zero
  • Se poate folosi scipy.sparse.csr_matrix în loc de array NumPy
  • csr_matrix reține doar intrările nenule (economisește spațiu!)

Matrice de frecvență a cuvintelor

Învățare nesupervizată în Python

TruncatedSVD și csr_matrix

  • PCA din scikit-learn nu suportă csr_matrix
  • Utilizați TruncatedSVD din scikit-learn
  • Efectuează aceeași transformare
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Învățare nesupervizată în Python

Să exersăm!

Învățare nesupervizată în Python

Preparing Video For Download...