Научные вычисления

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

Netflix тратит $1 млрд в год на рекомендации. Spotify создаёт персональные плейлисты для 500 миллионов пользователей. Google ранжирует 8 миллиардов страниц. В основе всего - разложение матриц на собственные компоненты.

  • **Netflix/Spotify:** матрица рейтингов пользователь×контент через low-rank SVD выявляет латентные вкусы и предсказывает рейтинги непросмотренного контента
  • **PCA в биоинформатике:** геномные данные содержат миллионы SNP для тысяч пациентов. PCA сжимает до 10-50 компонент, сохраняя популяционную структуру для GWAS анализа
  • **Сжатие изображений:** JPEG использует DCT (родственник SVD) на блоках 8×8. Rank-10 SVD изображения 1000×800 даёт приемлемое качество при сжатии в 8 раз

Исторический контекст

В 1936 году Эккарт и Янг доказали теорему об оптимальной матричной аппроксимации: truncated SVD ранга k минимизирует норму Фробениуса ошибки среди всех матриц ранга k. Это фундаментальный результат: никакое другое разложение ранга k не даёт лучшего приближения в смысле суммы квадратов ошибок. Сам SVD был открыт независимо Бельтрами (1873) и Жорданом (1874) для вещественных матриц, и Аутонне (1915) в комплексном случае. Применение к данным и рекомендательным системам пришло лишь в 2000-х с задачей Netflix Prize.

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

**Google PageRank, 1998. Ларри Пейдж и Сергей Брин строят поисковик на задаче нахождения собственного вектора матрицы переходов между страницами.** Матрица - граф интернета: строка i, столбец j - вероятность перехода со страницы j на страницу i. Собственный вектор для λ=1 даёт стационарное распределение случайного блуждания - это и есть PageRank.

**Определение:** вектор v называется собственным вектором матрицы A с собственным значением λ, если Av = λv. Умножение на A не меняет направление v, только масштабирует его в λ раз. Для квадратной матрицы N×N существует N собственных значений (с учётом кратностей), из которых симметричные матрицы имеют все вещественные λ.

**np.linalg.eig** для несимметричных матриц возвращает комплексные собственные значения. Для ковариационных матриц (симметричных, положительно определённых) используйте **np.linalg.eigh** - быстрее и гарантированно вещественные результаты.

Матрица A имеет собственное значение λ=3 и собственный вектор v=[1, 2]. Что равно A@[2, 4]?

SVD: разложение любой матрицы

**Eigendecomposition работает только для квадратных матриц.** Реальные данные - матрицы M×N (1000 пользователей × 500 фильмов). SVD (Singular Value Decomposition) обобщает eigendecomposition на произвольные матрицы: A = U Σ Vᵀ. Здесь U (M×M) и V (N×N) - ортогональные матрицы, Σ (M×N) - диагональная матрица сингулярных значений σ₁ ≥ σ₂ ≥ ... ≥ 0.

МетодВходная матрицаРезультатПрименение
EigendecompositionКвадратная A (N×N)A = Q Λ Q⁻¹ковариационные матрицы, Markov chains
SVD (полный)Любая A (M×N)A = U Σ Vᵀрекомендательные системы, LSA
Truncated SVD (rank-k)Любая A (M×N)A ≈ Uₖ Σₖ Vₖᵀсжатие данных, noise reduction
EVD симметричнойСимметричная A (N×N)A = Q Λ QᵀPCA, spectral clustering

Матрица A (100×50) имеет SVD: U(100×100), Σ(100×50), Vᵀ(50×50). Для rank-5 аппроксимации сколько чисел нужно хранить?

PCA через SVD: уменьшение размерности

**PCA (Principal Component Analysis)** - проекция данных на оси максимальной дисперсии. Это eigendecomposition ковариационной матрицы - или equivalently, SVD центрированной матрицы данных. Sklearn использует именно SVD для вычисления PCA: более численно стабильный и не требует явного вычисления ковариационной матрицы (N×N при N признаках).

**Выбор числа компонент:** график explained variance ratio (scree plot). Ищем «локоть» - точку где добавление компоненты даёт минимальный прирост. Практическое правило: хранить 95% объяснённой дисперсии. sklearn: `PCA(n_components=0.95)` делает это автоматически.

Почему sklearn реализует PCA через SVD, а не через eigendecomposition ковариационной матрицы?

Рекомендации, сжатие и LSA

**Netflix Prize, 2009. Победители конкурса ($1 000 000) использовали SVD для рекомендательной системы.** Матрица рейтингов (480 000 пользователей × 17 000 фильмов) разложена в произведение матриц пользовательских и фильмовых факторов ранга 100. Пропущенные рейтинги предсказывались как скалярное произведение факторов - без явного SVD (sparse data), через stochastic gradient descent на low-rank разложение.

**LSA (Latent Semantic Analysis):** SVD матрицы термин-документ (TF-IDF). Строки - слова, столбцы - документы, значения - частоты. Rank-k аппроксимация раскрывает семантические темы: кластеры синонимов и тематически схожих документов. Предшественник word2vec и современных LLM embeddings.

SVD и PCA - это разные алгоритмы для разных задач

PCA - это применение SVD к центрированной матрице данных. sklearn.PCA использует SVD внутри. Математически: главные компоненты = правые сингулярные векторы (строки Vᵀ), дисперсия вдоль компоненты = σ²/(n-1).

Eigendecomposition ковариационной матрицы (X.T @ X) и SVD матрицы X дают одинаковые главные направления. Разница только в вычислительной стабильности: SVD избегает умножения X.T @ X, которое квадратирует числа и теряет точность для плохо обусловленных матриц.

Изображение 1000×800 пикселей сжимается через rank-50 SVD. Сколько чисел нужно хранить?

Собственные значения и SVD: главное

  • Eigendecomposition: Av = λv - вектор v не меняет направление, только масштабируется в λ раз
  • SVD: A = UΣVᵀ для любой матрицы M×N; σ₁ ≥ σ₂ ≥ ... - сингулярные значения показывают 'силу' каждого направления
  • Теорема Эккарта-Янга: truncated SVD ранга k - лучшая аппроксимация матрицы ранга k по норме Фробениуса
  • PCA = SVD центрированных данных: правые сингулярные векторы - главные компоненты
  • Применения: рекомендательные системы (Netflix), сжатие изображений, LSA, шумоподавление

Вопросы для размышления

  • Netflix имеет матрицу рейтингов 480K пользователей × 17K фильмов, но 99% значений пропущены. Стандартный SVD требует заполненной матрицы. Как можно адаптировать идею SVD для работы с разреженными данными?

Связанные уроки

  • sci-03
  • sci-05
  • dsp-04
  • opt-04
  • sci-08
  • la-15-svd
Собственные значения и SVD

0

1

Войти