ai_learning/modules/08_unsupervised_learning/notes/03_dimensionality_reduction.md

11 KiB
Raw Blame History

PCA, t-SNE, UMAP и визуализация размерности

Снижение размерности строит новое представление. PCA сохраняет линейную дисперсию, t-SNE и UMAP — главным образом локальные соседства.

Зачем снижать размерность

Цели различаются: сжатие, подавление шума, ускорение модели, борьба с коллинеарностью или двумерная визуализация. Метод, хороший для картинки, не обязательно даёт признаки для prediction. Любая проекция теряет информацию; оценивать следует именно целевое применение.

PCA: постановка

Пусть центрированная \mathbf X_c=\mathbf X-\mathbf1\bar{\mathbf x}^{\top}\in\mathbb R^{n\times d}. Первая главная компонента — единичный вектор максимальной дисперсии:


\mathbf v_1\in\arg\max_{\|\mathbf v\|=1}
\frac1n\|\mathbf X_c\mathbf v\|_2^2
=\arg\max_{\|\mathbf v\|=1}\mathbf v^\top
\left(\frac1n\mathbf X_c^\top\mathbf X_c\right)\mathbf v.

С множителем Лагранжа:


\mathcal L=\mathbf v^\top\boldsymbol\Sigma\mathbf v
-\lambda(\mathbf v^\top\mathbf v-1),\quad
\nabla_{\mathbf v}\mathcal L=2\boldsymbol\Sigma\mathbf v-2\lambda\mathbf v=0.

Следовательно, \boldsymbol\Sigma\mathbf v=\lambda\mathbf v: компоненты — собственные векторы ковариации, дисперсии — собственные значения. Последующие компоненты ортогональны предыдущим.

Через SVD \mathbf X_c=\mathbf U\mathbf S\mathbf V^\top: строки \mathbf V^\top задают направления, scores \mathbf Z=\mathbf X_c\mathbf V_q=\mathbf U_q\mathbf S_q. SVD устойчивее явного построения ковариации.

Ковариация PCA: деление на n или n-1

Для центрированной матрицы используют обе договорённости:


\boldsymbol\Sigma_n=\frac1n\mathbf X_c^\top\mathbf X_c,\qquad
\boldsymbol\Sigma_{n-1}=\frac1{n-1}\mathbf X_c^\top\mathbf X_c.

Первая — эмпирическая covariance как среднее по наблюдаемому распределению; вторая — несмещённая оценка covariance генеральной совокупности при iid-выборке. Матрицы отличаются только положительным скаляром n/(n-1), поэтому их собственные векторы, порядок компонент, scores и explained variance ratio совпадают. Отличаются собственные значения и абсолютные explained_variance_. Например, scikit-learn сообщает выборочные дисперсии с делением на n-1, тогда как в выводе выше использовано 1/n. При сравнении ручной реализации с библиотекой нужно согласовать ddof; это не разные направления PCA.

PCA как лучшая линейная реконструкция

Реконструкция из q компонент:


\hat{\mathbf X}=\mathbf Z\mathbf V_q^\top+
\mathbf1\bar{\mathbf x}^{\top}.

Теорема Эккарта—Янга даёт


\|\mathbf X_c-\mathbf U_q\mathbf S_q\mathbf V_q^\top\|_F^2
=\sum_{j>q}s_j^2,

минимум среди rank-q приближений. Explained variance ratio компоненты \lambda_j/\sum_k\lambda_k. Высокая сохранённая дисперсия не гарантирует сохранение слабого, но предсказательного сигнала.

PCA требует центрирования. Стандартизация нужна, если единицы несопоставимы и variance не должна отражать физический масштаб. Whitening дополнительно делит scores на стандартные отклонения, уничтожая различия дисперсий и усиливая малодисперсионный шум.

Числовой пример PCA

Для центрированных точек (-1,-1),(0,0),(1,1):


\boldsymbol\Sigma=\frac13
\begin{bmatrix}2&2\\2&2\end{bmatrix}.

Собственные направления: \mathbf v_1=(1,1)^\top/\sqrt2 с \lambda_1=4/3 и \mathbf v_2=(1,-1)^\top/\sqrt2 с \lambda_2=0. Одна компонента восстанавливает данные точно: точки лежат на прямой. Знак \mathbf v_1 произволен; смена знака не меняет подпространство.

t-SNE

t-SNE превращает расстояния в вероятности соседства. В исходном пространстве условные p_{j\mid i} строятся Gaussian с локально подобранной шириной; perplexity примерно задаёт эффективное число соседей. После симметризации получают p_{ij}. В 2D используют тяжёлые хвосты Student:


q_{ij}\propto(1+\|\mathbf z_i-\mathbf z_j\|^2)^{-1}.

Минимизируется


\operatorname{KL}(P\|Q)=\sum_{i\ne j}p_{ij}\log\frac{p_{ij}}{q_{ij}}.

Асимметрия KL сильно штрафует потерю истинных соседей, но слабее — появление далёких ложных отношений. Поэтому локальные группы видны хорошо, а расстояния между «островами», их размеры и плотности обычно не интерпретируются. Результат зависит от seed, perplexity, learning rate и числа итераций. t-SNE — прежде всего исследовательская визуализация, не доказательство кластеров.

UMAP

UMAP строит взвешенный граф k ближайших соседей с локальным масштабом и оптимизирует низкоразмерный граф, притягивая рёбра и отталкивая sampled не-соседей. n_neighbors задаёт локально-глобальный компромисс, min_dist — насколько плотно точки могут упаковываться.

UMAP обычно быстрее t-SNE, поддерживает transform новых объектов в реализациих и нередко лучше сохраняет часть глобальной структуры, но не гарантирует геометрически точных межкластерных расстояний. Seed и параметры способны менять картинку. Теоретические manifold-предположения — локальная низкая размерность и осмысленная метрика — должны быть хотя бы приблизительно правдоподобны.

Безопасный протокол

  1. Fit scaler/PCA/UMAP только на train, если embedding участвует в модели.
  2. Для визуализации сначала удалить явный шум или применить PCA до 30–50 компонент, затем t-SNE/UMAP.
  3. Повторить seed и диапазон параметров.
  4. Красить точки метками только после построения embedding; иначе не выдавать supervised настройку за unsupervised.
  5. Оценить reconstruction (PCA), trustworthiness соседств и downstream-метрику.

Самостоятельный пример sklearn

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import StandardScaler

X, _ = load_digits(return_X_y=True)
X_scaled = StandardScaler().fit_transform(X)
pca = PCA(n_components=0.95, svd_solver="full")
Z = pca.fit_transform(X_scaled)
X_hat = pca.inverse_transform(Z)
print("shape:", X.shape, "->", Z.shape)
print("variance:", pca.explained_variance_ratio_.sum())
print("reconstruction MSE:", mean_squared_error(X_scaled, X_hat))

Для UMAP нужен отдельный пакет umap-learn; базовый учебный код намеренно не делает его обязательной зависимостью.

Типичные ошибки и ограничения

  • Интерпретировать оси t-SNE/UMAP как исходные признаки.
  • Считать расстояние между островами количественно значимым.
  • Подбирать картинку до желаемого сюжета и скрывать другие seed.
  • Выполнить PCA до split и получить утечку в downstream-оценке.
  • Выбирать число PCA-компонент только по 95% variance, не проверяя целевую метрику.
  • Применять евклидову метрику к неподходящим сырым данным.

Краткое резюме

  • PCA — оптимальная линейная rank-q реконструкция центрированных данных.
  • t-SNE сохраняет вероятностные локальные соседства, не глобальную карту.
  • UMAP оптимизирует представление графа соседей и также зависит от параметров.
  • Визуализация — источник гипотез, а не статистическое доказательство кластеров.

Связанные материалы