奇异值分解对于提取主成分,数据压缩等都有很大的应用~~
SVD用于提取主成分主要分为一下步骤:
实例:(Matlab版)
假设数据源:M = [-1.0300 0.7400 -0.0200 0.5100 -1.3100 0.9900 0.6900 -0.1200 -0.7200 1.1100;
-2.2300 1.6100 -0.0200 0.8800 -2.3900 2.0200 1.6200 -0.3500 -1.6700 2.4600]
曲线如下:
1.奇异值分解
[U,S,V]=svd(M);
2. 舍弃不需要的奇异值
此时S =[6.0397 0 0 0 0 0 0 0 0 0;
0 0.2187 0 0 0 0 0 0 0 0]
可以看出第二个奇异值0.2远小于第一个6.0397,因此我们把第二个奇异值置零,得到
S =[6.0397 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0]
3. 重构
计算;
4. 结果
用新得到的M(实线)来代替之前的M(散点)实现了降维
对于更详细的特征值与奇异值基础说明,大家可以看这里~~