0. Введение

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

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

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

1. Полезные библиотеки

NumPy — это основная библиотека для научных вычислений в Python. Он используется для:

1. Массивы

2. Матрицы

3. Линейная алгебра

4. Генерация случайных чисел

И более!

Scikit-learn – это бесплатная библиотека машинного обучения для Python. Он используется для:

1. Классификация

2. Регрессия

3. Кластеризация

4. Снижение размерности

5. Выбор модели

6. Предварительная обработка

И более!

2. Анализ основных компонентов (PCA)

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

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

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

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

  • Левая сингулярная матрица содержит собственные векторы ковариационной матрицы.
  • Правая сингулярная матрица содержит собственные векторы матрицы данных.
  • Диагональная матрица содержит собственные значения ковариационной матрицы.

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

Процедуру PCA можно резюмировать следующим образом:

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

1. Вычислите ковариационную матрицу данных.

2. Вычислите собственные векторы и собственные значения ковариационной матрицы.

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

4. Выберите первые k собственных векторов, где k — количество желаемых главных компонент.

5. Вычислите проекцию данных на выбранные собственные векторы.

Реализация Python

Вы можете скопировать/вставить эти строки в вашу любимую IDE. Если вы не знаете, какой выбрать, я рекомендую PyCharm.

Вот пошаговое объяснение того, что мы делаем в приведенном выше коде:

  1. Мы генерируем некоторые данные.

Обратите внимание, что мы не центрируем данные, потому что среднее значение уже равно 0.

  1. Мы вычисляем фактическую ковариационную матрицу данных.
  2. Мы вычисляем собственные векторы и собственные значения ковариационной матрицы.
  3. Мы сортируем собственные векторы по убыванию собственного значения.
  4. Мы выбираем первые два собственных вектора и вычисляем проекцию данных на выбранные собственные векторы.

Посмотрите, как мы вычисляем объясненный коэффициент дисперсии в строке 35. Оно равно [0,93134786,0,06865214]. Это означает, что только первый компонент объясняет около 93% дисперсии наших данных, а второй обеспечивает только увеличение на 6,9%. Накопленная сумма равна 100%, что означает, что две основные компоненты объясняют всю дисперсию в наших данных.

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

6 . Мы сравниваем наше решение с scikit-learn

7.Наносим данные на график.

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

8.Мы удаляем наиболее информативный компонент из данных и смотрим, что происходит с данными.

Это вполне объяснимо. Затем все точки данных проецируются на вторую ось.

9.Мы удалим из данных второй по информативности компонент и посмотрим, что произойдет с данными.

В результате все точки данных проецируются на первую ось, объясняющую наибольшую дисперсию.

10.Ради интереса мы сравниваем с линейной регрессией.

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

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

4. Вывод

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

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