Внутрішня розмірність

Наглядове навчання в Python

Benjamin Wilson

Director of Research at lateral.io

Внутрішня розмірність траєкторії польоту

  • 2 ознаки: довгота й широта вздовж траєкторії польоту
  • Набір даних здається 2‑вимірним
  • Але можна наближати однією ознакою: зміщенням уздовж траєкторії
  • Має внутрішню розмірність 1
latitude  longitude
  50.529     41.513
  50.360     41.672
  50.196     41.835
...

Точкова діаграма: довгота vs широта

Наглядове навчання в Python

Внутрішня розмірність

  • Внутрішня розмірність = скільки ознак потрібно, щоб наблизити набір даних
  • Ключова ідея зменшення розмірності
  • Яке найкомпактніше подання вибірок?
  • Її можна виявити за допомогою PCA
Наглядове навчання в Python

Набір даних versicolor

  • «versicolor» — один із видів ірисів
  • Лише 3 ознаки: довжина й ширина чашолистка та ширина пелюстки
  • Вибірки — точки в 3D‑просторі
Наглядове навчання в Python

Внутрішня розмірність versicolor дорівнює 2

  • Точки лежать близько до пласкої 2‑вимірної площини
  • Тож можна наближати 2 ознаками

Точки versicolor у 3D: довжина чашолистка vs ширина чашолистка vs ширина пелюстки

Наглядове навчання в Python

PCA визначає внутрішню розмірність

  • Точкові діаграми працюють лише для 2–3 ознак
  • PCA знаходить внутрішню розмірність за будь‑якої кількості ознак
  • Внутрішня розмірність = кількість PCA‑ознак зі значною дисперсією
Наглядове навчання в Python

PCA вибірок versicolor

Повернуті точки versicolor у 3D: PC1 vs PC2 vs PC3

Наглядове навчання в Python

PCA‑ознаки впорядковані за спаданням дисперсії

Стовпчикова діаграма: номер PCA‑ознаки vs дисперсія

Наглядове навчання в Python

Дисперсія і внутрішня розмірність

  • Внутрішня розмірність — це кількість PCA‑ознак зі значною дисперсією
  • У нашому прикладі: перші дві PCA‑ознаки
  • Отже, внутрішня розмірність дорівнює 2

Стовпчикова діаграма: номер PCA‑ознаки vs дисперсія, червона вертикальна лінія між 1 і 2

Наглядове навчання в Python

Побудова графіка дисперсій PCA‑ознак

  • samples = масив вибірок versicolor
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

pca = PCA()
pca.fit(samples)
PCA()
features = range(pca.n_components_)
Наглядове навчання в Python

Побудова графіка дисперсій PCA‑ознак

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

Стовпчикова діаграма: номер PCA‑ознаки vs дисперсія

Наглядове навчання в Python

Внутрішня розмірність може бути неоднозначною

  • Внутрішня розмірність — це ідеалізація
  • ... і не завжди існує єдина правильна відповідь!
  • Вина П'ємонту: можна обґрунтувати 2, 3 або більше

Стовпчикова діаграма: номер PCA‑ознаки vs дисперсія для набору вин

Наглядове навчання в Python

Давайте потренуємось!

Наглядове навчання в Python

Preparing Video For Download...