Метод главных компонент(PCA)

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Участник:Georgii Kvaratsкheliia 18 июля 2026

Промпт приводится полностью в Обсуждение:Метод главных компонент(PCA)


Содержание

Метод главных компонент (англ. Principal Component Analysis, PCA) — статистический метод линейного понижения размерности данных, при котором исходные (как правило, коррелированные) признаки заменяются новым набором некоррелированных переменных — главных компонент — упорядоченных по убыванию доли объясняемой ими дисперсии данных. Первая главная компонента задаёт направление в пространстве признаков, вдоль которого разброс (дисперсия) проекций данных максимален; каждая последующая — направление максимальной оставшейся дисперсии, ортогональное всем предыдущим.

PCA — один из старейших и наиболее широко используемых инструментов анализа данных: он лежит в основе визуализации многомерных данных, сжатия признаков, устранения мультиколлинеарности, шумоподавления, а в машинном обучении и искусственном интеллекте — предобработки признаков, распознавания образов (метод собственных лиц), инициализации и анализа нейронных сетей, а также служит теоретическим ориентиром для целого семейства более сложных методов — вероятностного, ядерного, разреженного и робастного PCA.

Определение

Постановка через максимизацию дисперсии

Пусть X\in\mathbb{R}^{n\times d} — матрица данных из n наблюдений по d признакам, столбцы которой предварительно центрированы (среднее каждого признака равно нулю). Первая главная компонента — единичный вектор w_1\in\mathbb{R}^d, задающий направление, вдоль которого дисперсия проекции данных максимальна:

w_1 = \arg\max_{\|w\|_2=1} \operatorname{Var}(Xw) = \arg\max_{\|w\|_2=1} w^\top C\, w,

где C=\frac{1}{n}X^\top X — выборочная ковариационная матрица. Решение этой задачи — собственный вектор C, отвечающий наибольшему собственному значению. Последующие компоненты w_2,w_3,\dots определяются той же задачей максимизации при дополнительном ограничении ортогональности всем ранее найденным направлениям, что в совокупности даёт спектральное разложение

C = W\Lambda W^\top, \qquad \Lambda=\operatorname{diag}(\lambda_1,\dots,\lambda_d),\ \ \lambda_1\ge\lambda_2\ge\cdots\ge\lambda_d\ge0,

где столбцы W — главные компоненты (нагрузки, loadings), а \lambda_i — дисперсия, объясняемая i-й компонентой. Доля объясняемой дисперсии первых k компонент равна \bigl(\sum_{i=1}^k\lambda_i\bigr)/\bigl(\sum_{i=1}^d\lambda_i\bigr) и служит стандартным критерием выбора числа компонент.

Связь с сингулярным разложением

На практике PCA почти всегда вычисляют не через явное построение C (что численно неустойчиво), а через сингулярное разложение (SVD) самой матрицы данных: X=U\Sigma V^\top, где столбцы V совпадают с главными компонентами, а «счета» (проекции наблюдений на главные компоненты) даются как T=XV=U\Sigma. Это же разложение мгновенно даёт наилучшее приближение данных рангом k в смысле нормы Фробениуса — классический результат Эккарта и Юнга: усечённое SVD X_k=U_k\Sigma_k V_k^\top минимизирует \|X-X_k\|_F среди всех матриц ранга k[1]. Иными словами, проекция данных на первые k главных компонент — это одновременно и направление максимальной дисперсии, и наилучшее в среднеквадратичном смысле линейное сжатие данных.

Мотивация

  • Проклятие размерности и визуализация. При большом числе признаков прямая визуализация невозможна; проекция на первые две-три главные компоненты часто даёт содержательное двумерное или трёхмерное представление структуры данных.
  • Устранение избыточности и мультиколлинеарности. Реальные признаки часто сильно коррелированы (например, рост и вес, различные ценовые индексы); PCA заменяет их на некоррелированный набор, что упрощает последующее статистическое моделирование и линейную регрессию.
  • Сжатие и шумоподавление. Если полезный сигнал сосредоточен в направлениях максимальной дисперсии, а шум распределён более равномерно, отбрасывание последних (наименее значимых) компонент действует как фильтр шума.
  • Ускорение последующих алгоритмов. Понижение размерности с сотен и тысяч признаков до десятков главных компонент существенно ускоряет последующие этапы обучения без значимой потери качества, если данные действительно имеют низкоразмерную линейную структуру.
  • Отбеливание (whitening). Преобразование Z=T\Lambda^{-1/2} даёт признаки с единичной дисперсией и нулевой ковариацией — стандартный этап предобработки перед некоторыми алгоритмами обучения.

История

Метод был впервые сформулирован Карлом Пирсоном в 1901 году в геометрических терминах — как поиск «линий и плоскостей наилучшего приближения» к облаку точек, минимизирующих сумму квадратов ортогональных расстояний до этой плоскости[2]; в силу теоремы Пифагора эта задача эквивалентна максимизации дисперсии проекций, что и связывает формулировку Пирсона с современным определением. Независимо, в статистическом контексте многомерного анализа психологических данных, метод переоткрыл и ввёл сам термин «главные компоненты» Гарольд Хотеллинг в 1933 году[3]. Важный для последующей вычислительной практики результат дали Эккарт и Юнг в 1936 году, доказав, что усечённое сингулярное разложение матрицы даёт наилучшее приближение низкого ранга в норме Фробениуса — именно эта теорема связывает PCA с современными численно устойчивыми алгоритмами через SVD[1].

Во второй половине XX века и особенно с развитием вычислительной техники PCA стал стандартным инструментом хемометрики, психометрики и обработки сигналов. В контексте нейронных сетей связь PCA с обучением была замечена рано: Ойя в 1982 году предложил простое правило хеббовского обучения одного линейного нейрона, сходящееся к первой главной компоненте входных данных — один из первых примеров биологически правдоподобного онлайн-алгоритма обучения представлений[4]. Болди и Хорник в 1989 году строго показали, что линейный автокодировщик, обучаемый минимизации среднеквадратичной ошибки восстановления, не имеет плохих локальных минимумов, а его оптимальное решение натягивается на то же подпространство, что и первые k главных компонент — фундаментальный мостик между PCA и нейросетевым обучением представлений[5].

Приход PCA в компьютерное зрение и распознавание образов ознаменовала работа Тёрка и Пентланда 1991 года о «собственных лицах» (Eigenfaces) — одна из первых успешных систем автоматического распознавания лиц, представляющая каждое лицо как точку в низкоразмерном подпространстве главных компонент, вычисленном по обучающему набору изображений[6]. В 1998 году Шёлкопф, Смола и Мюллер предложили ядерный PCA (kernel PCA) — нелинейное обобщение метода через ядерный трюк, позволяющее находить нелинейные главные многообразия[7]. В 1999 году Типпинг и Бишоп сформулировали вероятностный PCA (Probabilistic PCA) как модель со скрытыми переменными, оцениваемую методом максимального правдоподобия через EM-алгоритм — работа, явно связавшая PCA с более общей теорией альтернированной минимизации в задачах со скрытыми переменными[8]. В 2006 году Цзоу, Хасти и Тибширани предложили разреженный PCA (Sparse PCA), добавляющий \ell_1-регуляризацию для получения интерпретируемых, разреженных по признакам компонент[9]. В 2011 году Кандес, Ли, Ма и Райт предложили робастный PCA (Robust PCA) — метод разложения матрицы данных на низкоранговую и разреженную («выбросную») составляющие через выпуклую оптимизацию, устойчивый к грубым выбросам, к которым классический PCA чрезвычайно чувствителен[10]. В том же десятилетии Халко, Мартинссон и Тропп (2011) систематизировали рандомизированные алгоритмы вычисления PCA/SVD, сделавшие метод практически применимым к данным с миллионами наблюдений и признаков[11].

Алгоритмы вычисления

Через сингулярное разложение

Стандартный численно устойчивый способ — прямое вычисление SVD центрированной матрицы данных X=U\Sigma V^\top без явного построения ковариационной матрицы C=\frac1n X^\top X, вычисление которой возводит число обусловленности задачи в квадрат и может приводить к потере точности при большом числе признаков.

Рандомизированные алгоритмы для больших данных

Для матриц с очень большим числом строк и/или столбцов точное SVD может быть неприемлемо дорогим. Халко, Мартинссон и Тропп показали, что случайная проекция данных на низкоразмерное подпространство с последующим точным разложением этой существенно меньшей матрицы даёт приближённое SVD (и, соответственно, PCA) с контролируемой точностью и на порядки меньшей вычислительной стоимостью — подход, ставший стандартом для PCA на больших данных[11].

Онлайн-вычисление: правило Ойя

Для потоковых данных, когда полная матрица X не помещается в память или поступает последовательно, применяют онлайн-обновление вида

w_{t+1} = w_t + \eta_t\, y_t\,(x_t - y_t w_t), \qquad y_t = w_t^\top x_t,

известное как правило Ойя — стохастическая аппроксимация, сходящаяся к первой главной компоненте по мере поступления наблюдений x_t[4].

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

Вероятностный PCA задаёт порождающую модель x = Wz+\mu+\varepsilon, где z\sim\mathcal N(0,I_k) — скрытые переменные меньшей размерности, а \varepsilon\sim\mathcal N(0,\sigma^2 I_d) — изотропный шум. Маргинальное распределение наблюдаемых данных при этом гауссово: x\sim\mathcal N(\mu,\,WW^\top+\sigma^2 I_d), а параметры W,\sigma^2 оцениваются максимизацией правдоподобия; при \sigma^2\to0 максимально правдоподобное решение совпадает с классическим PCA[8]. Оценка параметров естественно осуществляется EM-алгоритмом — тем самым PCA оказывается частным случаем общей схемы обучения латентных переменных моделей, обсуждаемой в статье «Альтернированная минимизация». Помимо теоретической ценности, вероятностная формулировка даёт естественный способ обработки пропущенных значений и байесовский выбор числа компонент.

Нелинейные и структурные обобщения

Ядерный PCA

Заменяя скалярное произведение \langle x_i,x_j\rangle на значение ядерной функции k(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle для некоторого нелинейного отображения \phi в пространство более высокой (возможно, бесконечной) размерности, можно вычислить главные компоненты в этом пространстве признаков, не вычисляя \phi явно — эквивалентная задача сводится к собственному разложению центрированной матрицы Грама K_{ij}=k(x_i,x_j)[7]. Это позволяет находить нелинейные структуры (искривлённые многообразия) там, где линейный PCA неэффективен.

Разреженный PCA

Классические главные компоненты, как правило, являются плотными линейными комбинациями всех исходных признаков, что затрудняет их содержательную интерпретацию. Цзоу, Хасти и Тибширани переформулировали задачу как регрессию с эластичной сетью (\ell_1+\ell_2-регуляризация), дающую компоненты с малым числом ненулевых нагрузок при сохранении большей части объясняемой дисперсии[9].

Робастный PCA

Классический PCA чрезвычайно чувствителен к выбросам: даже одно сильно искажённое наблюдение может произвольно исказить найденные компоненты. Кандес, Ли, Ма и Райт показали, что при определённых условиях можно точно восстановить низкоранговую составляющую данных, даже если неизвестная, но разреженная доля элементов матрицы повреждена сколь угодно сильно, решая выпуклую задачу Principal Component Pursuit:

\min_{L,S}\ \|L\|_* + \lambda\|S\|_1 \quad \text{при}\quad X = L+S,

где \|L\|_* — ядерная норма (сумма сингулярных чисел), являющаяся выпуклой релаксацией ранга, а \|S\|_1 поощряет разреженность матрицы выбросов S[10].

Применения в машинном обучении и искусственном интеллекте

Предобработка и понижение размерности признаков

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

Собственные лица и распознавание образов

Модель Eigenfaces Тёрка и Пентланда представляет каждое изображение лица как точку в низкоразмерном подпространстве, натянутом на главные компоненты обучающего набора лиц, а распознавание сводится к сравнению координат в этом подпространстве — подход, оказавший огромное влияние на раннее компьютерное зрение и остающийся учебным эталоном[6].

Линейные автокодировщики и глубокое обучение

Результат Болди и Хорника о том, что линейный автокодировщик с MSE-функцией потерь восстанавливает то же подпространство, что и PCA, без плохих локальных минимумов, объясняет, почему PCA часто используют как быстрый ориентир для оценки качества нелинейных автокодировщиков и как способ инициализации весов линейных слоёв нейронных сетей[5].

Матричная факторизация и рекомендательные системы

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

Обнаружение аномалий и очистка данных

Наблюдения с большой невязкой при проекции на подпространство первых главных компонент и обратной реконструкции часто интерпретируются как аномалии или выбросы; робастный PCA прямо формализует эту идею, отделяя типичную низкоранговую структуру от разреженных «аномальных» отклонений[10].

PCA для больших данных и потоковых систем

Рандомизированные алгоритмы PCA/SVD и онлайн-правило Ойя делают метод применимым в системах, обрабатывающих потоки данных или наборы с миллионами признаков — от систем рекомендаций до анализа геномных данных[4][11].

Ограничения и практические аспекты

  • Линейность. PCA находит только линейные подпространства; данные с существенно нелинейной структурой (например, лежащие на искривлённом многообразии) требуют ядерного PCA, автокодировщиков или методов вроде t-SNE и UMAP, которые, однако, решают другую задачу (визуализацию локальной структуры), а не линейное сжатие.
  • Чувствительность к масштабу признаков. Поскольку PCA максимизирует дисперсию, признаки с большим численным диапазоном доминируют в первых компонентах вне зависимости от содержательной значимости; на практике перед PCA данные почти всегда стандартизируют (приводят к единичной дисперсии).
  • Чувствительность к выбросам. Дисперсия — статистика, крайне чувствительная к редким большим отклонениям; для данных с грубыми ошибками измерения предпочтительнее робастный PCA[10].
  • Отсутствие учёта меток. PCA — метод обучения без учителя: он максимизирует дисперсию признаков, а не разделимость классов, и может отбросить направления с малой дисперсией, но высокой различительной способностью; для задач классификации альтернативой или дополнением служит линейный дискриминантный анализ.
  • Интерпретируемость компонент. Плотные линейные комбинации всех исходных признаков в компонентах общего PCA часто трудно интерпретировать содержательно; разреженный PCA — прямой ответ на эту проблему[9].
  • Выбор числа компонент. Универсального правила не существует; на практике используют долю объяснённой дисперсии, график собственных значений («каменистая осыпь», scree plot) или кросс-валидацию по качеству последующей задачи.

См. также

Примечания

  1. Eckart C., Young G. The approximation of one matrix by another of lower rank // Psychometrika. — 1936. — Т. 1, № 3. — С. 211–218.
  2. Pearson K. On lines and planes of closest fit to systems of points in space // The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science, Series 6. — 1901. — Т. 2, № 11. — С. 559–572.
  3. Hotelling H. Analysis of a complex of statistical variables into principal components // Journal of Educational Psychology. — 1933. — Т. 24, № 6. — С. 417–441.
  4. Oja E. A simplified neuron model as a principal component analyzer // Journal of Mathematical Biology. — 1982. — Т. 15, № 3. — С. 267–273.
  5. Baldi P., Hornik K. Neural networks and principal component analysis: Learning from examples without local minima // Neural Networks. — 1989. — Т. 2, № 1. — С. 53–58.
  6. Turk M., Pentland A. Eigenfaces for recognition // Journal of Cognitive Neuroscience. — 1991. — Т. 3, № 1. — С. 71–86.
  7. Schölkopf B., Smola A., Müller K.-R. Nonlinear component analysis as a kernel eigenvalue problem // Neural Computation. — 1998. — Т. 10, № 5. — С. 1299–1319.
  8. Tipping M. E., Bishop C. M. Probabilistic Principal Component Analysis // Journal of the Royal Statistical Society: Series B (Statistical Methodology). — 1999. — Т. 61, № 3. — С. 611–622.
  9. Zou H., Hastie T., Tibshirani R. Sparse principal component analysis // Journal of Computational and Graphical Statistics. — 2006. — Т. 15, № 2. — С. 265–286.
  10. Candès E. J., Li X., Ma Y., Wright J. Robust principal component analysis? // Journal of the ACM. — 2011. — Т. 58, № 3. — Статья 11.
  11. Halko N., Martinsson P. G., Tropp J. A. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions // SIAM Review. — 2011. — Т. 53, № 2. — С. 217–288.
  12. Koren Y., Bell R., Volinsky C. Matrix factorization techniques for recommender systems // Computer. — 2009. — Т. 42, № 8. — С. 30–37.

Литература

  • Jolliffe I. T. Principal Component Analysis. — 2-е изд. — Springer Series in Statistics. — Springer, 2002.
  • Jolliffe I. T., Cadima J. Principal component analysis: a review and recent developments // Philosophical Transactions of the Royal Society A. — 2016. — Т. 374, № 2065.
  • Eckart C., Young G. The approximation of one matrix by another of lower rank // Psychometrika. — 1936. — Т. 1, № 3. — С. 211–218.
  • Tipping M. E., Bishop C. M. Probabilistic Principal Component Analysis // Journal of the Royal Statistical Society: Series B. — 1999. — Т. 61, № 3. — С. 611–622.
  • Candès E. J., Li X., Ma Y., Wright J. Robust principal component analysis? // Journal of the ACM. — 2011. — Т. 58, № 3. — Статья 11.
  • Halko N., Martinsson P. G., Tropp J. A. Finding structure with randomness // SIAM Review. — 2011. — Т. 53, № 2. — С. 217–288.
Личные инструменты