Вступление
Анализ главных компонентов (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.