Диагностика Mock-интервью
Главная · Основы машинного обучения

Снижение размерности и PCA

Реальные данные живут в сотнях и тысячах измерений, но полезная структура почти всегда умещается в нескольких. PCA — главный инструмент, чтобы сжать пространство признаков, сохранив максимум информации, — и любимый теоретический вопрос на собеседованиях.

Зачем уменьшать размерность

Четыре причины. Визуализация: человек видит максимум три измерения, а понять данные хочется глазами. Шум: слабые направления дисперсии часто содержат в основном шум измерений — отбросив их, модель иногда становится точнее. Скорость и память: 50 признаков вместо 5000 — это на порядки дешевле обучение и хранение. Проклятие размерности (curse of dimensionality): в высокой размерности расстояния вырождаются и методам вроде kNN и k-means становится нечем дышать.

PCA: направления максимальной дисперсии

Метод главных компонент (PCA, principal component analysis) отвечает на вопрос: «если можно оставить только одну ось, на которую спроецировать данные, какая ось потеряет меньше всего?» Ответ PCA: та, вдоль которой дисперсия проекций максимальна — разброс и есть информация, различия между объектами. Эта ось называется первой главной компонентой (PC1). Вторая компонента (PC2) — направление максимальной оставшейся дисперсии, обязательно ортогональное первой, и так далее. Каждая компонента — линейная комбинация исходных признаков.

Математически всё сводится к ковариационной матрице центрированных данных: главные компоненты — её собственные векторы (eigenvectors), а собственные значения (eigenvalues) λi — дисперсии вдоль них. Отсюда ключевая метрика — доля объяснённой дисперсии (explained variance ratio):

EVRi = λi / (λ1 + λ2 + … + λd)

Сколько компонент оставить? Смотрят на накопленную долю: обычно берут столько компонент, чтобы суммарно объяснить 90–95% дисперсии, или ищут излом на графике λi (scree plot). Проекция на первые m компонент — лучшее (по среднеквадратичной ошибке) линейное сжатие данных до m измерений.

💡 Ключевая мысль PCA не выбрасывает признаки — он поворачивает систему координат так, чтобы вся «интересная» дисперсия собралась в первых осях, а затем отбрасывает оси, где почти ничего не происходит.

Обязательная подготовка данных

Два шага, без которых PCA считается неправильно. Центрирование: из каждого признака вычитается среднее — иначе первая компонента укажет не на направление разброса, а примерно на средний вектор данных. Масштабирование: дисперсия зависит от единиц измерения, и признак «доход в рублях» с дисперсией в миллиарды затмит «возраст» с дисперсией в сотни — PC1 просто повторит самый «крупный» признак. Поэтому перед PCA признаки стандартизуют (вычесть среднее, поделить на стандартное отклонение), что эквивалентно работе с корреляционной матрицей вместо ковариационной.

И одна процедурная тонкость, за которую снимают баллы на собеседовании: PCA — часть модели, а не «безобидная предобработка». Компоненты и параметры стандартизации подбираются только по обучающей выборке, а тест лишь проецируется на них. Если посчитать PCA по всем данным сразу, информация о тесте просочится в признаки (data leakage), и оценка качества станет завышенной.

Ограничения и нелинейные соседи

PCA умеет только поворачивать оси: он ищет линейные комбинации признаков. Если данные лежат на изогнутом многообразии — «швейцарский рулет», кольца, кластеры на сфере — линейная проекция сомнёт структуру. Для визуализации таких данных используют t-SNE и UMAP: они стараются сохранить локальные окрестности точек при вложении в 2D. Но у них свои подводные камни: результат зависит от гиперпараметров (perplexity, число соседей) и случайного старта, а главное — расстояния между кластерами и их размеры на t-SNE-картинке не интерпретируются. Два облака рядом на картинке не обязаны быть похожими в исходном пространстве. Это инструменты разглядывания, а не измерения: считать метрики и строить признаки лучше на PCA-проекциях или исходных данных. В мире LLM снижение размерности регулярно встречается при работе с эмбеддингами — например, чтобы визуализировать семантические кластеры документов.

⚠️ Подводный камень PCA не смотрит на целевую переменную. Направление с маленькой дисперсией может быть самым важным для классификации — отбросив «тихие» компоненты, можно выбросить весь сигнал. Проверяй качество downstream-модели до и после сжатия, а не только объяснённую дисперсию.
🎤 На собеседовании
  • «Что максимизирует PCA?» — дисперсию проекций; эквивалентно минимизирует среднеквадратичную ошибку линейной реконструкции.
  • «Что такое главные компоненты математически?» — собственные векторы ковариационной матрицы; собственные значения — дисперсии вдоль них.
  • «Зачем стандартизация перед PCA?» — без неё компоненты захватят признаки с крупными единицами измерения.
  • «Можно ли верить расстояниям между кластерами на t-SNE?» — нет: метод сохраняет локальные окрестности, глобальная геометрия искажается.