Введение

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

Проклятие размерности

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

Основные принципы PCA

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

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

Чтобы узнать больше о математике, лежащей в основе PCA, посетите: https://www.analyticsvidhya.com/blog/2021/09/pca-and-its-underlying-mathematical-principles/

Анализ основных компонентов с помощью Python

PCA можно реализовать на Python с помощью библиотеки scikit-learn. В следующем коде показано, как выполнить PCA для набора данных с помощью scikit-learn:

# import necessary libraries
from sklearn.decomposition import PCA
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
%matplotlib inline

# Generate sample data
X, y = make_classification(n_samples=10000, n_features=30, n_informative=15, n_classes=2)

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

# Perform PCA
pca = PCA(n_components=2)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

# Visualize the Components
plt.figure(figsize=(8,6))
plt.scatter(X_train_pca[:,0],X_train_pca[:,1],c=y_train,cmap='plasma')
plt.xlabel('First principal component')
plt.ylabel('Second Principal Component')

Код в данном блоке кода выполняет анализ основных компонентов (PCA) для образца набора данных бинарной классификации, созданного с использованием функции «make_classification» из библиотеки «sklearn.datasets». Набор данных содержит 30 признаков, 15 из которых являются информативными, и разбит на два класса. Перед применением PCA набор данных разбивается на обучающую и тестовую выборки в соотношении 70/30 с помощью функции «train_test_split» из библиотеки «sklearn.model_selection» с установленным размером теста 0,3.

PCA выполняется на тренировочном наборе с использованием класса PCA из библиотеки «sklearn.decomposition» с количеством компонентов, равным 2. Модель PCA подгоняется к обучающим данным с помощью метода «fit_transform», а преобразованные данные сохраняются. в «X_train_pca». Затем к тестовому набору применяется метод преобразования для получения преобразованных тестовых данных, хранящихся в «X_test_pca».

Наконец, создается точечная диаграмма для визуализации двух основных компонентов, при этом цвет каждой точки на точечной диаграмме определяется меткой целевого класса образца. Ось X представляет первый главный компонент, ось Y представляет второй главный компонент, и цель этой визуализации состоит в том, чтобы увидеть, могут ли два основных компонента эффективно разделить два класса набора данных.

Преимущества СПС

  1. Визуализация данных. PCA можно использовать для визуализации многомерных данных в низкоразмерном пространстве, что упрощает визуализацию шаблонов и взаимосвязей в данных.
  2. Сжатие данных. PCA можно использовать для уменьшения количества объектов в наборе данных, что приводит к уменьшению размера данных. Это может привести к более быстрому времени вычислений и меньшему использованию памяти.
  3. Подавление шума. PCA можно использовать для уменьшения влияния шума на данные. Это может быть особенно полезно в случаях, когда шум присутствует в большом количестве признаков, поскольку PCA может эффективно удалить шум, уменьшив количество признаков.
  4. Извлечение признаков. PCA можно использовать для извлечения новых признаков из данных, которые являются более информативными и фиксируют базовую структуру данных. Это может привести к повышению производительности алгоритмов машинного обучения.
  5. Обработка мультиколлинеарности. PCA можно использовать для обработки мультиколлинеарности — распространенной проблемы в регрессионном анализе, когда два или более признаков сильно коррелируют. PCA может помочь уменьшить количество коррелирующих признаков и улучшить интерпретируемость результатов регрессии.

Заключение

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

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

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

В моих следующих статьях я буду использовать PCA для обнаружения аномалий в анализе данных о мошенничестве. Не стесняйтесь обращаться ко мне в LinkedIn для получения дополнительных запросов.