Матричные разложения: сингулярное разложение (SVD) и его применение в ML
Добро пожаловать в заключительную статью курса «Основы линейной алгебры для машинного обучения». Мы прошли долгий путь: от простых скаляров и векторов до систем уравнений, определителей и собственных чисел.
В прошлой статье мы восхищались элегантностью собственных векторов. Они показывают «скрытые оси» данных. Но у них есть один существенный недостаток: они определены только для квадратных матриц.
Однако в реальном мире данные редко бывают квадратными. У нас может быть таблица, где 1 000 000 пользователей (строки) и 10 000 фильмов (столбцы). Или 50 000 слов и 100 документов. Как найти скрытую структуру в таких прямоугольных матрицах?
Здесь на сцену выходит Сингулярное разложение (Singular Value Decomposition, SVD). Это «швейцарский нож» линейной алгебры, который работает с любой матрицей. SVD лежит в основе рекомендательных систем Netflix, алгоритмов сжатия изображений и методов обработки естественного языка.
Что такое SVD? Формальное определение
Идея SVD заключается в том, что любую сложную матрицу можно представить как произведение трех простых матриц. Это похоже на то, как любое число можно разложить на простые множители (), только для таблиц данных.
Для любой матрицы размера существует разложение:
Давайте разберем каждый элемент этой формулы, так как это самое важное уравнение в нашем курсе:
* — исходная матрица данных размера (например, пользователей и фильмов).
* — ортогональная матрица размера . Ее столбцы называются левыми сингулярными векторами. В контексте рекомендаций она описывает характеристики пользователей.
* (Сигма) — диагональная матрица размера . На главной диагонали стоят сингулярные числа (singular values), а все остальные элементы — нули. Эти числа всегда неотрицательны и отсортированы по убыванию. Они показывают «силу» или важность скрытых признаков.
* — транспонированная ортогональная матрица размера . Ее строки (или столбцы матрицы ) называются правыми сингулярными векторами. Она описывает характеристики объектов (фильмов).
!Визуальное представление формулы SVD с размерностями матриц
Геометрическая интерпретация
Вспомните, что матрица — это линейный оператор, который трансформирует пространство. SVD говорит нам потрясающую вещь: любое линейное отображение можно разбить на три последовательных простых шага:
Вращение (матрица ). Мы поворачиваем пространство так, чтобы данные выровнялись по осям координат.
Растяжение/Сжатие (матрица ). Мы растягиваем или сжимаем пространство вдоль осей координат. Коэффициенты растяжения — это наши сингулярные числа.
Вращение (матрица ). Мы снова поворачиваем пространство в итоговое положение.Если собственные векторы искали оси, которые не меняют направления, то SVD находит пару ортогональных базисов: один во входном пространстве, другой в выходном, которые переходят друг в друга с простым растяжением.
!Геометрический смысл SVD: поворот, растяжение, поворот
Сингулярные числа и сжатие информации
Самая магия кроется в матрице . Сингулярные числа идут в порядке убывания: .
* Большое сингулярное число означает, что соответствующий признак (или направление) несет много информации (большая дисперсия).
* Маленькое сингулярное число (близкое к нулю) означает шум или незначительные детали.
Теорема Эккарта — Янга — Мирского
Это звучит сложно, но суть проста: если мы хотим сжать данные (уменьшить размер матрицы), сохранив максимум информации, мы должны просто оставить самых больших сингулярных чисел и занулить остальные.
Это называется усеченным SVD (Truncated SVD). Мы берем только первые столбцов , верхний левый блок матрицы и первые строк . Полученная матрица будет наилучшим приближением исходной матрицы .
Где:
* — сжатая матрица (приближение).
* — урезанные части матриц, содержащие только самую важную информацию.
Примеры применения в Machine Learning
1. Рекомендательные системы
Представьте матрицу , где строки — это пользователи, столбцы — фильмы, а значения — оценки (от 1 до 5). Эта матрица очень разреженная (много нулей), так как один человек не может посмотреть все фильмы.
Применив SVD, мы раскладываем вкусы на «скрытые факторы» (Latent Factors):
* Матрица показывает, насколько каждому пользователю нравятся определенные жанры (боевик, драма, комедия).
* Матрица показывает, насколько каждый фильм относится к этим жанрам.
* Матрица показывает важность этих жанров в целом.
Перемножив усеченные матрицы, мы можем предсказать оценку там, где стоял ноль. Если пользователю нравятся боевики (из ), а фильм — это боевик (из ), то произведение даст высокую оценку. Так Netflix понимает, что вам предложить.
2. Сжатие изображений
Черно-белое изображение — это просто матрица яркостей пикселей. Если у нас есть фото , это 1 миллион чисел.
Если мы сделаем SVD и оставим только первые 50 сингулярных чисел (вместо 1000), мы получим изображение, которое весит в 20 раз меньше, но для человеческого глаза почти не отличается от оригинала. Мы отбросили шум и мелкие детали, оставив основные контуры и градиенты.
3. Латентно-семантический анализ (LSA) в NLP
В обработке текстов мы строим матрицу «Документ-Слово». SVD позволяет найти скрытые темы. Например, слова «космос», «ракета», «орбита» будут сгруппированы в одну тему (один сингулярный вектор), даже если они не всегда встречаются вместе. Это позволяет компьютеру понимать смысл текста, а не просто сравнивать слова.
4. Псевдообратная матрица (Moore-Penrose Inverse)
В статье про системы уравнений мы говорили, что обратная матрица существует только для квадратных матриц с ненулевым определителем. А что делать, если матрица прямоугольная? Как решать в смысле наименьших квадратов (основа линейной регрессии)?
Используется псевдообратная матрица , которую легко найти через SVD:
Где:
* — псевдообратная матрица.
* — матрица, где каждое ненулевое сингулярное число заменено на , а нули остались нулями (плюс транспонирование).
Это позволяет находить оптимальные решения даже для неразрешимых в классическом смысле систем.
Связь с собственными числами
Для любознательных: SVD тесно связано с собственными числами, которые мы изучали ранее.
* Сингулярные числа матрицы — это квадратные корни из собственных чисел матрицы .
* Столбцы — это собственные векторы матрицы .
* Столбцы — это собственные векторы матрицы .
То есть SVD — это обобщение спектрального разложения на прямоугольные матрицы.
Заключение курса
Поздравляем! Вы завершили курс «Основы линейной алгебры для машинного обучения».
Мы начали с простых кирпичиков — скаляров и векторов, научились строить из них здания — матрицы, поняли, как эти здания трансформируют пространство, и, наконец, научились разбирать эти здания на базовые блоки с помощью SVD.
Теперь, когда вы будете изучать методы машинного обучения — будь то Линейная регрессия, PCA или Глубокое обучение (Deep Learning) — вы будете видеть не просто магию черного ящика, а четкую работу механизмов линейной алгебры. Матрицы — это язык данных, и теперь вы владеете этим языком.
Удачи в дальнейшем изучении Data Science!