Анализ главных компонентов — это стандартный метод, используемый для уменьшения размерности во многих ситуациях, но он также может предоставить большой объем информации о поведении набора данных. Он объединяет три «отдельные» области математики, геометрии, линейной алгебры и статистики; это проблема собственных значений/собственных векторов, которую также можно рассматривать как геометрическое преобразование пространства, применяемое к распределениям данных. Это достигается за счет создания новых некоррелированных переменных, которые максимизируют дисперсию. В этой статье мы попытаемся понять математическую основу этой техники, а также поиграем с некоторым кодом Python.
Основные понятия части 1:
- Векторное пространство
- Внутренний продукт
- Линейное преобразование
- Собственные векторы и собственные значения
- Ковариационная матрица
Векторное пространство
Проще говоря, векторное пространство — это пространство, в котором живут какие-то объекты, и к этим объектам можно применить кучу правил, и они все равно будут жить в одном и том же пространстве, сколько бы раз мы ни применяли правила между ними. , и это самое важное свойство, ключевое понятие. Выше вы можете проверить определение формально-аксиоматического учебника, но имейте в виду важность работы с объектами и сохранения их в своем пространстве.
На рисунке 1 показаны аксиомы, формально определяющие векторное пространство. Имейте в виду, что линейная алгебра — это огромная тема в математике, и здесь мы обсуждаем ее в неформально-практически-прикладно-ориентированной манере, пытаясь достичь естественного понимания того, как эта штука работает. поэтому я буду более расслабленным, чем формальный математический подход.
Внутренний продукт
Внутренний продукт — это операция, которая принимает два вектора и «выдает» скаляр, то есть одно число. В евклидовом пространстве эта операция определяется как сумма произведения координат векторов, например:
изделие имеет интересную геометрическую интерпретацию, оно измеряет угол между двумя векторами. Представьте себе теперь произвольное распределение данных с pпризнаками и nвходными данными, объектами, отдельными лицами, или составляющими, обнаруженными в типах вина (да, вы угадали!Очередная средняя статья с клише-набором данных.Судите, мне плевать :) ).
Каждый ряд представляет собой образец одного из трех видов вина, описываемых в общей сложности 13 признаками (алкоголь, яблочная кислота и т. д.). Эти данные находятся в n-мерном (13-мерном) пространстве, и мы можем вычислить внутренний продукт между столбцами. Угол между векторами многое говорит об их поведении: когда мы централизуемнаши данные (удаляем из них среднее значение), внутренний продукт представляет собой то же самое, что корреляция переменные! с помощью pandas мы можем вычислить корреляционную матрицу так же просто, как df.corr(), и это дает:
На моем уродливом отпечатке показана матрица корреляции между функциями набора винных данных. Далее мы обсудим матрицу ковариации/корреляции, здесь я просто хочу подчеркнуть геометрическую характеристику данных и то, что внутренний продукт = корреляция переменных.
Это довольно интуитивно понятно, если вы помните значения косинуса угла. она меняется от 0 до 1 (точно так же, как корреляция), чем меньше угол, тем больше косинус, и чем ближе векторы, то есть тем они более похожи, следовательно, тем выше корреляция между ними. когда угол равен 90 градусам (PI/2), векторы перпендикулярны, косинус равен нулю, и говорят, что векторы линейно независимы. если угол больше 90, векторы начинают указывать в противоположных направлениях и корреляция становится отрицательной.
Линейная трансформация — грубо говоря
Линейное преобразование — это инструмент, позволяющий нашим объектам путешествовать (извините, слишком много аналогий), то есть перемещать их из одного векторного пространства в другое, НО это не какой-либо вид путешествуя, правила, которые мы можем применять к объектам в одном пространстве, должны быть действительны и в новом. Возможно, это станет ясно из формального определения:
Линейное преобразование — это функция L с областью определения V и изображением W (V и W — векторные пространства), удовлетворяющими:
- L(v+ u) = L(v) + L(u). (свойство аддитивности)
- 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. Эта матрица будет ключом к определению собственных векторов и собственных значений линейного преобразования, и с их помощью мы разрабатываем анализ главных компонентов. Но сначала давайте просто для развлечения поработаем с простым примером и напишем немного кода.
Давайте возьмем простое двумерное распределение, как указано выше, наши первые игрушечные данные в этом уроке:
Наши точки данных — это объекты (векторы) нашего векторного пространства R²(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, и я обещаю, что это будет намного более практично в реальных случаях использования. до встречи!