Перейти к содержимому

А если всё не так идеально?

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

  1. Собственные векторы гарантированно ортогональны только для квадратных и симметричных матриц (есть ещё некоторые случаи, но это всё равно частность, которая не часто получается)

Этот вариант подходит для PCA, так как там наша матрица такой и является, но в общем случае через собственные векторы диагонализировать матрицу не получится 2. Реальные таблицы данных в Data Science почти всегда прямоугольные (NxM, где N — число объектов, а M — число признаков).

Для прямоугольной матрицы невозможно найти “собственные векторы” в привычном смысле, ведь она переводит векторы из пространства одной размерности в пространство совсем другой размерности

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

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

У любого эллипсоида есть главные оси — направления его наибольшего и наименьшего растяжения. Они взаимно перпендикулярны.

На картинке видно три эти оси

Это дает нам идею разложения любого линейного преобразования на три простых этапа:

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

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

Метод, который реализует эту геометрическую идею для любой матрицы A, называется Singular Value Decomposition (SVD) или Сингулярное разложение.

Математически это записывается как разложение матрицы A на произведение трех матриц:

A=UΣVTA = U \Sigma V^T

  1. VTV^T (Правые сингулярные векторы):

Ортогональная матрица первого поворота (в исходном пространстве) 2. Ее столбцы — это собственные векторы матрицы ATAA^TA 3. Σ\Sigma (Сингулярные числа):

Диагональная матрица, содержащая коэффициенты растяжения σi0\sigma_i \ge 0 4. Сингулярные числа равны квадратным корням из собственных значений матрицы ATAA^TA (σi=λi\sigma_i = \sqrt{\lambda_i}) и упорядочены по убыванию: σ1σ20\sigma_1 \ge \sigma_2 \ge \dots \ge 0 5. UU (Левые сингулярные векторы):

Ортогональная матрица второго поворота (в целевом пространстве) 6. Ее столбцы — это собственные векторы матрицы AATAA^T

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

В прошлом уроке мы рассматривали PCA, но есть проблема

Алгоритмы поиска собственных векторов очень неустойчивы к вычислительным ошибкам

На практике это может наделать кучу проблем

SVD решает данную проблему

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

Центрированная таблица данных X— это набор точек, образующий в пространстве признаков некоторое вытянутое “облако”. Сингулярное разложение (SVD) позволяет напрямую найти главные геометрические оси этого облака без промежуточных математических конструкций. (прямо как главные оси эллипса)

Когда мы применяем SVD к самой матрице данных (X=UΣVTX = U \Sigma V^T), алгоритм ищет ортогональный базис V, который при трансформации переходит в главные оси образующегося эллипсоида. Геометрически столбцы матрицы V — это именно те направления в пространстве признаков, вдоль которых облако данных имеет наибольший разброс (дисперсию). Сингулярные числа Σ\Sigma задают длины этих главных осей, показывая, насколько силен разброс вдоль каждого направления, а матрица U дает координаты точек, спроецированных на эти оси и отмасштабированных к единичной дисперсии.

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

Вот простая таблица:

МатрицаЧто делает в геометрии PCA?Что означает для данных?
VTV^TПоворот в пространстве признаковГлавные компоненты: направления максимального разброса
Σ\SigmaМасштабирование / РастяжениеСила разброса: насколько данные вытянуты вдоль каждой оси
UПоворот в пространстве объектовПроекции точек: координаты объектов в новом базисе