已经不是一次使用PCA了,但是这么多参数一眼看去还是不能很快的明白,如果我想对一个二维特征矩阵降维,到底应该怎么做,这里作为备忘记录一下。
-
首先使用MATLAB自带的PCA函数
[pc,score,latent,tsquare] = pca(feature) %feature是799*216的矩阵
-
用latent来计算降维后取多少维度能够达到自己需要的精度
cumsum(latent)./sum(latent)
一般取到高于95%就可以了,这里我们取前40维,精度达到了0.9924 -
pca函数已经给出了所有的转换后矩阵表示,也就是输出的score项,取出前40维就是降维后特征
feature_after_PCA=score(:,1:40)
-
精度分析
Ex | Feature | ACC | SRCC |
---|---|---|---|
1 | 216维 | 1 | 0.8552 |
2 | 40维 | 0.9924 | 0.8494 |
3 | 30维 | 0.9844 | 0.8577 |
4* | 20维 | 0.9642 | 0.8839 |
5 | 15维 | 0.9418 | 0.8811 |
6 | 10维 | 0.8972 | 0.7155 |
可见也不是取得维数越多效果越好,降维不仅能起到加快计算速度的作用,说不定还能去除一些冗余干扰提高拟合效果呢