Руководство для начинающих по анализу главных компонентов
Анализ главных компонентов (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.
В следующий раз, когда вы будете иметь дело с многомерным набором данных или данными с коррелированными переменными, вспомните эту статью.