• PCA降维—降维后样本维度大小


    之前对PCA的原理挺熟悉,但一直没有真正使用过。最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题。

    MATLAB自带PCA函数:[coeff, score, latent, tsquared] = pca(X)

    其中,X是n*p的,n是样本个数,p是特征维数。
      (1)coeff矩阵是返回的转换矩阵,就是把原始样本转换到新空间中的转换矩阵。
      (2)score是原始样本矩阵在新样本空间中的表示,也就是原始样本乘上转换矩阵,但是还不是直接乘,要减去一个样本的均值。将原始数据转换到新样本空间中的算法是这样实现的:X0 = bsxfun(@minus,X,mean(X,1)); score = X0 * coeff.
      (3)latent是返回的按降序排列的特征值,根据这个你可以手动的选择降维以后的数据要选择前多少列。
      (4)tsquared是X中样本的T平方统计量,PCA在整个空间中计算使用所有主成分来计算tsquared。
      注意:
      (1)当样本个数远小于特征维数的时候,coeff是比较大的,比如你的降维矩阵是100*50000,那么这个转换矩阵的大小是50000*99(并不是50000*50000)。也就是说PCA降维时,降维后特征维数要小于样本个数。
      (2)选择降维后维度的大小:cumsum(latent)./sum(latent),通过这样计算特征值的累计贡献率,一般来说都选择前95%的特征值对应的特征向量。比如矩阵100*50000,如果你计算得到前50个特征值的累计贡献率已经超过99.9%,那么就完全可以只要降维后的数据的前50列。
     
  • 相关阅读:
    第九章、硬件抽象层:HAL
    第八章、让开发板发出声音:蜂鸣器驱动
    第七章、LED将为我闪烁:控制发光二极管
    第六章、第一个Linux驱动程序:统计单词个数
    第五章、搭建S3C6410开发板的测试环境
    Android深度探索(卷1)HAL与驱动开发
    第三次月考
    第二次月考
    Android深度探索(卷1)HAL与驱动开发
    第六章 集合运算
  • 原文地址:https://www.cnblogs.com/go-go/p/10635421.html
Copyright © 2020-2023  润新知