降维(一)----说说主成分分析(PCA)的源头

降维系列:

---------------------

主成分分析(PCA) 在很多教程中做了介绍,但是为何通过协方差矩阵的特征值分解能够得到数据的主成分?协方差矩阵和特征值为何如此神奇,我却一直没弄清。今天终于把整个过程整理出来,方便自己学习,也和大家交流。

  • 提出背景

以二维特征为例,两个特征之间可能存在线性关系的(例如这两个特征分别是运动的时速和秒速度),这样就造成了第二维信息是冗余的。PCA的目标是为了发现这种特征之间的线性关系,检测出这些线性关系,并且去除这线性关系。

还是以二维特征为例,如下图。特征之间可能不存在完全的线性关系,可能只是强的正相关。如果把x-y坐标分解成u1-u2坐标,而u1轴线上反应了特征的主要变化(intrinsic),而u2的特征变化较小,其实可以完全理解为一些噪声的扰动而不去考虑它。PCA的任务就是找到u1和u2。

  • 预处理:

将每一维特征的均值中心化,方差归一化。

  • PCA的数学目标:

特征的主方向,就是特征幅度变化最大的方向(“major axis of variation”)。这一点理解很重要。从反面理解,幅度变化最小的方向就是没有变化,或者非常非常小的变化(可以忽略的变化),相对来说可利用价值最小,最可以忽略。而为了找到特征变化最大的方向,假设单位方向矢量为u,则特征点x在u方向的投影点x’距离原点的距离为d=xTu(第一次错误地写成了d=x,感谢@zsfcg的留言,现已改正)。所有的样本点都在一个方向投影后,他们就都在同一条直线上了。而要比较它们之间变化的程度,只要比较d的方差就行。方差最大的u对应的方向就是我们要寻找的主方向(也就是说PCA目标就是找方差大的方向)。因此,我们的目标函数就成为了:

                            (1)

其中x的上标i表示数据集中的第i个样本,m表示数据集中的样本总数。(因为x已经中心化了,所以xu的均值也为0,因此xu的平方只和就是方差。)

括号中的一项十分熟悉,就是协方差矩阵Σ!终于知道协方差矩阵是怎么来的了。再看一看上面的式子,协方差矩阵与投影的方向无关,之于数据集中的样本有关,因此协方差矩阵完全决定了数据的分布及变化情况(请和自相关矩阵区别)。

目标函数如下:

                                                                     (2)

用拉格朗日乘数法求解上面的最大化问题,很容易得到:

                                                                                     (3)

看见没?!u就是Σ的特征向量,λ就是特征值。我们再把(3)代入(2),目标函数就变成了

                                                                             (4)

可见,可以通过协方差矩阵的迹衡量方差的大小。最大的特征值λ(以及对应的特征向量u)决定了数据变化最大的方向。u就是这个单位方向。因此PCA的求解过程就是对协方差矩阵进行特征值分解,并找到最大的几个特征值的过程。

再后面的过程就是由最大的k个特征值对应的特征向量组成一组新的基(basis),让原特征对这个新的基投影得到降维后的新特征。这个过程很多教程都介绍的很清楚了,我就不描述了。

不过我还是想补充一下矩阵及其特征值的意义。矩阵应理解为一种空间变换(从一个空间到另一个空间的变换)。矩阵M是m×n维的,如果m=n则变换后空间维数不变,如果n<m则是降维了。我们考虑m=n的方阵。对M进行特征值分解,得到一组新的基,这组基可以理解为m维空间下的一组新的基坐标(引入它是因为这组基坐标是一种更有效的表达Rm维空间的方式),而对应的特征值,就是投影在基坐标下相应维的响应程度。如果特征值为0,代表在这一维下没有相应,不管是多少,乘过来都是0。特征值如果很接近0,那么任何数在这一维下投影后都会变小很多。所以从降维的角度考虑,可以将这一维忽略(也就是PCA中保留前k个特征值的目的)。奇异值分解也是同样的道理。

PCA其实是最简单的降维方法之一了,很明显的劣势是它仅去除数据之间的线性相关性。对线性的改善往往通过kernel技术拓展到非线性的应用上。另外,PCA的这种降维不一定有助于分类,用于分类的降维方法之一就是LDA。从另一方面说,PCA是一种线性投影,保留了数据与数据之间的欧式距离,即原来欧式距离大的两点在降维后的空间中距离也应大(这样才好保证方差大)。而事实上数据有可能呈现某种流型结构,用PCA降维后数据将不能保持原有的流型结构。在这一方面常用的非线性降维方法是Locally linear embeddingLaplacian Eigenmaps,如下图所示:

PCA的另一种推导方式是最小化投影后的损失(把降维理解为压缩,压缩后还原所得到的误差最小),在这篇文章中也有具体介绍,我也不多说了。

写到这里,才发现我啥也没说,都是提供了各种文献的链接

另外,关于特征值和特征向量的更深理解,可以看本文

--------------------

jiang1st2010

原文地址:http://blog.csdn.net/jiang1st2010/article/details/8935219

降维(一)----说说主成分分析(PCA)的源头的更多相关文章

  1. 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)

    1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...

  2. [机器学习之13]降维技术——主成分分析PCA

    始终贯彻数据分析的一个大问题就是对数据和结果的展示,我们都知道在低维度下数据处理比较方便,因而数据进行简化成为了一个重要的技术.对数据进行简化的原因: 1.使得数据集更易用使用.2.降低很多算法的计算 ...

  3. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  4. 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射

    机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...

  5. 【降维】主成分分析PCA推导

    本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书. 本博客仅为个人总结学习,非商业用途,侵删. 网址 http://www.ptpress.com.cn 目录: PCA最 ...

  6. 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)

    目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...

  7. 用scikit-learn学习主成分分析(PCA)

    在主成分分析(PCA)原理总结中,我们对主成分分析(以下简称PCA)的原理做了总结,下面我们就总结下如何使用scikit-learn工具来进行PCA降维. 1. scikit-learn PCA类介绍 ...

  8. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

    主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同 ...

  9. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

随机推荐

  1. Linux Ubuntu上架设FTP

    操作系统:ubuntu (GNU/Linux) 为了在机子上架设ftp服务器,我们需要安装ftp服务器软件.Linux下具有代表性的ftp服务器软件有Wu-FTP,ProFTP和Vsftp.Wu-FT ...

  2. 快速安装VIM开发环境

    *Mac上当前用户的.vim目录打包*:附件地址:http://pan.baidu.com/s/1sj5FjZJ 1. 备份好系统的原来的vim配置文件,以备恢复使用:         mv ~/.v ...

  3. Manually connecting to the Oracle Linux Yum Server

    Manually connecting to the Oracle Linux Yum Server 1. Download and Install Oracle Linux   Note: The ...

  4. [Form Builder]Form中的validate验证事件

    转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PR ...

  5. nyoj 202 红黑树

    红黑树 时间限制:3000 ms  |            内存限制:65535 KB 难度:3   描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树... 当然,这 ...

  6. volatile--共享数据必须保证可见性

    在Effective Java中看到的,试了一下,有点意思,考查的知识点是volatile关键字. 下面这段代码,预期是打印it takes xxxx miliseconds. .但实际上,陷入了死循 ...

  7. PostgreSQL 修改列报错:cannot be cast automatically to type integer

    如果你直接使用可视化工具修改一个varchar字段为int类型的时候,可能会报错, 这里就需要自己去写一个语句去修改了 调整执行语句:ALTER TABLE table_name ALTER COLU ...

  8. javaweb入门20160305---xml的解析入门

    一个XML文件除了我们人去读写以外,我们希望可以通过程序去读写,利用程序去增删改查XML的过程就是XML编程 CRUD:Create.Read.Update.Delete   XML的两种解析方式 d ...

  9. JQ异步调用

    AjaxGet请求方式: <script type="text/javascript"> $.ajax({ type: "GET", dataTyp ...

  10. 解决IE浏览器IFrame对象内存不释放问题

    最近项目组发现在使用showModalDialog弹出窗体中如果包含IFrame对象,则IFrame对象占用的内存资源在窗体关闭后不会释放.弹出关闭反复多次后,IE浏览器内存占用可超过数百M,严重时I ...