De PCA-transformatie visualiseren

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Dimensiereductie

  • Efficiëntere opslag en berekening
  • Minder informatieve "ruis"-features verwijderen
  • ... die problemen geven bij voorspellen, bv. classificatie, regressie
Unsupervised Learning in Python

Principal Component Analysis

  • PCA = "Principal Component Analysis"
  • Fundamentele techniek voor dimensiereductie
  • Eerste stap: decorrelatie (hier behandeld)
  • Tweede stap: dimensie verlagen (later)
Unsupervised Learning in Python

PCA lijnt data uit met assen

  • Draait data zodat ze met de assen uitgelijnd zijn
  • Verschuift data zodat het gemiddelde 0 is
  • Er gaat geen informatie verloren

spreidingsdiagram van wijngegevens met gedraaide assen

Unsupervised Learning in Python

PCA volgt het fit/transform-patroon

  • PCA is een scikit-learn component zoals KMeans of StandardScaler
  • fit() leert de transformatie van data
  • transform() past de geleerde transformatie toe
  • transform() kan ook op nieuwe data
Unsupervised Learning in Python

scikit-learn PCA gebruiken

  • samples = array met twee features (total_phenols & od280)
[[ 2.8   3.92]
 ...
 [ 2.05  1.6 ]]
from sklearn.decomposition import PCA

model = PCA() model.fit(samples)
PCA()
transformed = model.transform(samples)
Unsupervised Learning in Python

PCA-features

  • Rijen van transformed komen overeen met samples
  • Kolommen van transformed zijn de "PCA-features"
  • Een rij geeft de PCA-featurewaarden van de bijbehorende sample
print(transformed)
[[  1.32771994e+00   4.51396070e-01]
 [  8.32496068e-01   2.33099664e-01]
 ...
 [ -9.33526935e-01  -4.60559297e-01]]
Unsupervised Learning in Python

PCA-features correleren niet

  • Features van de dataset correleren vaak, bv. total_phenols en od280
  • PCA lijnt de data uit met de assen
  • De resulterende PCA-features zijn niet lineair gecorreleerd ("decorrelatie")

spreidingsdiagram van wijngegevens met gedraaide assen

Unsupervised Learning in Python

Pearson-correlatie

  • Meet lineaire correlatie tussen features
  • Waarde tussen -1 en 1
  • Waarde 0 betekent geen lineaire correlatie

3 spreidingsdiagrammen met correlatie 0,7, 0 en -0,7

Unsupervised Learning in Python

Hoofdcomponenten

  • "Hoofdcomponenten" = richtingen van variantie
  • PCA lijnt hoofdcomponenten met de assen uit

spreidingsdiagram van wijngegevens met 2 rode pijlen die de richting van hoofdcomponenten tonen (gedraaide assen)

Unsupervised Learning in Python

Hoofdcomponenten

  • Te vinden als attribuut components_ van het PCA-object
  • Elke rij definieert verplaatsing vanaf het gemiddelde
print(model.components_)
[[ 0.64116665  0.76740167]
 [-0.76740167  0.64116665]]
Unsupervised Learning in Python

Laten we oefenen!

Unsupervised Learning in Python

Preparing Video For Download...