важность PCA или SVD в машинном обучении - PullRequest
34 голосов
/ 06 марта 2012

Все это время (особенно в конкурсе Netflix) я всегда сталкиваюсь с этим блогом (или форумом лидеров), где они упоминают, как применение простого шага SVD к данным помогло им уменьшить разреженность в данных или в целом улучшить производительностьих алгоритм в руках.Я пытаюсь думать (с давних пор), но я не могу догадаться, почему это так.В общем, данные, которые я получаю, очень шумные (это тоже забавная часть bigdata), а затем я знаю некоторые базовые функции масштабирования, такие как преобразование журналов, то есть нормализация.Но как помогает что-то вроде СВД.Допустим, у меня есть огромная матрица фильмов с рейтингом пользователей ... и затем в этой матрице я реализую некоторую версию системы рекомендаций (скажем, совместную фильтрацию):

1) Without SVD
2) With SVD

как это помогает Спасибо

Ответы [ 3 ]

49 голосов
/ 06 марта 2012

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

Как это работает, просто.Вы выполняете SVD над своими тренировочными данными (назовите это матрицей A), чтобы получить U, S и V *.Затем установите в ноль все значения S меньше определенного произвольного порога (например, 0,1), назовите эту новую матрицу S '.Затем получите A '= US'V * и используйте A' в качестве новых данных о тренировках.Некоторые из ваших функций теперь установлены на ноль и могут быть удалены, иногда без какого-либо снижения производительности (в зависимости от ваших данных и выбранного порога).Это называется k - усеченный SVD.

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

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

См .: http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Dimensionality_Reduction/Singular_Value_Decomposition

https://stats.stackexchange.com/questions/33142/what-happens-when-you-apply-svd-to-a-collaborative-filtering-problem-what-is-th

16 голосов
/ 07 марта 2012

Разложение по сингулярным значениям часто используется для аппроксимации матрицы X матрицей низкого ранга X_lr:

  1. Вычислить SVD X = U D V^T.
  2. Сформируйте матрицу D', сохранив k наибольшие значения единственного числа и установив остальные на ноль.
  3. Форма матрицы X_lr по X_lr = U D' V^T.

Матрица X_lr является тогда наилучшим приближением ранга k матрицы X для нормы Фробениуса (эквивалент l2 -нормы для матриц). Это представление является эффективным в вычислительном отношении, потому что, если ваша матрица X равна n на n и k << n, вы можете сохранить ее аппроксимацию низкого ранга только с коэффициентами (2n + 1)k (сохраняя U, D' и V).

Это часто использовалось в задачах завершения матрицы (таких как совместная фильтрация), поскольку предполагается, что истинная матрица пользовательских рейтингов имеет низкий ранг (или хорошо аппроксимируется матрицей с низким рангом). Итак, вы хотите восстановить истинную матрицу путем вычисления наилучшего приближения низкого ранга вашей матрицы данных. Однако в настоящее время существуют более эффективные способы восстановления матриц низкого ранга по шумным и пропущенным наблюдениям, а именно минимизация ядерной нормы. См., Например, статью Степень выпуклой релаксации: почти оптимальное пополнение матрицы Э. Кандесом и Т. Тао.

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

2 голосов
/ 16 декабря 2016

PCA или SVD, когда используется для уменьшения размерности, уменьшите количество входов. Это, помимо экономии вычислительных затрат на обучение и / или прогнозирование, может иногда создавать более надежные модели, которые не являются оптимальными в статистическом смысле, но имеют лучшую производительность в шумных условиях.

Математически, более простые модели имеют меньшую дисперсию, т. Е. Они менее подвержены переоснащению. Недостаточное оснащение, конечно, тоже может быть проблемой. Это известно как дилемма отклонения. Или, как сказал Эйнштейн простыми словами: все должно быть сделано как можно проще, но не проще.

...