Истинное понимание SVD - интуитивная основная идея

Вернувшись к элементарной механике, вы узнали, что любой вектор силы можно разложить на компоненты по осям x и y:

Поздравляем. Теперь вы знаете, что такое разложение по сингулярным числам.

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

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

Посмотрим, как обстоят дела.

Когда вектор (a) разлагается, мы получаем 3 части информации:

  1. направления проекции - единичные векторы (v и v ) представляющие направления, на которые мы проецируем (раскладываем). В приведенном выше примере это оси x и y, но могут быть любые другие ортогональные оси.
  2. длины проекции (отрезки линии s ₁ и s ₂) - которые говорят нам, какая часть вектора содержится в каждом направлении проекции (больше вектора a склоняется к направлению v, чем к v, следовательно, s ₁ ›s ₂).
  3. векторы проекции (pₐ и pₐ), которые используются чтобы восстановить исходный вектор a, сложив их вместе (как векторную сумму), и для которого легко проверить, что pₐ = s ₁ * v и pₐ = s ₐ₂ * v ₂ - Значит, они избыточны , поскольку их можно вывести из двух предыдущих.

Критический вывод:

Любой вектор можно выразить через:

1. Единичные векторы направлений проекции (v₁, v₂,…).

2. Длины проекций на них (sₐ₁, sₐ₂,…).

Все, что делает SVD, это расширяет этот вывод более чем на один вектор (или точку) и на все измерения:

Теперь нужно знать, как справиться с этим беспорядком.

Как справиться с этим беспорядком

Мы не сможем справиться с этим беспорядком, не обработав сначала единственный вектор!

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

Поэтому нам нужно найти способ выразить операцию разложения векторов с помощью матриц.

Оказалось, что это естественно:

Мы хотим разложить (спроецировать) вектор a по единичным векторам v и v.

Возможно, вы уже знаете (особенно если вы смотрели это), что проецирование выполняется с помощью точечного произведения - оно дает нам длины проецирования (s ₁ и s ₂):

Но это лишнее. Мы можем использовать эффективность матриц…

Мы даже можем добавить больше очков…

Вот как это выглядит после добавления точки b:

Теперь легко обобщить на любое количество точек и размеров:

Математическая элегантность в лучшем виде.

Резюме: -

Это то же самое, что сказать:

Это все, что говорит СВД (помните критический вывод):

Любой набор векторов (A) может быть выражен через их длины проекций (S) на некоторый набор ортогональных осей (V).

Однако мы еще не закончили. Обычная формула SVD гласит:

Но это просто означает, что мы хотим увидеть, как:

И это то, что мы собираемся делать.

Если вы внимательно посмотрите на матрицу S, вы обнаружите, что она состоит из:

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

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

Но сначала числовой пример, чтобы увидеть, как происходит это «деление».

Допустим, мы хотим разделить 1-й столбец M на 2. Мы обязательно должны будем умножить на другую матрицу, чтобы сохранить равенство:

Несложно проверить, что неизвестная матрица представляет собой не что иное, как единичную матрицу с заменой 1-го элемента на делитель = 2:

Разделение 2-го столбца на 3 теперь становится непосредственным делом - просто замените 2-й элемент единичной матрицы на 3:

Теперь мы хотим применить описанную выше концепцию «деления» к матрице S.

Чтобы нормализовать столбцы S, мы делим их по величине…

… Выполнив с S то, что мы сделали с M в приведенном выше примере:

Наконец-то…

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

Интерпретация

Поговорим об этих U и Σ

А что насчет сигм? Почему мы обременяли себя нормализующими S, чтобы их найти?

Мы уже видели, что (σ ) - это квадратный корень из суммы квадратов длин проекций всех точек, на i й единичный вектор vᵢ.

Что это обозначает?

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

Например. если σ₁ ›σ₂, то большинство точек ближе к v, чем к v, и наоборот.

Это огромная полезность во множестве приложений SVD.

Основное приложение

Алгоритмы нахождения SVD матрицы не выбирают направления проекции (столбцы матрицы V) случайным образом.

Они выбирают их в качестве основных компонентов набора данных (матрица A).

Если вы читали мою первую статью, вы очень хорошо знаете, каковы основные компоненты ...

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

Теперь процесс проецирования набора данных с помощью SVD становится несложным, поскольку все точки уже спроецированы (разложены) на все основные компоненты ( vᵢ единичные векторы):

Так, например, чтобы спроецировать набор данных на 1-й главный компонент…

Умножение двух матриц (S и V выше) приводит к матрице A ', содержащей спроецированные точки (фиолетовые) на последнем графике.

Вот и все ... пока.