Вступление

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

Шаги, включенные в СПС

Шаг 1: стандартизируйте набор данных.

Шаг 2. Рассчитайте ковариационную матрицу для объектов в наборе данных.

Шаг 3:. Вычислите собственные значения и собственные векторы для ковариационной матрицы.

Шаг 4. Отсортируйте собственные значения и соответствующие им собственные векторы.

Шаг 5: Выберите k собственных значений и сформируйте матрицу собственных векторов.

Шаг 6. Преобразуйте исходную матрицу.

Давайте перейдем к каждому шагу по порядку.

1. Стандартизируйте набор данных

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

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

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

2. Рассчитайте ковариационную матрицу для всего набора данных.

Формула для вычисления ковариационной матрицы:

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

Поскольку мы стандартизировали набор данных, поэтому среднее значение для каждой функции равно 0, а стандартное отклонение - 1.

var (f1) = ((-1.0-0) ² + (0.33-0) ² + (-1.0-0) ² + (0.33–0) ² + (1.33–0) ²) / 5
var (f1) = 0,8

cov (f1, f2) =
((-1,0–0) * (- 0,632456-0) +
(0,33–0) * (1,264911-0) +
(-1,0– 0) * (0,632456-0) +
(0,33–0) * (0,000000 -0) +
(1,33–0) * (- 1,264911–0)) / 5
cov (f1, f2 = -0,25298

Таким же образом можно вычислить другие ковариации, что приведет к следующей ковариационной матрице

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

Собственный вектор - это ненулевой вектор, который изменяется не более чем на скалярный коэффициент, когда к нему применяется линейное преобразование. Соответствующее собственное значение является коэффициентом масштабирования собственного вектора.

Пусть A - квадратная матрица (в нашем случае ковариационная матрица), ν - вектор, а λ - скаляр, удовлетворяющий условию Aν = λν, тогда λ называется собственным значением, связанным с собственным вектором ν матрицы A.
Преобразуя приведенное выше уравнение,

Aν-λν =0 ; (A-λI)ν = 0

Поскольку мы уже знаем, что ν - ненулевой вектор, это уравнение может быть равно нулю только в том случае, если

det (A-λI) = 0

Решение вышеуказанного уравнения = 0

λ = 2.51579324 , 1.0652885 , 0.39388704 , 0.02503121

Собственные векторы:

Решение уравнения (A-λI) ν = 0 для вектора ν с различными значениями λ:

Для λ = 2,51579324, решая вышеуказанное уравнение с использованием правила Крамера, значения для вектора v равны

v1 = 0.16195986
v2 = -0.52404813
v3 = -0.58589647
v4 = -0.59654663

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

4. Сортировка собственных значений и соответствующих им собственных векторов.

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

5. Выберите k собственных значений и сформируйте матрицу собственных векторов

Если мы выберем два верхних собственных вектора, матрица будет выглядеть так:

6. Преобразуйте исходную матрицу.

Матрица характеристик * верхние k собственных векторов = преобразованные данные

Сравните с библиотекой sklearn

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

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