Moh*_*hit 35 machine-learning netflix data-mining svd bigdata
所有这些时间(特别是在Netflix竞赛中),我总是遇到这个博客(或排行榜论坛),他们提到如何通过对数据应用简单的SVD步骤帮助他们减少数据的稀疏性或者通常提高他们的算法的性能手.我想(很久以来),但我无法猜测为什么会如此.一般来说,我得到的数据非常嘈杂(这也是bigdata的有趣部分),然后我知道一些基本的功能扩展,如日志转换的东西,平均规范化.但是像SVD这样的东西有什么帮助.所以,假设我有一个巨大的用户评级电影矩阵......然后在这个矩阵中,我实现了一些推荐系统版本(比如协同过滤):
1) Without SVD
2) With SVD
Run Code Online (Sandbox Code Playgroud)
它是如何帮助谢谢的
Die*_*ego 50
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
Edo*_*ard 16
奇异值分解通常用于X通过低秩矩阵近似矩阵X_lr:
X = U D V^T.D'通过保持k最大的奇异值并将其他值设置为零来形成矩阵.X_lr通过X_lr = U D' V^T.该矩阵X_lr是则秩的最佳近似k的矩阵X,对于Frobenius范数(的等效l2范数为矩阵).它是计算效率使用这种表示,因为如果你的矩阵X是n由n和k << n,你可以存储只有低等级近似(2n + 1)k系数(通过存储U,D'和V).
这通常用于矩阵完成问题(例如协同过滤),因为假设用户评级的真实矩阵是低等级的(或者通过低等级矩阵很好地近似).因此,您希望通过计算数据矩阵的最佳低秩近似来恢复真实矩阵.然而,现在有更好的方法从嘈杂和缺失的观测中恢复低秩矩阵,即核规范最小化.参见例如论文凸松弛的力量: E. Candes和T. Tao的近似最优矩阵完成.
(注意:从该技术派生的算法也存储估计矩阵的SVD,但计算方式不同).
| 归档时间: |
|
| 查看次数: |
22624 次 |
| 最近记录: |