Intrinsic dimension

Oövervakad inlärning i Python

Benjamin Wilson

Director of Research at lateral.io

Intrinsisk dimension för en flygrutt

  • 2 särdrag: longitud och latitud längs en flygrutt
  • Datamängden verkar vara 2-dimensionell
  • Men kan approximeras med ett särdrag: förflyttning längs flygrutten
  • Är intrinsiskt 1-dimensionell
latitude  longitude
  50.529     41.513
  50.360     41.672
  50.196     41.835
...

Spridningsdiagram över longitud vs latitud

Oövervakad inlärning i Python

Intrinsisk dimension

  • Intrinsisk dimension = antal särdrag som behövs för att approximera datamängden
  • Grundidén bakom dimensionsreduktion
  • Vad är den mest kompakta representationen av urvalen?
  • Kan identifieras med PCA
Oövervakad inlärning i Python

Versicolor-datamängden

  • "versicolor", en av irisarterna
  • Endast 3 särdrag: foderbladslängd, foderbladbredd och kronbladbredd
  • Urval är punkter i 3D-rymden
Oövervakad inlärning i Python

Versicolor-datamängden har intrinsisk dimension 2

  • Urvalen ligger nära ett plant 2-dimensionellt plan
  • Kan därför approximeras med 2 särdrag

Versicolor-punkter plottade i 3D-rymd: foderbladslängd vs foderbladbredd vs kronbladbredd

Oövervakad inlärning i Python

PCA identifierar intrinsisk dimension

  • Spridningsdiagram fungerar bara om urvalen har 2 eller 3 särdrag
  • PCA identifierar intrinsisk dimension oavsett antal särdrag
  • Intrinsisk dimension = antal PCA-särdrag med signifikant varians
Oövervakad inlärning i Python

PCA av versicolor-urvalen

Roterade versicolor-punkter plottade i 3D-rymd: PC1 vs PC2 vs PC3

Oövervakad inlärning i Python

PCA-särdrag ordnas efter fallande varians

Stapeldiagram som visar PCA-särdragsnummer vs varians

Oövervakad inlärning i Python

Varians och intrinsisk dimension

  • Intrinsisk dimension = antal PCA-särdrag med signifikant varians
  • I vårt exempel: de två första PCA-särdragen
  • Den intrinsiska dimensionen är alltså 2

Stapeldiagram med PCA-särdragsnummer vs varians och en vertikal röd linje mellan 1 och 2

Oövervakad inlärning i Python

Plotta variansen för PCA-särdrag

  • samples = array med versicolor-urval
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

pca = PCA()
pca.fit(samples)
PCA()
features = range(pca.n_components_)
Oövervakad inlärning i Python

Plotta variansen för PCA-särdrag

plt.bar(features, pca.explained_variance_)
plt.xticks(features)
plt.ylabel('variance')
plt.xlabel('PCA feature')
plt.show()

Stapeldiagram som visar PCA-särdragsnummer vs varians

Oövervakad inlärning i Python

Intrinsisk dimension kan vara tvetydig

  • Intrinsisk dimension är en idealisering
  • ... det finns inte alltid ett enda rätt svar!
  • Piemontviner: man kan argumentera för 2, 3 eller fler

Stapeldiagram med PCA-särdragsnummer vs varians för vindatamängden

Oövervakad inlärning i Python

Nu kör vi en övning!

Oövervakad inlärning i Python

Preparing Video For Download...