首页 > 代码库 > SVD小结
SVD小结
1.矩阵分解
假设一个矩阵Data是m行n列,SVD(奇异值分解)将Data分解为U,E,VT 三个矩阵:
Datam*n=Um*kEk*kVTk*n
E是一个对角矩阵,对角元素为奇异值,对应Data的奇异值,即Data*DataT特征值的平方
2.选取特征
下面确定选取哪几维特征实现降维,去除噪声和冗余信息,用低维数据集表示原数据集。
典型做法是保留矩阵90%能量信息,公式如下,先选一个值h:
奇异阵的平方 sig=ETE
如果奇异阵的平方中前i项的和大于奇异阵的平方总和,即sum(sig[:h]) > sum(sig)*0.9,就可以把原矩阵转换成一个h维的矩阵,新矩阵具体为:
newDatam*n=DataTm*n * U[:,:h]m*h * E-1h*h
3.python实现
numpy中线性代数工具箱linalg包的svd方法可方便得到奇异阵E。另,linalg包的norm方法可用于计算范数。
SVD一些典型应用如推荐系统,06年的Netflix大赛即使用SVD。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。