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

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

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

Как мы можем справиться с этим компромиссом между простотой и объемом информации? Ответ на этот вопрос является результатом анализа основных компонентов (PCA).

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

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

Чтобы понять PCA более глубоко, нам нужно ввести некоторые дополнительные концепции.

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

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

Теперь мы можем вычислить так называемую матрицу ковариации: это симметричная матрица dxd (где d - количество функций, следовательно, в данном случае d = 2), где хранятся дисперсия каждого признака и ковариации перекрестных признаков:

Поскольку Cov (x, y) равно Cov (y, x), матрица, как уже говорилось, симметрична, а дисперсии признаков лежат на главной диагонали.

Ковариационная матрица может принимать разные значения в зависимости от формы наших данных. Давайте рассмотрим несколько сценариев:

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

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

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

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

Чтобы лучше понять эти концепции, давайте рассмотрим следующую ситуацию. Нам предоставлены двумерные векторы v1, v2,…, vn. Затем, если мы применим линейное преобразование T (матрицу 2x2) к нашим векторам, мы получим новые векторы, называемые b1, b2,…, bn.

Некоторые из них (точнее, столько же, сколько и количество функций), однако, обладают очень интересным свойством: действительно, после применения преобразования T они изменяют длину, но не направление. Эти векторы называются собственными векторами, а скаляр, который представляет собой кратное собственному вектору, называется собственным значением.

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

Где L вектор, в котором хранятся все собственные значения (столько же, сколько собственных векторов). Если мы рассмотрим наш пример двух функций (x и y), мы получим следующее:

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

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

  • вычисляя Σ-матрицу наших данных, которая будет 5x5
  • вычисление матрицы собственных векторов и соответствующих собственных значений
  • сортировка наших собственных векторов в порядке убывания
  • построение так называемой матрицы проекции W, в которой будут храниться k собственных векторов, которые мы хотим сохранить (в данном случае 2 как количество функций, которые мы хотим обработать). Следовательно, в нашем случае наша W будет матрицей 5x2 (в общем, это матрица dxk, где d = количество исходных функций, а k = количество желаемых функций).
  • преобразование исходных данных, которые могут быть представлены в виде матрицы X nxd (где n = количество наблюдений и d = количество функций), через матрицу проекции W, получив новый набор данных или матрицу Y, которая будет nxk.

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

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