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

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

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

Что такое проекции?

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

Эта ошибка представлена ​​белой линией на анимации. Результирующий вектор в Z (розовый) — это проекция X на Y. Вектор Z — это просто уменьшенная версия вектора Y. Следует отметить, что если мы попытаемся спроецировать вектор на себя, проекция будет сам этот вектор.

Общая формула проекции вектора на другой вектор имеет вид:

Дисперсия и ковариация

Дисперсию можно рассматривать как меру того, насколько эти данные разбросаны вокруг своего среднего значения. Если у нас есть набор наблюдений, скажем, [-1,0,1], этот набор данных имеет среднее значение 0 и дисперсию 1, поскольку он разбросан с величиной 1 по обеим сторонам своего среднего значения. Дисперсия определяется только в одном измерении и может быть рассчитана по следующей формуле:

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

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

Если Cov(x, y) — большое положительное число, они имеют сильную положительную ковариацию, что, в свою очередь, означает, что по мере увеличения x увеличивается и y. Если Cov(x, y) является большим отрицательным числом, они имеют сильную отрицательную ковариацию, что, в свою очередь, означает, что по мере уменьшения x уменьшается и y. Если ковариация очень близка к 0, не так уж много свидетельств какой-либо связи между x и y.

Ковариацию набора данных можно рассчитать по следующей формуле:

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

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

Что такое уменьшение размерности?

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

Идея PCA

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

1. Минимизация ошибки реконструкции

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

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

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

2. Максимизация дисперсии

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

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

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

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

Как найти эти главные компоненты? Мы хотим спроецировать данные на низкоразмерное представление «u_1», чтобы дисперсия данных была максимальной, здесь «u_1» — единичный вектор. Во-первых, мы центрируем наши данные вокруг начала координат, вычитая средний вектор из каждой точки данных.

Теперь мы используем формулу для проекций, которую мы видели ранее, чтобы спроецировать данные на гипотетический главный компонент «u_1».

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

Если мы присмотримся, то в середине мы увидим vTv, и поскольку наши данные уже имеют среднее значение 0, это vTv окажется ковариационной матрицей!. Затем это превращается в задачу оптимизации, в которой мы максимизируем дисперсию с заданным ограничением, согласно которому норма u_1 остается равной 1. Оказывается, решение этой задачи максимизации дает нам следующие уравнения, по которым максимизируется дисперсия.

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

Если мы оставили множить uT, мы видим, что дисперсия равна собственным значениям, и, следовательно, мы выбираем собственные векторы, соответствующие наибольшим собственным значениям, чтобы максимизировать дисперсию.

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

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

Заключение

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

Алгоритм PCA можно резюмировать в следующих пунктах:

  1. Центрирование данных: определение среднего вектора данных и вычитание его из каждой точки данных.
  2. Выяснение ковариационной матрицы данных.
  3. Собственное разложение: нахождение наибольших собственных значений и соответствующих собственных векторов ковариационной матрицы.
  4. Проекция: проецирование данных на собственный вектор, соответствующий наибольшему собственному значению. Это дает нам соответствующий главный компонент данных.

Дальнейшие чтения и видео

  1. Математика минимизации ошибки реконструкции.
  2. Анализ главных компонент объяснил наглядно.
  3. Интерактивная статья, объясняющая PCA.