Анализ данных • 15 января 2025 • 5 мин чтения

Как работает метод главных компонент (PCA) — на простом примере

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

Основные понятия

Главные компоненты

Главные компоненты (Principal Components) — это ключевые элементы метода PCA (Principal Component Analysis), которые позволяют преобразовывать исходные данные в более удобную для анализа форму. Они представляют собой новые переменные, которые получаются в результате линейного преобразования исходных данных. Главные компоненты устроены так, чтобы максимально упростить анализ и выделить наиболее важные закономерности.

В чём же смысл главных компонент? Рассмотрим, к примеру, многомерный набор данных, например характеристики разных сортов винограда: кислотность, содержание сахара, цвет и т. д. Эти характеристики могут быть сильно взаимосвязаны, что затрудняет анализ. PCA позволяет найти те направления в данных, где находится основная часть их вариативности. Эти направления и называются главными компонентами.

Первая главная компонента — это направление, вдоль которого разброс данных максимален. Она содержит максимальную информацию о различиях в данных. Вторая главная компонента перпендикулярна первой и содержит вторую по значимости часть вариативности, и т. д. Каждая следующая компонента объясняет всё меньшую часть общей дисперсии данных.

Важно отметить, что главные компоненты — это не реальные измерения, которые изначально есть в данных. Это искусственно созданные оси, которые помогают представить данные более компактно и осмысленно. Например, если было десять исходных характеристик, то после применения PCA может оказаться, что всего двух или трёх главных компонент достаточно, чтобы объяснить большую часть вариативности.

Метод PCA помогает не только проводить исследования, но и наглядно демонстрировать их результаты. Но это очень малая часть математики, вокруг которой построен современный анализ данных. На курсе «Математика для анализа данных» студенты учатся математическому анализу, линейной алгебре, теории вероятностей и основам статистики, что позволяет осмысленно пользоваться многими мощными инструментами анализа данных.

Собственные значения и собственные векторы
Чтобы понять, как работает метод главных компонент (PCA), необходимо разобраться с двумя ключевыми математическими понятиями: собственными значениями и собственными векторами.

В математике собственные значения и собственные векторы находят через специальное уравнение: 𝐴 • 𝑣 = λ • 𝑣, где 𝐴 — исходная матрица, 𝑣 — собственный вектор, а λ — собственное значение. Решение этого уравнения даёт нам те направления, которые максимально важны для анализа данных, и величины, показывающие значимость каждого направления.

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

Нахождение двух главных компонент
Проекция данных на главные компоненты

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

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

Проекция данных

Проецируя данные, мы переводим их из исходной системы координат (где переменные могут быть коррелированы) в новую, где каждая компонента независима от других. Это помогает не только снизить размерность данных, но и сделать их анализ более интерпретируемым.

Применение метода главных компонент

Анализ данных

Применение метода главных компонент (PCA) для анализа данных стало популярным благодаря его способности выявлять ключевые закономерности и структурировать сложные наборы данных. В современных исследованиях и бизнес-процессах массивы данных становятся всё более многомерными, а PCA позволяет упростить их интерпретацию.

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

  1. Идентифицировать скрытые паттерны. Например, в медицинских исследованиях PCA может выделить сочетания симптомов или показателей, по которым наиболее сильно различаются группы пациентов.
  2. Упростить модели. Многомерные данные часто содержат коррелированные переменные. PCA уменьшает их количество, сохраняя основную информацию, что облегчает построение моделей машинного обучения.
  3. Улучшить визуализацию. Даже самые сложные наборы данных можно сделать более понятными, сведя их к двум-трём главным компонентам и представив в виде графиков.

В аналитических задачах PCA выполняет несколько ключевых функций:

  • выделение аномалий или трендов в данных;
  • снижение влияния шума путём фильтрации менее значимых компонент;
  • оценка степени зависимости между переменными.

Пример: рассмотрим исследование потребительских предпочтений. Исходный набор данных может содержать десятки вопросов анкеты, но их проекция на две-три главные компоненты покажет, как потребители делятся на группы по схожести предпочтений.

Снижение размерности данных

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

Современные данные часто страдают от так называемого «проклятия размерности». Чем больше переменных в наборе данных, тем сложнее:

● выявлять закономерности;
● исключать шумовые или нерелевантные переменные;
● обучать модели без риска переобучения.

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

Как это работает?

1. Исходные данные преобразуются с учётом их центра тяжести, чтобы среднее значение всех переменных стало нулевым.
2. Вычисляются собственные векторы и собственные значения матрицы ковариации данных. Эти векторы указывают направления, вдоль которых данные варьируются наиболее сильно.
3. Данные проецируются на несколько первых главных компонент. Выбор количества компонент определяется долей объяснённой дисперсии, которую они покрывают. Например, если первые три компоненты объясняют 90% дисперсии, их достаточно для анализа.

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

Визуализация данных

Визуализация данных является одной из наиболее ярких и полезных сторон применения метода главных компонент (PCA). Этот процесс позволяет свести многомерные данные к двум или трём измерениям, что делает их подходящими для графического представления. Такие визуализации помогают лучше понять структуру данных, выявить скрытые закономерности и увидеть группировку объектов.

Зачем нужна визуализация данных с использованием PCA?

  1. Упрощение анализа. Даже очень сложные наборы данных могут быть упрощены до нескольких главных компонент, что позволяет наглядно представить основные различия между наблюдениями.
  2. Выявление кластеров. PCA часто используется для определения групп объектов, которые имеют схожие характеристики. Например, можно визуально разделить клиентов на группы по их поведению.
  3. Обнаружение выбросов. Выбросы легко заметить на графиках, где главные компоненты создают новую систему координат.

Как происходит визуализация?

  1. Снижение размерности. После вычисления главных компонент данные проецируются на две или три из них — это те компоненты, которые объясняют максимальную часть дисперсии.
  2. Построение графиков. Наиболее распространённый метод визуализации — двухмерный график (scatter plot), где оси соответствуют первым двум главным компонентам. Также используются трёхмерные графики, если необходимо отразить больше информации.
  3. Интерпретация результата. Каждая точка на графике представляет одно наблюдение. Расстояния между точками показывают, насколько сильно они отличаются друг от друга.

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

Преимущества визуализации с PCA:

  • повышается наглядность многомерных данных;
  • ускоряется принятие решений, особенно при работе с большими наборами данных;
  • легче определяется стратегия дальнейшего анализа.

Реализация метода главных компонент

Алгоритм PCA

1. Подготовка данных.
○ Все переменные должны быть числовыми. Если в наборе данных присутствуют категориальные переменные, их нужно закодировать.
○ Данные стоит масштабировать так, чтобы каждая переменная имела нулевое среднее и единичную дисперсию. Это позволяет избежать доминирования переменных с большими значениями.
2. Вычисление матрицы ковариации.
○ Нужно построить матрицу ковариации, которая отражает степень зависимости между различными переменными. Элементы этой матрицы показывают, как изменения одной переменной связаны с изменениями другой.
3. Нахождение собственных векторов и собственных значений.
○ Должны быть найдены собственные значения и собственные векторы матрицы ковариации. Собственные значения показывают, сколько вариативности объясняет каждая главная компонента, а собственные векторы определяют направления этих компонент.
4. Сортировка компонент.
○ Собственные значения сортируются в порядке убывания. Это позволяет выделить главные компоненты, которые объясняют наибольшую часть дисперсии данных.
5. Формирование новой базы координат.
○ Матрица преобразования строится из собственных векторов, соответствующих выбранным главным компонентам. Эти векторы образуют новую систему координат.
6. Проекция данных.
○ Исходные данные умножаются на матрицу собственных векторов. Результатом будет набор данных, представленный в пространстве главных компонент.

Ключевые особенности алгоритма

● Объяснённая дисперсия: при выборе количества главных компонент ориентируются на долю объяснённой дисперсии. Обычно используют те компоненты, которые в совокупности объясняют 80–95% вариативности.
● Простота вычислений: алгоритм требует выполнения стандартных операций линейной алгебры, что делает его легко реализуемым на практике.

Реализация на Python

Метод главных компонент (PCA) легко реализуется на Python благодаря мощным библиотекам для анализа данных, таким как NumPy, pandas и scikit-learn. Ниже представлена пошаговая реализация PCA на примере анализа набора данных о характеристиках цветков ириса из библиотеки scikit-learn.

Шаг 1. Импорт необходимых библиотек.

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

Шаг 2. Загрузка данных.

Используем набор данных iris, который включает характеристики цветков ириса. Он доступен в библиотеке scikit-learn:

from sklearn.datasets import load_iris

# Загрузка данных
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)

Шаг 3. Стандартизация данных.

Для корректной работы PCA необходимо масштабировать данные, чтобы каждая переменная имела одинаковый вес:

scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

Шаг 4. Применение PCA.

Теперь мы применим PCA для снижения размерности данных до двух компонент:

# Инициализация PCA
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data_scaled)

# Преобразование результата в DataFrame
pca_result = pd.DataFrame(data_pca, columns=['PC1', 'PC2'])

Шаг 5. Визуализация результатов.

Для наглядности создадим график, отображающий данные в пространстве главных компонент:

# Добавление меток классов
pca_result['target'] = iris.target

# Построение графика
plt.figure(figsize=(8, 6))
for target, color in zip([0, 1, 2], ['r', 'g', 'b']):
subset = pca_result[pca_result['target'] == target]
plt.scatter(subset['PC1'], subset['PC2'], label=iris.target_names[target], color=color)

plt.title('PCA: Iris Dataset')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend()
plt.grid()
plt.show()

Результат работы программы

Интерпретация результатов

На графике можно увидеть, как данные о цветках разделяются на группы в пространстве двух главных компонент. Эти группы соответствуют трём видам ирисов. Главные компоненты не только позволяют визуализировать данные, но и сохраняют большую часть их вариативности, несмотря на снижение размерности.

Статью подготовили:
Богдан Сиротич
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Вакансии, зарплаты, навыки в 2025 году: бесплатный вебинар с экспертами ведущих IT-компаний 28 января в 19:00
Wed Jan 15 2025 11:38:58 GMT+0300 (Moscow Standard Time)