2012-03-06 3 views
30

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

1) Without SVD 
2) With SVD 

как это помогает Благодаря

+1

«Производительность», вы имеете в виду скорость или точность? –

+0

@larsmans Привет .. Я имел в виду точность – Fraz

ответ

42

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

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

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

Используя SVD, вы идете от п функций для к признаков, где каждый из них будет представлять собой линейную комбинацию оригинального 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

+5

Хотя это правда, что SVD уменьшает размерность, это не действительно шаг выбора функции, как вы ее описываете. Я считаю, что он чаще используется для ускорения алгоритмов обучения. –

+0

@larsmans: не могли бы вы объяснить немного больше. Как и как это помогает. Я имею в виду в netflix и вообще, данные всегда разрежены (проклятие размерности), но тогда как работает SVD? – Fraz

+0

@larsmans: Я не думаю, что он используется для ускорения фазы обучения, как вы ее описываете. Он действительно используется для выбора функции. – Diego

15

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

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

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

Это часто использовалось в задачах завершения матрицы (например, совместная фильтрация), потому что истинная матрица пользовательских оценок считается низкой (или хорошо аппроксимирована матрицей низкого ранга). Итак, вы хотите восстановить истинную матрицу, вычислив наилучшее приближение низкого ранга вашей матрицы данных. Однако теперь есть более эффективные способы восстановления матриц низкого ранга из шумных и отсутствующих наблюдений, а именно минимизации ядерной нормы. См., Например, статью The power of convex relaxation: Near-optimal matrix completion Е. Candes и T. Tao.

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

+0

При таком подходе, если X-матрица изначально m x n, ваша уменьшенная матрица ранга будет по-прежнему равна m x n. Если ваша цель - уменьшение размерности, а не завершение матрицы, вы используете U или V^T в качестве вашего нового набора тренировок (в зависимости от того, являются ли ваши образцы ориентированной строкой или столбцом в X), а не X_lr. –

2

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

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

Смежные вопросы