Visualisera PCA-transformationen

Oövervakad inlärning i Python

Benjamin Wilson

Director of Research at lateral.io

Dimensionsreduktion

  • Effektivare lagring och beräkning
  • Ta bort mindre informativa "brus"-särdrag
  • ... som ställer till problem vid prediktion, t.ex. klassificering och regression
Oövervakad inlärning i Python

Principal Component Analysis

  • PCA = "Principal Component Analysis"
  • Grundläggande teknik för dimensionsreduktion
  • Första steget "dekorrelation" (behandlas här)
  • Andra steget reducerar dimensionen (behandlas senare)
Oövervakad inlärning i Python

PCA alignar data med axlarna

  • Roterar datapunkter så att de alignas med axlarna
  • Förskjuter datapunkter så att medelvärdet blir 0
  • Ingen information går förlorad

spridningsdiagram över vindata med roterade axlar

Oövervakad inlärning i Python

PCA följer fit/transform-mönstret

  • PCA är en scikit-learn-komponent som KMeans eller StandardScaler
  • fit() lär sig transformationen från given data
  • transform() tillämpar den inlärda transformationen
  • transform() kan även tillämpas på ny data
Oövervakad inlärning i Python

Använda scikit-learn PCA

  • samples = array med två särdrag (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)
Oövervakad inlärning i Python

PCA-särdrag

  • Rader i transformed motsvarar datapunkter
  • Kolumner i transformed är "PCA-särdrag"
  • En rad ger PCA-särdragsvärden för motsvarande datapunkt
print(transformed)
[[  1.32771994e+00   4.51396070e-01]
 [  8.32496068e-01   2.33099664e-01]
 ...
 [ -9.33526935e-01  -4.60559297e-01]]
Oövervakad inlärning i Python

PCA-särdrag är okorrelerade

  • Särdrag i en datamängd är ofta korrelerade, t.ex. total_phenols och od280
  • PCA alignar data med axlarna
  • De resulterande PCA-särdragen är inte linjärt korrelerade ("dekorrelation")

spridningsdiagram över vindata med roterade axlar

Oövervakad inlärning i Python

Pearsons korrelation

  • Mäter linjär korrelation mellan särdrag
  • Värde mellan -1 och 1
  • Värdet 0 innebär ingen linjär korrelation

3 spridningsdiagram med korrelation 0,7, 0 och -0,7

Oövervakad inlärning i Python

Principalkomponenter

  • "Principalkomponenter" = variansriktningar
  • PCA alignar principalkomponenterna med axlarna

spridningsdiagram över vindata med 2 röda pilar som visar principalkomponenternas riktning (roterade axlar)

Oövervakad inlärning i Python

Principalkomponenter

  • Tillgängliga som attributet components_ i PCA-objektet
  • Varje rad definierar förskjutning från medelvärdet
print(model.components_)
[[ 0.64116665  0.76740167]
 [-0.76740167  0.64116665]]
Oövervakad inlärning i Python

Nu kör vi en övning!

Oövervakad inlärning i Python

Preparing Video For Download...