PCA(Principal Component Analysis)在机器学习领域中,是很常见的一种降维的方法。

PCA的主要思想:将原始高维数据集中的点,映射到低维的超平面中,映射(投影)之后的结果,就是经PCA降维之后的结果(PCA降维具有较高的不可解释性)。

很自然的一个问题是:如何将高维的数据映射到低维呢?什么样的映射方法才是最好的?

答:原始数据到新构建的超平面的距离都足够近(最近重构性)    or   原始数据在这个超平面上的投影尽可能分开(最大可分性)。

那么如何构建这个超平面呢?其实我理解的PCA降维,就是重新构建一个坐标系,将原始数据投影到新的坐标系当中去。具体有很多公式推导,建议翻阅周志华教授的机器学习一书中的第10章内容,讲解的很详细(但我没太看懂)。

由于我的主要目的是学会用PCA到我的任务中,并不研究如何对数据进行降维,所以下文我主要讲解Matlab中PCA的用法以及分析等。

设有需要降维的矩阵X(n行d列,n表示数据集中样本数,d表示特征数),Matlab中PCA用法如下:

[coeff,score,latent] = pca(X);

coeff是什么呢?根据官方文档,coeff是d*d的一个矩阵,是X矩阵的主成分系数,又称为载荷,周志华西瓜书中又将其称为投影矩阵,我理解可能就是新构建的坐标系。coeff这个矩阵跟我们任务相关性不大,知道是什么就行。

score是什么呢?score就是我们需要的了,score与原始X矩阵相对应,也是一个n*d的一个矩阵。根据官方文档的解释,score是原始数据X在主成分空间中的表示(那不就是在新构建的坐标系下的值嘛。。。说那么高大上,还叫做主成分分数,刚开始看还没看懂)。如果你需要将原始数据降维到2维,那你就选取score矩阵中的前两列就行,3维就选score中的前3列,etc。

latent是什么呢?latent又称为主成分方差,是原始数据X的协方差矩阵的特征值。要latent有什么用呢?这就是一个新问题。通常机器学习任务中,我们并不知道把原始数据降低到多少维度比较合适,那么我们可以用latent来帮助我们。latent是一个d行1列的矩阵。以latent的第一行第一列的值为例来说,它是一个实数,表示了如果只选用第一个特征的话,它包含了整个数据集多少的信息量(信息量指数据集的方差大小,方差越大,信息量越多)。如果我们选取了前两个特征,发现其所对应的latent值已经占了整个数据集的95%,那么我们就选取前两个特征就够了,依次类推。

下面我用一个例子来详细的描述一下这个过程。

本例中的数据集来源于http://odds.cs.stonybrook.edu/,用了其中的WBC数据集,是一个乳腺癌相关的数据集,用X来表示该数据集。X是一个377行30列的一个矩阵,一行表示一个患者的全部特征信息,每一列表示患者在该特征下的值(好像是乳腺细胞核的大小占比的数值,诸如此类)。我们用PCA来对该数据集进行降维与分析。

代码如下:

[coeff,score,latent] = pca(X);

latent=[0.144945253673876,.....](转置)是30行一列的矩阵,我们把latent中的值用excel画个饼状图看看,分析一下。

图1. 不带数据标记绘制的latent饼状图

图2.带数据标记绘制的latent饼状图

从图1与图2中,我们可以发现,前5个特征所包含的信息量已经占了整个数据集的85%。如果任务要求不是很高的话,那么我们只需要选用score矩阵中的前5列就够了,剩下的25个特征就被PCA降掉了。

通过PCA降维可以消除掉数据集中意义不太大的特征,提高模型的训练速度,加快收敛,降低运算量等诸多好处。虽然降维之后的数据,相比于原始的数据肯定是丢失了某些信息,但一般来说,丢弃了也就丢弃了,因为丢弃的信息在一定程度上可以达到去噪的效果,同时也可以提高我们的采样密度。

关于PCA的方法推导,后面再继续研究。目前已经达到了我的任务需求,后面有空的话,详细推导一下PCA。

PCA的Matlab实现与分析相关推荐

  1. 中药材鉴别-方法:聚类;PCA 主成分分析;线性判别式分析;判别式检验

    基于线性判别式的中药材鉴别问题的数学模型 摘要 本文旨在讨论如何利用中药材的光谱特征鉴别药材的种类及产地,主要运用 系统聚类,PCA 主成分分析,线性判别,判别式运用等方法,使用了 MATLAB,Ex ...

  2. Matlab实现EOF分析

    EOF(Empirical Orthogonal Function)分析,也叫主成分分析(PCA),是一种经验正交函数分析方法.在大气.海洋.气候等科学领域中经常用于分析多维数据的空间和时间变化模式. ...

  3. 主成分分析(PCA)和独立成分分析(ICA)相关资料

    来源:知乎:独立成分分析(ICA)与主成分分析(PCA)的区别在哪里(https://www.zhihu.com/question/28845451) - 一楼:魏天闻 首先回答题主的问题:不管是PC ...

  4. 基音检测 matlab,基于MATLAB基音检测分析.doc

    基于MATLAB基音检测分析 基于MATLAB基音检测分析 摘要:基音检测作为语音信号处理的重要手段,被广泛地应用于语音的合成.编码及识别等一系列语音信号处理技术问题.基音检测的准确性对于要求极高的语 ...

  5. matlab时频分析工具箱安装_EEG时频分析介绍与实现(基于EEGLAB、NetStation与Analyzer2软件)...

    本文首发在个人博客上(7988888.xyz),此文章中所有链接均通过博客进行访问. 我在很早之前有翻译过一篇通过小波变换来进行时频分析的文章,可参考<小波教程>.最近,我在油管上看到了E ...

  6. matlab函数anova,MATLAB进行单因素方差分析-ANOVA

    <MATLAB进行单因素方差分析-ANOVA>由会员分享,可在线阅读,更多相关<MATLAB进行单因素方差分析-ANOVA(5页珍藏版)>请在人人文库网上搜索. 1.MATLA ...

  7. matlab函数anova,MATLAB进行单因素方差分析——ANOVA

    MATLAB进行单因素方差分析-ANOVA 方差分析的目的是确定因素的不同处理(方法.变量)下,响应变量(类别.结果)的均值是否有显著性差异. 方差分析用于两个或者两个以上因素样本均值的检验问题,如果 ...

  8. 示波器数据用matlab进行fft,示波器CSV波形数据导入Matlab进行FFT分析.doc

    示波器CSV波形数据导入Matlab进行FFT分析 1,将CSV文件拖到workspace窗口,弹出的Import Wizard窗口中,点选"Next",新窗口中选第二项" ...

  9. matlab示波器导出csv数据,示波器CSV波形数据导入Matlab进行FFT分析

    示波器CSV波形数据导入Matlab进行FFT分析 1,将CSV文件拖到workspace窗口,弹出的Import Wizard窗口中,点选"Next",新窗口中选第二项" ...

最新文章

  1. java 流转文件_java 实现 word 文档的在线编辑以及流转
  2. php mysql用户登录_php mysql实现用户登录功能的代码示例
  3. ads1115寄存器操作
  4. jbod ugood 磁盘驱动状态_组成原理—磁盘/IO/中断
  5. python xlwt写入数据超过范围限制_python的xlwt不能正确写入以及缓冲区问题
  6. LightOJ - 1222 Gift Packing(最大费用最大流/KM)
  7. jquery:validate的例子{转载}
  8. 电脑知识:新电脑数据迁移解决方案,看完你就会了!
  9. 7-25 朋友圈 (25 分)(详解+并查集的了解和应用)
  10. Okhttp 源码解析
  11. oracle心间directory并附权,【Oracle】第一章创建授权
  12. 获取.propertys文件获取文件内容
  13. eclipse 主题
  14. java控制台进度_java进度条:控制台输出百分比示例代码
  15. C语言编程判断字母大小并转换,towupper()
  16. Linux如何强制关闭任务进程(Linux版任务管理器)
  17. PM at Google —— 最全产品经理常用术语及知识点,建议收藏!
  18. 中兴推“小兴看看”,诠释智能家电的真谛
  19. 实现PPT的在线预览(动态,及转PDF)
  20. windows重建linux引导,Linux引导修复 利用Linux重建Windows引导

热门文章

  1. 车削加工振刀打刀的现象如何处理?
  2. 计算机算法常用术语中英对照(分为两部分 其中一部分表格形式 )
  3. Apache Shiro 权限管理
  4. ui设计的好网站(转载)
  5. Android读ini配置文件
  6. MSCOMCTL.OCX文件缺失问题
  7. 基于javaweb的美发店理发店会员管理系统ssm项目源码
  8. 怎样在快手快速下载不含水印视频详细介绍 快手大批量下载高清无水印视频软件 说说如何快速下...
  9. 关闭Windows Server的IE增强安全配置(ESC)
  10. c#FastReport打印机设置,设置打印机名