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