Идея SVD и смена системы координат

Любое линейное преобразование — это поворот, затем масштабирование вдоль осей, затем ещё поворот: в этом суть SVD.

Сингулярное разложение (SVD) представляет любую матрицу как произведение трёх простых преобразований: $A = U \Sigma V^{T}$ — поворот, масштабирование осей и ещё поворот.

Завершим курс двумя обобщающими идеями. Первая — SVD, универсальное разложение, лежащее в основе сжатия изображений и рекомендательных систем. Вторая — смена системы координат, объясняющая, почему один вектор имеет разные координаты в разных базисах. Обе опираются на всё, что мы прошли.

SVD как три действия

SVD утверждает: что бы матрица $A$ ни делала с пространством, это раскладывается на три шага. Сначала поворот ($V^{T}$), затем растяжение вдоль осей на сингулярные числа $\sigma_1 \ge \sigma_2 \ge \dots$ (матрица $\Sigma$), затем ещё поворот ($U$).

$$A = U \, \Sigma \, V^{T}$$

Сингулярные числа $\sigma_i$ ранжируют направления по «важности»: большое $\sigma$ — направление, вдоль которого преобразование тянет сильно. Идея сжатия: оставить только несколько самых больших $\sigma$, отбросив мелкие, — так картинка или таблица данных приближается малым числом чисел почти без потери качества.

Смена координат

Один и тот же вектор в разных базисах записывается разными координатами. Если столбцы матрицы $P$ — это новые базисные векторы, то координаты $\vec{x}_{\text{нов}}$ в новом базисе связаны со старыми $\vec{x}_{\text{стар}}$ через $\vec{x}_{\text{стар}} = P\,\vec{x}_{\text{нов}}$, а обратно — через умножение на $P^{-1}$.

def det2(M):
    return M[0][0] * M[1][1] - M[0][1] * M[1][0]

def inv2(M):
    d = det2(M)
    a, b = M[0]; c, dd = M[1]
    return [[dd / d, -b / d], [-c / d, a / d]]

def matvec(A, v):
    return [sum(A[i][j] * v[j] for j in range(len(v)))
            for i in range(len(A))]

# новый базис: столбцы P
P = [[1, 1], [1, -1]]   # e1'=(1,1), e2'=(1,-1)
x_old = [5, 6]          # вектор в стандартных координатах
x_new = matvec(inv2(P), x_old)
print("координаты в новом базисе:", [round(v, 4) for v in x_new])

Вывод:

координаты в новом базисе: [5.5, -0.5]

Замкнули круг

Координаты $(5{,}5;\, -0{,}5)$ — ровно те, что мы вручную нашли в уроке про линейные комбинации. Тогда мы решали систему «в лоб», теперь — через умножение на обратную матрицу базиса $P^{-1}$. Это и есть формальный механизм смены системы координат, и он опирается на обратную матрицу из шестого раздела.

Как работает под капотом

SVD существует для любой матрицы — даже неквадратной, в отличие от разложения по собственным векторам, которое есть не всегда. Сингулярные числа $\sigma_i$ — это корни из собственных значений матрицы $A^{T}A$, поэтому SVD тесно связан с темой собственных значений. Смена координат через $P^{-1}$ объясняет глубокий факт: одно и то же преобразование в разных базисах записывается разными матрицами, связанными формулой $A' = P^{-1} A P$ (подобные матрицы). А диагонализация из раздела про собственные значения — это как раз выбор такого базиса, в котором матрица преобразования становится диагональной. Так все темы курса смыкаются в единую картину.

Частые ошибки

  • Считать, что SVD есть только у квадратных матриц. На самом деле сингулярное разложение существует для матриц любого размера.
  • Путать направление смены координат. Чтобы получить координаты в базисе $P$, умножают на $P^{-1}$, а не на $P$.
  • Думать, что у вектора «настоящие» координаты только в стандартном базисе. Координаты всегда относительны выбранного базиса — стандартный лишь привычнее.

Итог

  • SVD раскладывает любую матрицу на поворот, масштаб и поворот: $A = U\Sigma V^{T}$.
  • Сингулярные числа ранжируют направления; отбросив малые, получаем сжатие данных.
  • Смена координат: $\vec{x}_{\text{нов}} = P^{-1}\vec{x}_{\text{стар}}$, где столбцы $P$ — новый базис.
  • Подобные матрицы $A' = P^{-1}AP$ описывают одно преобразование в разных базисах; диагонализация — удачный выбор базиса.
Проверьте себя
1. Сингулярное разложение A = UΣVᵀ представляет матрицу как:
Aсумму трёх матриц
Bповорот, затем масштабирование осей, затем ещё поворот
Cтри одинаковых поворота
Dобратную матрицу
2. Как из SVD получают сжатие данных?
Aудаляют все сингулярные числа
Bоставляют только несколько наибольших сингулярных чисел, отбрасывая малые
Cумножают на ноль
Dтранспонируют матрицу
3. Чтобы получить координаты вектора в новом базисе со столбцами P, нужно:
Aумножить на P
Bумножить на P⁻¹
Cвзять определитель P
Dсложить с P