Анализ главных компонентов — это стандартный метод, используемый для уменьшения размерности во многих ситуациях, но он также может предоставить большой объем информации о поведении набора данных. Он объединяет три «отдельные» области математики, геометрии, линейной алгебры и статистики; это проблема собственных значений/собственных векторов, которую также можно рассматривать как геометрическое преобразование пространства, применяемое к распределениям данных. Это достигается за счет создания новых некоррелированных переменных, которые максимизируют дисперсию. В этой статье мы попытаемся понять математическую основу этой техники, а также поиграем с некоторым кодом Python.

Основные понятия части 1:

  1. Векторное пространство
  2. Внутренний продукт
  3. Линейное преобразование
  4. Собственные векторы и собственные значения
  5. Ковариационная матрица

Векторное пространство

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

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

Внутренний продукт

Внутренний продукт — это операция, которая принимает два вектора и «выдает» скаляр, то есть одно число. В евклидовом пространстве эта операция определяется как сумма произведения координат векторов, например:

изделие имеет интересную геометрическую интерпретацию, оно измеряет угол между двумя векторами. Представьте себе теперь произвольное распределение данных с pпризнаками и nвходными данными, объектами, отдельными лицами, или составляющими, обнаруженными в типах вина (да, вы угадали!Очередная средняя статья с клише-набором данных.Судите, мне плевать :) ).

Каждый ряд представляет собой образец одного из трех видов вина, описываемых в общей сложности 13 признаками (алкоголь, яблочная кислота и т. д.). Эти данные находятся в n-мерном (13-мерном) пространстве, и мы можем вычислить внутренний продукт между столбцами. Угол между векторами многое говорит об их поведении: когда мы централизуемнаши данные (удаляем из них среднее значение), внутренний продукт представляет собой то же самое, что корреляция переменные! с помощью pandas мы можем вычислить корреляционную матрицу так же просто, как df.corr(), и это дает:

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

Это довольно интуитивно понятно, если вы помните значения косинуса угла. она меняется от 0 до 1 (точно так же, как корреляция), чем меньше угол, тем больше косинус, и чем ближе векторы, то есть тем они более похожи, следовательно, тем выше корреляция между ними. когда угол равен 90 градусам (PI/2), векторы перпендикулярны, косинус равен нулю, и говорят, что векторы линейно независимы. если угол больше 90, векторы начинают указывать в противоположных направлениях и корреляция становится отрицательной.

Линейная трансформация — грубо говоря

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

Линейное преобразование — это функция L с областью определения V и изображением W (V и W — векторные пространства), удовлетворяющими:

  1. L(v+ u) = L(v) + L(u). (свойство аддитивности)
  2. L(cv) = cL(v) для всех v в V и любого действительного числа c. (свойство однородности)

если V=W, линейное преобразование L: V → V также называется линейным оператором.

ради этой статьи мы можем рассматривать R^k как наше векторное пространство, но следует помнить, что векторные пространства — это абстрактные сущности, а R^k — это всего лишь один из видов представления. Базовым примером линейного преобразования является отражение по оси Y:

Оказывается, когда у нас есть четко определенные векторные пространства, такие как R^n, мы можем представлять наши линейные преобразования посредством матричных операций. Предположим, что линейное преобразование L: R^n -> R^m переводит векторы из n-мерного пространства в m-мерное пространство. Одну матрицу A(m x n) можно связать с L. Эта матрица будет ключом к определению собственных векторов и собственных значений линейного преобразования, и с их помощью мы разрабатываем анализ главных компонентов. Но сначала давайте просто для развлечения поработаем с простым примером и напишем немного кода.

Давайте возьмем простое двумерное распределение, как указано выше, наши первые игрушечные данные в этом уроке:

Наши точки данных — это объекты (векторы) нашего векторного пространства (2-мерная реальная плоскость), определяемые их координатами (x, y). Линейное преобразование, о котором мы можем думать, — это вращение против часовой стрелки на произвольный угол альфа, определенный матрицей:

Итак, в Python мы можем построить эту матрицу следующим образом:

def rotation_matrix(alpha)
    R_alpha = np.asarray([[np.cos(alpha), -np.sin(alpha)],
                        np.sin(alpha), np.cos(alpha)]])
    return R_alpha

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

Если вы присмотритесь, то сможете убедиться, что «внутренняя структура» наших точек данных и расстояния между ними сохраняются при их вращении. Если вам интересно, я поместил код для создания этих изображений в суть (простые вещи):

‹script src=»https://gist.github.com/netofigueira/94fba3390fd65a400d9d8fa35fdada6b.js'›‹/script›

Собственные векторы и собственные значения

Имея в виду концепции векторных пространств и линейных преобразований, мы можем обсудить последнюю теоретическую часть, помогающую понять метод PCA, собственные векторы и собственные значения. Возьмите произвольный линейный оператор L и его соответствующее матричное представление A (не забывайте, что мы можем связать матрицы с линейными операторами), то есть линейное преобразование который переносит векторы в одно и то же векторное пространство V. Очень частый и распространенный вопрос (поверьте, это так), который мы можем задать: после применения L к вектору v результирующий вектор L(v) = Avпропорционально v, т. е. Av= λv (уравнение 1),где лямбда — действительное число .

Рисунок 7 иллюстрирует такой случай, это довольно просто, не так ли?

Тривиальный, но важный факт: собственные векторы не могут быть нулевыми, иначе каждое число было бы собственным значением. Возвращаясь к уравнению 1, мы можем переписать его так:

(A-λI)v = 0

Это, пожалуй, самое важное уравнение линейной алгебры. Собственные векторы всегда отличны от нуля, что означает (A-λI)матрица должна быть сингулярной, то есть ее определитель равен нулю и она не может иметь обратную матрицу (почему? может вы ответите в комментариях?). исходя из того, что |A-λI| = 0, мы вычисляем соответствующие собственные значения λ,это так называемое характеристическое уравнение. После получения собственных значений мы возвращаемся к уравнению 1 и решаем его с его помощью, чтобы получить собственные векторы A.

Ковариационная матрица

Теперь, когда мы знакомы с собственными значениями/векторами, давайте вернемся к уже упомянутой ковариационной матрице. это просто квадратная матрица, содержащая ковариацию каждой пары из n векторов нашего пространства. Ковариация математически измеряет силу и направление связи между двумя переменными:

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

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