Vnitřní dimenze

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Vnitřní dimenze letové trasy

  • 2 příznaky: zeměpisná délka a šířka bodů na trase letu
  • Datová sada vypadá jako 2-dimenzionální
  • Lze ji přiblížit jedním příznakem: vzdáleností podél trasy
  • Vnitřně je 1-dimenzionální
latitude  longitude
  50.529     41.513
  50.360     41.672
  50.196     41.835
...

Bodový graf zeměpisné délky vs šířky

Unsupervised Learning in Python

Vnitřní dimenze

  • Vnitřní dimenze = počet příznaků potřebných k aproximaci datové sady
  • Základní myšlenka za redukcí dimenzionality
  • Jaká je nejkompaktnější reprezentace vzorků?
  • Lze detekovat pomocí PCA
Unsupervised Learning in Python

Datová sada Versicolor

  • „versicolor", jeden z druhů kosatce
  • Pouze 3 příznaky: délka a šířka kalichu a šířka okvětního lístku
  • Vzorky jsou body ve 3D prostoru
Unsupervised Learning in Python

Datová sada Versicolor má vnitřní dimenzi 2

  • Vzorky leží blízko plochého 2D listu
  • Lze je tedy aproximovat 2 příznaky

Body versicolor vykreslené ve 3D prostoru: délka kalichu vs šířka kalichu vs šířka okvětního lístku

Unsupervised Learning in Python

PCA určuje vnitřní dimenzi

  • Bodové grafy fungují jen pro 2 nebo 3 příznaky
  • PCA určuje vnitřní dimenzi pro libovolný počet příznaků
  • Vnitřní dimenze = počet příznaků PCA s výrazným rozptylem
Unsupervised Learning in Python

PCA vzorků versicolor

Otočené body versicolor vykreslené ve 3D prostoru: PC1 vs PC2 vs PC3

Unsupervised Learning in Python

Příznaky PCA jsou seřazeny sestupně podle rozptylu

Sloupcový graf: číslo příznaku PCA vs rozptyl

Unsupervised Learning in Python

Rozptyl a vnitřní dimenze

  • Vnitřní dimenze = počet příznaků PCA s výrazným rozptylem
  • V tomto příkladu: první dva příznaky PCA
  • Vnitřní dimenze je tedy 2

Sloupcový graf s červenou svislou čarou mezi hodnotami 1 a 2

Unsupervised Learning in Python

Vizualizace rozptylů příznaků PCA

  • samples = pole vzorků versicolor
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

pca = PCA()
pca.fit(samples)
PCA()
features = range(pca.n_components_)
Unsupervised Learning in Python

Vizualizace rozptylů příznaků PCA

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

Sloupcový graf: číslo příznaku PCA vs rozptyl

Unsupervised Learning in Python

Vnitřní dimenze může být nejednoznačná

  • Vnitřní dimenze je idealizace
  • ... ne vždy existuje jediná správná odpověď!
  • Vína z Piemontu: lze argumentovat pro 2, 3 nebo více

Sloupcový graf rozptylů příznaků PCA pro dataset vín

Unsupervised Learning in Python

Let's practice!

Unsupervised Learning in Python

Preparing Video For Download...