Redukce dimenzí pomocí PCA

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Redukce dimenzí

  • Reprezentuje stejná data s menším počtem příznaků
  • Důležitá součást pipeline strojového učení
  • Lze provést pomocí PCA
Unsupervised Learning in Python

Redukce dimenzí pomocí PCA

  • PCA příznaky jsou seřazeny sestupně podle variance
  • Předpokládá, že příznaky s nízkou variancí jsou „šum"
  • ... a příznaky s vysokou variancí jsou informativní

Sloupcový graf zobrazující číslo příznaku PCA vs. variance se svislou čarou mezi 1 a 2, s levou šipkou označenou informativní a pravou šipkou označenou šumové

Unsupervised Learning in Python

Redukce dimenzí pomocí PCA

  • Zadejte počet příznaků, které chcete zachovat
  • Např. PCA(n_components=2)
  • Zachová první 2 PCA příznaky
  • Vhodnou volbou je vnitřní dimenze
Unsupervised Learning in Python

Redukce dimenzí datasetu Iris

  • samples = pole měření iris (4 příznaky)
  • species = seznam čísel druhů 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)
Unsupervised Learning in Python

Dataset Iris ve 2 dimenzích

  • PCA redukovala dimenzi na 2
  • Zachovány 2 PCA příznaky s nejvyšší variancí
  • Důležité informace zachovány: druhy zůstávají odlišné
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

Bodový graf PCA pro dataset Iris

Unsupervised Learning in Python

Redukce dimenzí pomocí PCA

  • Zahazuje PCA příznaky s nízkou variancí
  • Předpokládá, že příznaky s vysokou variancí jsou informativní
  • Předpoklad v praxi obvykle platí (např. pro iris)
Unsupervised Learning in Python

Pole četností slov

  • Řádky představují dokumenty, sloupce představují slova
  • Záznamy měří výskyt každého slova v každém dokumentu
  • ... měřeno pomocí „tf-idf" (více později)

Pole četností slov

Unsupervised Learning in Python

Řídká pole a csr_matrix

  • „Řídké": většina záznamů je nulová
  • Místo pole NumPy lze použít scipy.sparse.csr_matrix
  • csr_matrix ukládá pouze nenulové záznamy (šetří paměť!)

Pole četností slov

Unsupervised Learning in Python

TruncatedSVD a csr_matrix

  • PCA ze scikit-learn nepodporuje csr_matrix
  • Použijte místo toho TruncatedSVD ze scikit-learn
  • Provádí stejnou transformaci
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Unsupervised Learning in Python

Pojďme procvičovat!

Unsupervised Learning in Python

Preparing Video For Download...