Метод главных компонент (PCA): как работает и формулы
Метод главных компонент, или PCA (principal component analysis), - это базовый приём снижения размерности данных: он находит новые оси, вдоль которых разброс точек максимален, и позволяет описать набор признаков меньшим числом некоррелированных переменных почти без потери информации. PCA встречается в машинном обучении, обработке изображений, биоинформатике и эконометрике - везде, где много признаков, а смысла в них меньше, чем кажется. Ниже разберём, на чём держится метод главных компонент, как из ковариационной матрицы получить собственные значения и векторы, как считать долю объяснённой дисперсии и сколько компонент стоит оставить. Чтобы сразу почувствовать связь корреляции и направлений компонент, покрутите калькулятор ниже: он показывает облако точек, главные оси и долю дисперсии разом, а дальше мы разберём каждую формулу строго.
Идея метода главных компонент простыми словами
Представьте облако точек на плоскости, вытянутое по диагонали: признаки и сильно скоррелированы, и почти вся информация о точке умещается в одном числе - её положении вдоль длинной оси облака. PCA как раз и ищет эту длинную ось. Первая главная компонента (PC1) - это направление наибольшего разброса данных, вторая (PC2) перпендикулярна ей и собирает остаток. Спроецировав точки на PC1, мы заменяем два признака одним, теряя лишь малую долю дисперсии.
Формально метод главных компонент делает три вещи: центрирует данные (вычитает среднее по каждому признаку), строит новый ортогональный базис из направлений максимального разброса и сортирует эти направления по убыванию дисперсии. Старые признаки часто коррелируют между собой, новые - компоненты - всегда некоррелированы. Это и есть смысл слова «главные»: первые компоненты несут основную часть информации.
Ковариационная матрица как основа PCA
Разброс многомерных данных описывает ковариационная матрица. Для двух признаков она симметрична и имеет вид:
где и - дисперсии признаков, а - коэффициент корреляции. На диагонали стоит разброс каждого признака отдельно, вне диагонали - их совместная изменчивость. Если признаки независимы, и внедиагональные элементы зануляются - тогда сами оси и уже являются главными компонентами и поворачивать ничего не нужно.
Важная деталь: перед расчётом ковариационной матрицы данные обязательно центрируют, а часто и стандартизируют (делят на стандартное отклонение). Если признаки в разных единицах - рубли и проценты, килограммы и метры, - без стандартизации PCA будет «слушать» только признак с самым большим численным разбросом, и результат окажется бессмысленным.
Собственные значения и собственные векторы
Главные компоненты - это собственные векторы ковариационной матрицы, а дисперсия вдоль каждой компоненты равна соответствующему собственному значению. Их находят из характеристического уравнения:
Для матрицы оно раскрывается в квадратное уравнение, и собственные значения выписываются в замкнутом виде:
Большее значение отвечает первой компоненте, меньшее - второй. Угол поворота главной оси к исходной оси удобно получить из той же матрицы:
Заметьте: сумма собственных значений равна сумме дисперсий исходных признаков, . PCA не создаёт и не уничтожает разброс - он только перераспределяет его между ортогональными осями так, чтобы первые оси забрали как можно больше.

Доля объяснённой дисперсии и выбор числа компонент
Главный практический вопрос PCA: сколько компонент оставить? Ответ даёт доля объяснённой дисперсии - вклад каждой компоненты в общий разброс:
Если первая компонента объясняет 90% дисперсии, остальные можно отбросить почти безболезненно: размерность падает, а информация сохраняется. На практике компоненты добавляют по убыванию, пока накопленная доля не достигнет порога - обычно 90% или 95%.
Второй классический инструмент - график каменистой осыпи (scree plot): собственные значения откладывают по убыванию, и число компонент берут до «локтя», где кривая резко уплощается. После локтя компоненты вносят лишь шум. Калькулятор выше показывает долю объяснённой дисперсии полосой: видно, как при росте корреляции вклад PC1 быстро приближается к 100%, и одной компоненты становится достаточно.
Связь с сингулярным разложением (SVD)
На практике PCA редко считают через явную ковариационную матрицу - она может быть огромной и плохо обусловленной. Вместо этого применяют сингулярное разложение матрицы центрированных данных . Столбцы - это и есть главные компоненты, а квадраты сингулярных чисел связаны с собственными значениями: , где - число объектов. SVD численно устойчивее и работает напрямую с данными, без возведения в квадрат, которое теряет точность. Поэтому в библиотеках вроде scikit-learn под капотом метода главных компонент почти всегда лежит именно SVD, а не разложение ковариационной матрицы.
Пример расчёта на двух признаках
Разберём конкретные числа, совпадающие с настройками калькулятора по умолчанию. Пусть разброс первого признака , второго , а корреляция между ними . Тогда дисперсии равны и , а ковариация - . Ковариационная матрица принимает вид:
Подставляем в формулу собственных значений. Полусумма дисперсий равна , а подкоренное выражение - , корень из которого примерно . Отсюда:
Проверка: сумма совпадает с суммой дисперсий , как и должно быть. Доля объяснённой дисперсии первой компоненты:
То есть одна главная компонента сохраняет почти 94% разброса - двумерные данные можно смело сжать до одного числа. Угол поворота PC1 к оси выходит около . Если в калькуляторе выставить ровно эти значения, метки PC1 и PC2, собственные значения и полоса дисперсии покажут те же числа.
Частые ошибки
- Пропуск центрирования и стандартизации. Без вычитания среднего PCA найдёт направление к началу координат, а не направление разброса. Без стандартизации разнородных признаков метод подчинится признаку с наибольшим численным масштабом.
- Путаница собственных значений и векторов. Собственный вектор задаёт направление компоненты, собственное значение - дисперсию вдоль неё. Долю дисперсии считают по значениям, а не по векторам.
- Интерпретация компонент как исходных признаков. Главная компонента - это линейная комбинация всех признаков, а не один из них. Называть PC1 «по сути ростом» можно лишь с оговоркой, посмотрев на веса (нагрузки).
- Слишком жёсткий порог. Требование сохранить 99,9% дисперсии часто оставляет почти все компоненты и обнуляет смысл снижения размерности. Разумный порог - 90-95%.
- Применение к категориальным признакам напрямую. PCA работает с числовыми данными и линейными связями; категории и сильно нелинейные зависимости требуют других методов (kernel PCA, t-SNE, UMAP).
FAQ
Что показывают собственные значения в методе главных компонент? Каждое собственное значение равно дисперсии данных вдоль соответствующей главной компоненты. Сумма всех собственных значений равна суммарной дисперсии исходных признаков, а отношение к этой сумме - доля объяснённой дисперсии данной компоненты.
Сколько главных компонент нужно оставлять? Столько, чтобы накопленная доля объяснённой дисперсии достигла нужного порога - чаще всего 90% или 95%. Альтернатива - график каменистой осыпи: компоненты берут до «локтя», где собственные значения резко перестают убывать.
Чем PCA отличается от линейной регрессии? Регрессия минимизирует ошибку предсказания целевой переменной по вертикали и требует разделения на признаки и отклик. PCA не использует целевую переменную вовсе: он ищет направление максимального разброса данных и минимизирует перпендикулярные отклонения точек от оси, то есть решает задачу без учителя.
Коротко
Метод главных компонент находит ортогональные оси максимального разброса данных: главные компоненты - это собственные векторы ковариационной матрицы , а дисперсия вдоль каждой равна собственному значению . Для матрицы значения выписываются явной формулой через дисперсии и корреляцию, а доля объяснённой дисперсии подсказывает, сколько компонент оставить - обычно до накопленных 90-95%. На больших данных PCA считают через сингулярное разложение, численно более устойчивое, чем явное разложение ковариационной матрицы.
Читайте также

Алгоритм t-SNE: визуализация многомерных данных на плоскости
Алгоритм t-SNE для визуализации: как метод снижает размерность, что такое перплексия, чем t-распределение лучше нормального и как читать карту кластеров без ложных выводов.

Алгоритм UMAP: как работает снижение размерности
Алгоритм UMAP простыми словами: как метод строит граф ближайших соседей, оптимизирует низкоразмерное вложение, чем отличается от t-SNE и как подобрать n_neighbors и min_dist для визуализации данных.

Автоэнкодер (autoencoder): как сеть сжимает данные
Автоэнкодер (autoencoder) простыми словами: энкодер, латентное пространство и декодер, функция потерь реконструкции, виды сетей и где их применяют для сжатия и поиска аномалий.