PCA算法,从名字看也知道是用于降维的,通过提取主特征和主特征向量,丢掉次要的特征和特征向量,实现降维。

PCA算法流程(python代码实现流程):

1)零均值化

假如原始数据集为矩阵dataMat,dataMat中每一行代表一个样本,每一列代表一个特征。零均值化就是求每一列的平均值,然后该列上的所有数都减去这个均值。也就是说,这里零均值化是对每一个特征而言的,零均值化后,每个特征的均值变成0。

2)求协方差矩阵

numpy中的cov函数用于求协方差矩阵,参数rowvar很重要!若rowvar=0,说明传入的数据一行代表一个样本,若非0,说明传入的数据一列代表一个样本。因为newData每一行代表一个样本,所以将rowvar设置为0。

3)求得特征值和特征向量

调用numpy中的线性代数模块linalg中的eig函数,可以直接由covMat求得特征值和特征向量。

4)主成分个数选择

按照方差百分比来确定n的个数,用以保留最多信息,同时去除最多的噪声。

PCA算法流程:

PCA算法步骤(不涉及编程语言):

设有m条n维数据:

(1)将原始数据按列组成n行m列矩阵X;

(2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值;

(3)求出协方差矩阵;

(4)求出协方差矩阵的特征值以及对应的特征向量;

(5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P。(特征向量相当于方向基向量,对应特征向量的特征值相当原向量于在该基向量方向上的分量,因此特征值越大,原向量在该特征向量上的分量越大)

PCA降维的优缺点:

优点:

1. 对数据进行降维处理。PCA根据协方差矩阵特征值的大小进行排序,根据需要取前面最重要的部分,将后面的维度省去,可以达到降维从而简化模型或是对数据进行压缩的效果,同时又最大程度的保持了原有数据的信息。

2. 完全无参数限制。完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后结果只与数据相关,与用户独立

缺点:

无参数限制同样也会成为它的缺点,如果用户通过观察得到了一些先验信息,掌握了数据的一些特征,但是无法通过参数化等方法进行干预,可能会得不到预期的效果。

降维具有如下一些优点:

1) 使得数据集更易使用。

2) 降低算法的计算开销。

3) 去除噪声。

4) 使得结果容易理解。

降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

PCA计算主要步骤:

1、使用pca之前进行特征缩放;

2、计算特征矩阵X的协方差矩阵:

sigma = 1/m*XT*X

相关文献大部分公式都是要求计算协方差矩阵之前先将特征矩阵每一个维度减去平均值,这样是让数据分布以原点为中心,但并非必要,并不影响对数据分布方差的分析。

m 是样本数,即特征矩阵X的行数。X 的维度是 m×n,n 是特征向量的维度,即降维之前原始特征数。

得到的协方差矩阵sigma 是 n×n 的矩阵

3. 对协方差矩阵进行奇异值分解。

奇异值分解的几何意义这篇文章讲的特别好:  https://blog.csdn.net/jinshengtao/article/details/18448355

[U, S, V]  = svd(sigma);

U,S,V 都是n×n的矩阵

奇异值(特征值)描述了数据分布的形状。最大特征值(奇异值)对应的特征向量指向数据主要分布方向,即方差最大的方向!

->协方差矩阵特征值从小到大排列对应的特征向量指向数据分布的方差从大到小的方向。协方差矩阵特征值不受刚性变换的影响,而特征向量受刚性变换的影响!

其中 U 是 包含左奇异向量的矩阵,V 是包含右奇异向量的矩阵。S 是一个对角阵,对角线上的元素都是奇异值:s11, s22, s33, ..., snn,奇异值在S中从大到小排列.  特征向量即PCA需要将数据投影的方向!为什么PCA要将数据投影到特征向量的方向即方差最大的方向呢?因为数据的分布无非是用均值和方差来表征,PCA主要考虑方差,投影后保留大部分的方差就意味着保留数据分布的大部分特征!使得样本数据往低维投影后,能尽可能表征原始的数据。

pca百分比取多少比较好_PCA(主成分分析)算法相关推荐

  1. pca百分比取多少比较好_主成分分析(PCA)的详细解释

    原作者:Zakaria Jaadi 翻译:钟胜杰 这篇文章的目的是提供主成分分析的完整同时比较简化的解释,特别是逐步回答它是如何工作的,这样每个人都可以理解它并利用它,而不必具有很高的数学水平. PC ...

  2. pca百分比取多少比较好_PCA分析

    输入: 1.FPKM矩阵(FPKM Matrix). 示例: T4    T5    T6    T7    T8    T9 BM590_A0001         390.11      379. ...

  3. pca各个向量之间的相关度_PCA主成分分析

    降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.降维的算法有很多,比如奇异值分解(SVD).主成分分析(PC ...

  4. pca百分比取多少比较好_母亲节给妈妈发多少红包比较好合适 母亲节红包吉利数字含义...

    明天就是2020年的母亲节了(今年母亲节在5月10日),作为子女都会精心为妈妈准备一份礼物,而很多人会选择微信发红包的方式.那么,母亲节给妈妈发多少微信红包合适?小编整理了一些母亲节微信红包吉利数字, ...

  5. pca百分比取多少比较好_欧式家具沙发价格是多少?沙发怎么护理会比较好?

    点击蓝字 关注我们 现在很多家庭当中的装修风格都是偏欧式的,因为看上去非常的大气,不过有一个欧式装修就缺少不了欧式家具,欧式家具沙发价格是多少?这个问题相信很多人都比较苦恼,不过沙发的护理方法也是比较 ...

  6. java spark 主成分分析算法(pca)

    配置 配置请看我的其他文章 点击跳转 spark官方文档 点击跳转官方文档 数据 训练数据 代码 PCA算法的应用场景不是太明确,没做太多验证 实体类 用了swagger和lombok 不需要的可以删 ...

  7. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过线图(line plot)来可视化主成分分析的碎石图(scree plot)

    R语言进行主成分分析(PCA).使用prcomp函数进行主成分分析:碎石图可视化(scree plot).R通过线图(line plot)来可视化主成分分析的碎石图(scree plot) 目录

  8. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)

    R语言进行主成分分析(PCA).使用prcomp函数进行主成分分析:碎石图可视化(scree plot).R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot) 目录

  9. 机器学习降维算法一:PCA(主成分分析算法)

    引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达 ...

最新文章

  1. 求两个矩形重叠部分的面积
  2. 主线程如何等待多线程完成 返回数据_多线程基础体系知识清单
  3. android https bks,如何将.cer转换为BKS
  4. 【Java】数据结构—— 单链表和双链表
  5. Gson之toJson和fromJson方法
  6. MYSQL基础(事务,触发器,函数,过程指令操作)
  7. 启动mysql显示FAILED_转mysql提示mysql daemon failed to start 启动不了的解决办法
  8. Excel 从web中提取数据
  9. 十字链表实现稀疏矩阵,包含十二大功能
  10. CentOS7.2安装linux版QQ
  11. Java工程师 数据库优化面试题(Day16)
  12. iar 堆栈设置_IAR开发STM32堆栈设置
  13. RSS阅读器FeedDemon使用方法
  14. 问题描述】原始题目:一只公鸡 5 文钱,一只母鸡 3 文钱,三只小鸡 1 文钱,用 100 文钱买 100 只鸡,请问公鸡,母鸡,小鸡各多少只?(推广)
  15. 读书笔记—颠覆式创新:移动互联网时代的生存法则
  16. 【WSL2教程】WSL迁移到非系统盘
  17. python计算运动会某个参赛选手的得分。数据保存在文件中_为什么一定要考计算机二级证书?8个好处,考和没考区别有点大...
  18. 无线射频专题《射频合规,2.4GHz WIFI频谱模板》
  19. 过压过流保护芯片,IC芯片电路图
  20. uniapp vue 身份证号校验

热门文章

  1. motorola铃声算法,是Java的!(转)
  2. 连锁药店现状和信息化建设思路
  3. 广州昊志,深圳爱贝科电主轴常用巴鲁夫BALLUAF电感式开关BES03Z8 、BES00FW 、BES00FT、BES00HJ参数
  4. OpenGL ES 3.0 简介
  5. 分布式消息队列RocketMQ(四):磁盘阵列RAID(补充)
  6. 关于Xilinx下载器驱动安装及常见问题解决方法
  7. Bootstrap2和3的区别与选择指南
  8. Django开发个人博客网站——3、使用pycharm创建博客项目
  9. 文献精读(1)MRD,NSCLC
  10. MYSQL中的列转行