Как работает PCA

алгоритм

PCA (анализ основных компонентов) — широко используемый метод анализа данных. PCA преобразует исходные данные в набор линейно независимых представлений каждого измерения посредством линейного преобразования, которое можно использовать для извлечения компонентов основных признаков данных и часто используется для уменьшения размерности многомерных данных. В Интернете много статей о ППШ, но в большинстве из них описывается только процесс анализа ППШ, но не принцип. Цель этой статьи — представить основные математические принципы PCA и помочь читателям понять, как работает PCA.

Конечно, я не собираюсь писать статью как чисто математическую статью, но я надеюсь описать математические принципы PCA в интуитивной и легкой для понимания форме, поэтому вся статья не будет вводить строгий математический вывод. Я надеюсь, что после прочтения этой статьи читатели смогут лучше понять принцип работы PCA.

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

(дата, просмотры, посетители, заказы, транзакции, сумма транзакции)

Где «дата» — это флаг записи, а не значение меры, а интеллектуальный анализ данных в основном связан со значением меры, поэтому, если мы проигнорируем поле даты, мы получим набор записей, каждая запись может быть представлена ​​​​в виде пятимерного вектор, один из них выглядит примерно так:

(500,240,25,13,2312.15)^\mathsf{T}

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

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

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

Например, если определенные данные о статусе учащегося имеют два столбца M и F, значение столбца M соответствует тому, как учащийся принимает значение 1 для мужчин и значение 0 для женщин, а столбец F представляет собой значение 1 для женщин. а значение самцов значение 0. В это время, если мы подсчитаем все данные о статусе учащегося, мы обнаружим, что для любой записи, когда M равно 1, F должно быть 0, а когда M равно 0, F должно быть 1. В этом случае мы удаляем M или F практически без потери информации, так как простое сохранение одного столбца может полностью восстановить другой.

Конечно, вышеописанное является экстремальной ситуацией, которая может не проявляться в реальности, но подобные ситуации все же встречаются очень часто. Например, из приведенных выше данных магазинов Taobao мы можем по опыту узнать, что «просмотры» и «посетители» часто имеют сильную корреляцию, а «заказы» и «транзакции» также имеют сильную корреляцию. Здесь мы неформально используем слово «корреляция», которое можно интуитивно понять как «когда количество просмотров страниц этого магазина высокое (или низкое) в определенный день, мы должны в основном думать, что количество посетителей в этот день также равно выше. (или ниже)». Мы дадим строгое математическое определение корреляции в последующих главах.

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

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

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

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

Внутренний продукт и проекция Давайте сначала рассмотрим векторную операцию, которую изучали в старшей школе: скалярный продукт. Внутренний продукт двух векторов одинаковой размерности определяется как:

(a_1,a_2,\cdots,a_n)^\mathsf{T}\cdot (b_1,b_2,\cdots,b_n)^\mathsf{T}=a_1b_1+a_2b_2+\cdots+a_nb_n

Операция внутреннего произведения отображает два вектора в действительное число. Его метод расчета очень прост для понимания, но смысл его не очевиден. Далее мы анализируем геометрический смысл скалярного произведения. Предполагая, что A и B являются двумя n-мерными векторами, мы знаем, что n-мерный вектор может быть эквивалентно представлен как направленный отрезок, исходящий из начала координат в n-мерном пространстве.Для простоты мы предполагаем, что и A, и B являются двумерными векторами, тоA=(x_1,y_1),B=(x_2,y_2). Тогда A и B могут быть представлены двумя направленными отрезками, исходящими из начала координат на двумерной плоскости, как показано на следующем рисунке:

Хорошо, теперь мы проводим вертикальную линию от точки A до линии, где находится B. Мы знаем, что пересечение вертикальной линии и В называется проекцией А на В, и пусть угол между А и В равен а, тогда длина вектора проекции равна|A|cos(a)|A|=\sqrt{x_1^2+y_1^2}— модуль вектора A, то есть скалярная длина отрезка A.

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

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

A\cdot B=|A||B|cos(a)

Теперь все вроде бы в порядке: скалярное произведение A и B равно длине проекции A на B, умноженной на модуль B. Сделав еще один шаг, если мы предположим, что модуль B равен 1, то есть пусть|B|=1, то получается:

A\cdot B=|A|cos(a)

То есть, если модуль вектора B равен 1, то значение скалярного произведения A и B равно длине вектора проекции A на линию, где находится B! Это геометрическая интерпретация скалярного произведения, и это первый важный вывод, который мы получаем. Этот вывод будет многократно использован в следующих выводах.

база Далее мы продолжим обсуждение векторов в двумерном пространстве. Как упоминалось выше, двумерный вектор может соответствовать направленному отрезку, начинающемуся с начала координат в двумерной декартовой системе координат. Например, следующий вектор:

С точки зрения алгебраического представления, мы часто используем координаты точки конечной точки отрезка для представления вектора.Например, приведенный выше вектор может быть представлен как (3,2), что является векторным представлением, которым мы все являемся. знаком с.

Однако мы часто игнорируем тот факт, что только один (3,2) сам по себе не может точно представлять вектор. Давайте внимательнее посмотрим, 3 здесь на самом деле означает, что проецируемое значение вектора на оси x равно 3, а проецируемое значение на оси y равно 2. То есть мы фактически неявно ввели определение: вектор длиной 1 в положительном направлении оси x и оси y является эталоном. Тогда вектор (3,2) на самом деле означает, что проекция на ось x равна 3, а проекция на ось y равна 2. Обратите внимание, что проекция является вектором, поэтому она может быть отрицательной.

Более формально вектор (x,y) фактически представляет собой линейную комбинацию:

x(1,0)^\mathsf{T}+y(0,1)^\mathsf{T}

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

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

Причина, по которой мы выбираем (1,0) и (0,1) в качестве оснований по умолчанию, конечно, более удобна, потому что они представляют собой единичные векторы в положительных направлениях осей x и y соответственно, так что точка координаты и векторы на двумерной плоскости - одно однозначное соответствие, очень удобно. Но на самом деле любые два линейно независимых двумерных вектора могут стать множеством базисов.Так называемая линейно независимая двумерная плоскость интуитивно может рассматриваться как два вектора, не лежащие на одной прямой.

Например, (1,1) и (-1,1) также могут быть набором оснований. Вообще говоря, мы хотим, чтобы модуль базиса был равен 1, потому что из значения скалярного произведения видно, что если модуль базиса равен 1, то удобно умножить базис на векторную точку, чтобы непосредственно получить его координаты на новой основе. ! На самом деле, для любого вектора мы всегда можем найти вектор, модуль которого равен 1 в том же направлении, если два компонента делятся на модуль. Например, база выше может стать(\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})и(-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}).

Теперь, мы хотим получить координаты (3,2) на новом базисе, то есть спроецированные векторные значения в двух направлениях, тогда по геометрическому смыслу скалярного произведения нам нужно вычислить только (3 ,2) и два базиса соответственно.Внутренний продукт, нетрудно получить новые координаты как(\frac{5}{\sqrt{2}},-\frac{1}{\sqrt{2}}). На следующем рисунке показана принципиальная схема нового базиса и значения координат (3,2) на новом базисе:

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

Матричное представление базисного преобразования Далее мы находим удобный способ выразить базисное преобразование. Все еще возьмем приведенный выше пример, подумайте об этом, чтобы преобразовать (3,2) в координаты на новом основании, нужно использовать (3,2) и первое основание для выполнения операции внутреннего произведения в качестве первого нового компонента координат, и затем возьмите скалярное произведение (3,2) со вторым основанием в качестве компонентов второй новой координаты. На самом деле, мы можем кратко выразить это преобразование в форме умножения матриц:

\begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \\ -1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix} \begin{pmatrix} 3 \\ 2 \end{pmatrix} = \begin{pmatrix} 5/\sqrt{2} \\ -1/\sqrt{2} \end{pmatrix}

красивая! Две строки матрицы — это две базы соответственно, умножьте исходный вектор, и результат — это просто координаты новой базы. Это можно немного обобщить, если у нас есть m двумерных векторов, просто расположите двумерные векторы в матрицу из двух строк и m столбцов и умножьте эту матрицу на «базисную матрицу», и мы получим все эти векторы в новом базисном значении ниже. Например, (1,1), (2,2), (3,3), если вы хотите прямо сейчас преобразовать в набор оснований, вы можете выразить это так:

\begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \\ -1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix} \begin{pmatrix} 1 & 2 & 3 \\ 1 & 2 & 3 \end{pmatrix} = \begin{pmatrix} 2/\sqrt{2} & 4/\sqrt{2} & 6/\sqrt{2} \\ 0 & 0 & 0 \end{pmatrix}

Тогда базисное преобразование набора векторов ясно представляется как умножение матриц.

В общем, если у нас есть M N-мерных векторов и мы хотим преобразовать их в новое пространство, представленное R N-мерными векторами, то сначала R оснований формируются в матрицу A по строкам, а затем векторы формируются в матрица B по столбцам, Тогда произведение AB двух матриц является результатом преобразования, где m-й столбец AB является преобразованным результатом m-го столбца в A.

Математически выражается как:

\begin{pmatrix} p_1 \\ p_2 \\ \vdots \\ p_R \end{pmatrix} \begin{pmatrix} a_1 & a_2 & \cdots & a_M \end{pmatrix} = \begin{pmatrix} p_1a_1 & p_1a_2 & \cdots & p_1a_M \\ p_2a_1 & p_2a_2 & \cdots & p_2a_M \\ \vdots & \vdots & \ddots & \vdots \\ p_Ra_1 & p_Ra_2 & \cdots & p_Ra_M \end{pmatrix}

вp_i- вектор-строка, представляющий i-й базис,a_jпредставляет собой вектор-столбец, представляющий j-ю исходную запись данных.

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

Наконец, приведенный выше анализ также находит физическое объяснение умножения матриц: смысл умножения двух матриц состоит в том, чтобы преобразовать каждый столбец и вектор-столбец в правой матрице в пространство, представленное каждой строкой и вектором-строкой в ​​левой матрице в качестве основы. . Более абстрактно, матрица может представлять собой линейное преобразование. Многим студентам кажется странным метод матричного умножения при изучении линейной алгебры, но если вы понимаете физический смысл матричного умножения, его рациональность будет ясна с первого взгляда.

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

Полностью математизировать эту проблему сложно, и здесь мы рассматриваем ее неформально и интуитивно.

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

\begin{pmatrix} 1 & 1 & 2 & 4 & 2 \\ 1 & 3 & 3 & 4 & 4 \end{pmatrix}

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

Давайте посмотрим на данные выше, первое поле имеет среднее значение 2, а второе поле имеет среднее значение 3, поэтому после преобразования:

\begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}

Мы можем видеть, как выглядят пять фрагментов данных в плоской декартовой системе координат:

Теперь возникает вопрос: если нам нужно использовать одно измерение для представления этих данных и мы хотим максимально сохранить исходную информацию, как вы выберете?

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

Так как же выбрать это направление (или базу), чтобы максимально сохранить самую оригинальную информацию? Интуитивное представление заключается в том, что вы хотите, чтобы спроецированные проецируемые значения были как можно более рассеянными.

Возьмем приведенный выше рисунок в качестве примера.Можно увидеть, что если вы спроецируете на ось X, две крайние левые точки будут перекрываться, а две средние точки также будут перекрываться, поэтому проецируются четыре разные двумерные точки. осталось только два разных значения, что является серьезной потерей информации.Точно так же, если две верхние точки проецируются на ось Y, две точки, распределенные по оси x, также будут перекрываться. Таким образом, кажется, что ни ось x, ни y не являются лучшим выбором для проецирования. Мы интуитивно предсказываем, что при проецировании на наклонную линию, проходящую через первый и третий квадранты, пять точек все еще можно различить после проецирования.

Ниже мы сформулируем эту задачу математически.

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

Var(a)=\frac{1}{m}\sum_{i=1}^m{(a_i-\mu)^2}

Поскольку выше мы установили среднее значение каждого поля равным 0, дисперсию можно напрямую выразить как сумму квадратов каждого элемента, деленную на количество элементов:

Var(a)=\frac{1}{m}\sum_{i=1}^m{a_i^2}

Таким образом, приведенная выше задача формализуется как: Найдите одномерный базис, чтобы после преобразования всех данных в координатное представление на этом базисе значение дисперсии было наибольшим.

Ковариация Для описанной выше двумерной редукции к одномерной задаче достаточно найти направление, максимизирующее дисперсию. Однако для более высоких измерений существует проблема, которую необходимо решить. Рассмотрим задачу преобразования 3D в 2D. Как и раньше, сначала мы хотим найти направление, которое максимизирует дисперсию после проекции, что завершает выбор первого направления, а затем мы выбираем второе направление проекции.

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

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

Cov(a,b)=\frac{1}{m}\sum_{i=1}^m{a_ib_i}

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

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

На данный момент мы получили цель оптимизации задачи уменьшения размерности: уменьшить набор N-мерных векторов до K-мерного (K больше 0, меньше N), и цель состоит в том, чтобы выбрать K единиц (по модулю 1 ) Ортогональный базис, так что исходные данные После преобразования в этот набор базисов ковариация между каждым полем равна 0, а дисперсия поля как можно больше (при ограничении ортогональности берутся наибольшие K дисперсий) .

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

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

Предположим, у нас есть только два поля a и b, тогда мы формируем матрицу X по строкам:

X=\begin{pmatrix} a_1 & a_2 & \cdots & a_m \\ b_1 & b_2 & \cdots & b_m \end{pmatrix}

Затем мы умножаем X на транспонирование X и умножаем на коэффициент 1/m:

\frac{1}{m}XX^\mathsf{T}=\begin{pmatrix} \frac{1}{m}\sum_{i=1}^m{a_i^2} & \frac{1}{m}\sum_{i=1}^m{a_ib_i} \\ \frac{1}{m}\sum_{i=1}^m{a_ib_i} & \frac{1}{m}\sum_{i=1}^m{b_i^2} \end{pmatrix}

Произошло чудо! Два элемента на диагонали этой матрицы — это дисперсии двух полей соответственно, а остальные элементы — это ковариации a и b. Оба объединены в одну матрицу.

Согласно алгоритму умножения матриц этот вывод легко обобщается на общий случай:

Предположим, у нас есть m n-мерных записей данных, расположенных в столбцах в матрицу X размера n на m, пустьC=\frac{1}{m}XX^\mathsf{T}, то C — симметричная матрица, диагональ которой представляет собой дисперсию каждого поля, а i-я строка j-го столбца и j-я строка i-го столбца имеют одинаковые элементы, указывающие на ковариацию двух полей i и j.

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

Пусть ковариационная матрица, соответствующая исходной матрице данных X, равна C, а P — матрица, состоящая из группы базиса по строкам, пусть Y = PX, тогда Y — данные после преобразования базиса X в P. Пусть ковариационная матрица Y равна D, и мы получаем связь между D и C:

\begin{array}{l l l} D & = & \frac{1}{m}YY^\mathsf{T} \\ & = & \frac{1}{m}(PX)(PX)^\mathsf{T} \\ & = & \frac{1}{m}PXX^\mathsf{T}P^\mathsf{T} \\ & = & P(\frac{1}{m}XX^\mathsf{T})P^\mathsf{T} \\ & = & PCP^\mathsf{T} \end{array}

Теперь все ясно! Искомое P — это не что иное, как P, диагонализирующее исходную ковариационную матрицу. Другими словами, целью оптимизации становится поиск матрицы P, которая удовлетворяетPCP^\mathsf{T}является диагональной матрицей, и диагональные элементы расположены в порядке убывания, тогда первые K строк P являются базой, которую нужно найти, и матрица, составленная из первых K строк P, умножается на X, чтобы уменьшить X из N измерения к размерности K и удовлетворяют приведенным выше условиям оптимизации.

На данный момент мы всего в одном шаге от «изобретения» PCA!

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

Из вышеизложенного видно, что ковариационная матрица C является симметричной матрицей.В линейной алгебре вещественные симметричные матрицы обладают рядом очень хороших свойств:

1) Собственные векторы, соответствующие разным собственным значениям вещественной симметричной матрицы, должны быть ортогональны.

2) Установите вектор признаков\lambdaЕсли кратность равна r, то должно быть r линейно независимых собственных векторов, соответствующих\lambda, поэтому собственные векторы r могут быть единично ортогонализированы.

Из приведенных выше двух видно, что реальная симметричная матрица с n строками и n столбцами может определенно найти n единичных ортогональных собственных векторов, Пусть эти n собственных векторов равныe_1,e_2,\cdots,e_n, формируем матрицу по столбцам:

E=\begin{pmatrix} e_1 & e_2 & \cdots & e_n \end{pmatrix}

Тогда ковариационная матрица C имеет следующие выводы:

E^\mathsf{T}CE=\Lambda=\begin{pmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \ddots & \\ & & & \lambda_n \end{pmatrix}

в\Lambdaпредставляет собой диагональную матрицу, диагональные элементы которой являются соответствующими собственными значениями каждого собственного вектора (могут быть повторения).

Приведенный выше вывод больше не дает строгого математического доказательства.Друзья, интересующиеся доказательством, могут обратиться к книге по линейной алгебре «Диагонализация вещественных симметричных матриц».

На этом этапе мы обнаруживаем, что нашли искомую матрицу P:

P=E^\mathsf{T}

P — матрица, в которой собственные векторы ковариационной матрицы нормированы и расположены в строках, где каждая строка является собственным вектором C. Если P установлен в соответствии с\LambdaСобственные значения в середине расположены от больших к малым, а собственные векторы расположены сверху вниз, а матрица, состоящая из первых K строк P, умножается на исходную матрицу данных X и матрицу данных с уменьшенной размерностью Y нам нужно получается.

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

Алгоритмы и примеры Чтобы закрепить изложенную выше теорию, в этом разделе мы приводим конкретный пример PCA.

Алгоритм PCA Обобщим шаги алгоритма PCA:

Есть m частей n-мерных данных.

1) Сформируйте исходные данные в матрицу X с n строками и m столбцами.

2) Нуль означает каждую строку X (представляющую поле атрибута), то есть вычесть среднее значение этой строки

3) Найдите ковариационную матрицуC=\frac{1}{m}XX^\mathsf{T}

4) Найдите собственные значения ковариационной матрицы и соответствующие собственные векторы

5) Расположите собственные векторы в матрице сверху вниз в соответствии с размером соответствующих собственных значений и возьмите первые k строк, чтобы сформировать матрицу P

6)Y=PXТо есть данные после приведения размерности к k-мерности

Пример упомянутый выше

\begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}

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

Поскольку каждая строка этой матрицы уже имеет нулевое среднее, здесь мы напрямую находим ковариационную матрицу:

C=\frac{1}{5}\begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}\begin{pmatrix} -1 & -2 \\ -1 & 0 \\ 0 & 0 \\ 2 & 1 \\ 0 & 1 \end{pmatrix}=\begin{pmatrix} \frac{6}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5} \end{pmatrix}

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

\lambda_1=2,\lambda_2=2/5

Соответствующие собственные векторы:

c_1\begin{pmatrix} 1 \\ 1 \end{pmatrix},c_2\begin{pmatrix} -1 \\ 1 \end{pmatrix}

Соответствующие собственные векторы являются соответственно общим решением,c_1иc_2Может принимать любое действительное число. Тогда нормализованный вектор признаков:

\begin{pmatrix} 1/\sqrt{2} \\ 1/\sqrt{2} \end{pmatrix},\begin{pmatrix} -1/\sqrt{2} \\ 1/\sqrt{2} \end{pmatrix}

Итак, наша матрица P:

P=\begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \\ -1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix}

Диагонализация ковариационной матрицы C может быть проверена:

PCP^\mathsf{T}=\begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \\ -1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix}\begin{pmatrix} 6/5 & 4/5 \\ 4/5 & 6/5 \end{pmatrix}\begin{pmatrix} 1/\sqrt{2} & -1/\sqrt{2} \\ 1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix}=\begin{pmatrix} 2 & 0 \\ 0 & 2/5 \end{pmatrix}

Наконец, мы умножаем первую строку P на матрицу данных, чтобы получить представление с уменьшенной размерностью:

Y=\begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \end{pmatrix}\begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}=\begin{pmatrix} -3/\sqrt{2} & -1/\sqrt{2} & 0 & 3/\sqrt{2} & -1/\sqrt{2} \end{pmatrix}

Результат проекции уменьшения размерности выглядит следующим образом:

дальнейшее обсуждение

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

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

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

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