Руководство для начинающих по анализу главных компонентов

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

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

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

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

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

Собственные векторы и собственные значения. Собственные векторы ковариационной матрицы — это главные компоненты (PC), а соответствующие собственные значения — это дисперсия, объясняемая каждым PC.

Уменьшение размерности. Затем данные можно спроецировать на выбранные компьютеры путем умножения исходной матрицы данных на матрицу компьютеров. Это приводит к низкоразмерному представлению данных.

Реконструкция: при необходимости сокращенные данные могут быть восстановлены обратно в исходное пространство путем умножения матрицы уменьшенных данных на транспонированную матрицу ПК.

Что такое главный компонент?

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

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

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

Понимание основных компонентов

ПК — это направления, в которых данные изменяются больше всего. Чтобы понять ПК, вы можете рассмотреть следующее:

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

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

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

Визуализация данных. Вы также можете использовать визуализацию данных, такую ​​как точечные диаграммы или побочные графики, для понимания ПК. Диаграммы рассеивания могут показать вам, как данные распределяются по каждому компьютеру, а побочные диаграммы могут показать взаимосвязь между исходными объектами и компьютерами.

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

Математика PCA

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

Далее вычисляется ковариационная матрица

Ковариационная матрица = (1/n) * X ^ T * X

где X — матрица данных с n выборками и p функциями.

Затем собственные векторы и собственные значения получаются путем решения следующего уравнения:

Ковариационная матрица * v = лямбда * v

где v — собственный вектор, а лямбда — соответствующее собственное значение.

Чтобы завершить уменьшение размерности, данные затем можно спроецировать на выбранные ПК, умножив исходную матрицу данных на матрицу ПК:

X_reduced = X * ПК

Чтобы восстановить уменьшенные данные обратно в исходное пространство, мы умножаем уменьшенную матрицу данных на транспонированную матрицу ПК:

X_reconstructed = X_reduced * PCs^T

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

Анализ главных компонентов: количественные приложения

Анализ главных компонентов серии Springer

Обобщенный анализ главных компонент

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

Концептуальные знания — это хорошо, но что, если вы хотите реализовать PCA на Python.

1. Импортируйте необходимые библиотеки

Вам понадобится NumPy для числовых операций и matplotlib для построения графиков.

import numpy as np

import matplotlib.pyplot as plt

2. Загрузите данные

Вы можете использовать такую ​​функцию, как loadtxt из NumPy, для чтения данных из файла. В качестве альтернативы вы можете создать набор данных вручную, используя массивы NumPy, или использовать пакет, такой как pandas, для чтения в csv.

data = np.loadtxt(‘data.txt’)

3. Стандартизируйте данные

Перед выполнением PCA важно стандартизировать данные, так как это может помочь гарантировать, что все переменные находятся в одном масштабе. Вы можете стандартизировать данные, вычитая среднее значение из каждого значения и разделив его на стандартное отклонение.

mean = np.mean(data, axis=0)

std = np.std(data, axis=0)

data = (data — mean) / std

4. Вычислить ковариационную матрицу

Ковариационная матрица — это мера взаимосвязи между различными переменными в наборе данных. Вы можете вычислить ковариационную матрицу, используя функцию cov из NumPy.

cov_matrix = np.cov(data, rowvar=False)

5. Вычислить собственные значения и собственные векторы

Вы можете вычислить собственные значения и собственные векторы, используя функцию eig из NumPy.

eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)

6. Отсортируйте собственные значения и собственные векторы в порядке убывания

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

idx = np.argsort(-eigenvalues)

eigenvalues = eigenvalues[idx]

eigenvectors = eigenvectors[:,idx]

7. Выберите k главных компонентов

Чтобы уменьшить размерность набора данных, вы можете выбрать k главных компонентов, где k — заданный пользователем параметр. Вы можете выбрать k главных компонентов путем разрезания массива собственных векторов.

k = 2

eigenvectors = eigenvectors[:,:k]

8. Спроецируйте данные на основные компоненты

Вы можете использовать выбранные главные компоненты для проецирования данных в пространство более низкого измерения. Для этого вы умножаете данные на транспонирование собственных векторов.

projected_data = np.dot(data, eigenvectors.T)

9. Визуализируйте результаты (необязательно)

Вы можете использовать такую ​​функцию, как разброс из matplotlib, для визуализации проецируемых данных.

plt.scatter(projected_data[:,0], projected

Теперь у вас есть понимание того, почему и как использовать PCA, основные уравнения и реализацию в Python.

В следующий раз, когда вы будете иметь дело с многомерным набором данных или данными с коррелированными переменными, вспомните эту статью.