毕业设计阶段性报告02 · PCA最简系统调试与优化
完成时间:2015/04/06– 2015/04/11 总结时间:2015/04/11
内容提要:
1. 尝试提升速度:利用SVD求协方差矩阵特征值
2. 子空间维数k的选择
3. 近邻分类器改进:由“最近邻”拓展为“k-近邻”
4. 观察误判图像,尝试分析原因
5. 后续计划
一、尝试利用SVD来求协方差矩阵的特征值:
(SVD = Singular Value Decomposition, 奇异值分解)
0. 原理阐述:
假设已经得到中心化数据集X:
改进前:
Sigma = X*X’;
[V,D] = eigs(Sigma,k);
改进后:
[u,s,v] = svd(X);
%数学上:将X奇异值分解,得X = u·s·v
%u 的各列是X·X’的特征向量
%v 的各列是X’·X的特征向量
%理论上,使用u的前k列,就和改进前的代码等价
1. 验证上述原理的正确性:
X = magic(5);
A = X*X’;
[V,D] = eigs(A,5);
[u,s,v] = svd(X);
u = single(u) %直接回车看结果,Single只是为了省略一部分小数点,看得清楚些,下同。
V = single(V) %注意区别大小写V的含义
显示结果:只相差一个负号,对后续过程无影响。
利用 tic; [代码段] toc; 测算运行时间,发现对于小型矩阵,svd确实比eigs快很多。
2. 对原始代码的改写:
&#x