11 KiB
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-предположения — локальная низкая размерность и
осмысленная метрика — должны быть хотя бы приблизительно правдоподобны.
Безопасный протокол
- Fit scaler/PCA/UMAP только на train, если embedding участвует в модели.
- Для визуализации сначала удалить явный шум или применить PCA до 30–50 компонент, затем t-SNE/UMAP.
- Повторить seed и диапазон параметров.
- Красить точки метками только после построения embedding; иначе не выдавать supervised настройку за unsupervised.
- Оценить 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 оптимизирует представление графа соседей и также зависит от параметров.
- Визуализация — источник гипотез, а не статистическое доказательство кластеров.
Связанные материалы
-
Практика:
../assignments/02_embeddings.md. -
Предыдущая глава:
02_clustering_algorithms.md. -
Следующая глава:
04_anomaly_detection.md. -
Термины:
../glossary.md.