zoukankan      html  css  js  c++  java
  • 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列。
     
  • 相关阅读:
    Servlet(2):通过servletContext对象实现数据共享
    Servlet(1):Servlet介绍
    MyBatis(4):使用limit实现分页
    MyBatis(3):优化MyBatis配置文件
    MyBatis(2):CRUD操作
    SpringMVC(4):文件上传与下载
    SpringMVC(3):AJAX
    什么是开发环境、测试环境、生产环境、UAT环境、仿真环境
    SQL SERVER添加表注释、字段注释
    SQL中行转列(PIVOT)与列转行(UNPIVOT)
  • 原文地址:https://www.cnblogs.com/go-go/p/10635421.html
Copyright © 2011-2022 走看看