PCA(Principal Components Analysis),它是一种“投影(projection)技巧”,就是把高维空间上的数据映射到低维空间。比如三维空间的一个球,往坐标轴方向投影,变成了一个圆。球是3维的,圆是2维的。在球变成圆的这个投影过程中,丢失了原来物体(球)的一部分“性质”---圆不是球了,只有面积没有体积了;也保留了原来物体的一部分性质---圆 和 球 还是很像的……

而对于一个训练样本y而言,假设它有M个特征(M维),y={y1, y2,...yM},通过PCA,进行投影,降维成D维(M>D)。为什么要降维?最主要的两个原因是:

①可视化,我们只能看到一维、二维、三维空间上的物体,当某物体需要4维或以上特征表示时,只能想象了……

②特征选择(feature selection),比如说采集到的某个样本 由 20维特征 组成,其中有一些特征属于“噪音(noise)",而由于某些原因,我们不想要这些“噪音”。又比如说,存在特征冗余,描述一个球,可以用如下特征:(体积、面积、直径、半径),其实我只需要知道半径、直径、面积、体积这些都可以通过公式求出来。因此,体积、面积 、直径这些特征,相对于半径来说,是冗余的特征。

如何降维?

PCA降维的目标就是:找到一种投影方式,将原来的M维样本y 变成 D维样本x,并且使得投影之后的D维样本x,能够尽可能多地保存原来的样本y中的信息。由于将y投影成x,可以有不同的投影方向,那哪个投影方向比较好呢?即,能够尽可能多地保存原来的样本y中的信息呢?

maintains the characteristics of the original object as much as possible

可以使用方差来衡量投影方向的好坏。如下图:

上图中有“两团点”,在聚类算法中称为有两个聚簇。将这两个簇中的点 往B方向投影,B箭头指向的那条直线上的点,表示 投影之后得到的新样本点,已经看不出有两个簇了。而此时,得到的方差是σ2B=8.35.

往A方向投影,A箭头指向的那条直线上的点,还能够明显地看出有 两类,即还能够保存“两个簇“的结构,这说明投影方向A比B 要好,因为原来的样本点有两个簇,而往A方向投影后,还能看出有两个簇。此时得到的方差σ2A=17.37.

这表明:可以使用 投影后的所有样本点的 方差大小,来衡量投影方向的好坏!

 

假设有N个样本点,用Y表示,每个样本点是M维的。现在使用PCA降维,降成D维的,用X表示。X中还是有N个样本点,只是每个样本的维数变成D维的了。

这种投影方式,用矩阵乘法表示:XN*D=YN*M*WM*D

对于投影之后的样本x 的第d个特征xnd而言,有:

xn=w1T*yn ,   xn=w2T*yn ,....    xnd=wdT*yn

xn=(xn1,xn2,...xnd)T=WT*yn

也就是说,PCA降维的本质是:找到一个M*D维的矩阵W。可以对W=(w1,w2,...wd)进行一些约束:||wi||=1,且wTi*wj=0 (j != i),只要W满足:X=Y*W即可。

在数学上,PCA投影是一种线性变换。因为,根据线性变换的定义

给定函数L: Rn-->Rm,如果:

  1. 对于任意的x belongs to Rn,a 属于实数R,有L(a*x)=a*L(x)
  2. 对于任意的x,y belongs to Rn,有L(x+y)=L(x)+L(y)

则称函数L是一个线性变换。线性变换对加法和数乘封闭。上面的条件1,表示L对数乘封闭;条件2,表示L对加法封闭。

而对于矩阵A而言, A*x=b,是满足线性变换的定义的。比如,对于向量x和y,A(x+y)=A*x + A*y;对于实数a,A(a*x)=a*A*x

将矩阵A 作用于 向量x 上,即矩阵A与向量x相乘,就相当于 函数L 作用于x上。

因此,由xn=(xn1,xn2,...xnd)T=WT*yn,可知:PCA是一个线性变换。

回到公式:XN*D=YN*M*WM*D,如何选择合适的W矩阵呢?----使用方差最大来确定W矩阵。因为 方差 可以 衡量投影方向的好坏。

而将矩阵A与向量u相乘,其实就是改变了向量u的方向和大小而已。但是,如果向量u是矩阵A的特征向量,那么 A*u 不会改变向量u的方向。如下图:

在求解 投影后的样本集X 的方差之前,先假设原始样本集Y的每一维特征的均值为0(m个0),即y¯¯=[0,0,...0]T为了简化讨论,假设将原来的M维降成 D=1维。此时,W矩阵就退化为只有一个向量。即寻找一个向量w,对于Y中任何一个样本yn=(yn1,yn2,...ynm),有xn =(xn1,xn2,...xnd)=(xn1)= wT*yn

根据公式:xn=wT*yn   得到样本集X的均值为:

再根据方差的定义,和 X的均值为0,故X的方差为:

对于样本集Y而言,根据样本协方差矩阵的定义 和 y的均值y¯¯=0,可知:C与样本协方差矩阵密切相关。

因此,要想最大化X的方差,就是最大化wTCw,而C是一个确定的值---由Y的协方差矩阵决定了。因此,我们的目标是尽可能地使w大,而根据我们前面的约束:||w||=1。故最大化wTCw可以使用拉格朗日乘子,转化成如下的约束优化问题:

通过求偏导数,求得:使L最大化 的w的公式:Cw=λw。而这刚好是特征向量的定义,λ是矩阵C的特征值,w则是对应的特征向量。

由于 ||w||=wTw=1,σ2 = wTCw,左边乘上wTw,得到:σ2 *wTw=wTCw,也即:σ2w=Cw,因此方差σ2就是特征值λ,而最大化方差,其实就是选择矩阵C的最大化的特征值而已,相应的变换向量w,其实就是特征值对应的特征向量。

因此,更一般地,将原来的样本集Y,M维特征 降到 D维,其实就是计算矩阵C(与Y的协方差矩阵息息相关)的特征值和特征向量,由于 C 是一个M*M维的矩阵,因此一共有 m 个特征值,及其对应的 m 个特征向量。而我们只需要选择 前D个 最大的 特征值 对应的特征向量,并将之 作为线性变换矩阵 W 即可。

参考文献:《a first course in machine learning》第七章

原文:http://www.cnblogs.com/hapjin/p/6728697.html

PCA(主成分分析)的简单理解的更多相关文章

  1. 关于PCA主成分分析的一点理解

    PCA 即主成分分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标. 假设目前我们的数据特征为3,即数据维度为三,现在我们想将数据降维为二维,一维: 我们之前的数据其实就是三维空间中的一个个 ...

  2. 【转】浅谈对主成分分析(PCA)算法的理解

    以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识.本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会. 主成分分析(PCA ...

  3. 用PCA(主成分分析法)进行信号滤波

    用PCA(主成分分析法)进行信号滤波 此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档 现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波.网上 ...

  4. 机器学习之PCA主成分分析

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很 ...

  5. PCA主成分分析Python实现

    作者:拾毅者 出处:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代码:https://github.com/c ...

  6. 机器学习 - 算法 - PCA 主成分分析

    PCA 主成分分析 原理概述 用途 - 降维中最常用的手段 目标 - 提取最有价值的信息( 基于方差 ) 问题 - 降维后的数据的意义 ? 所需数学基础概念 向量的表示 基变换 协方差矩阵 协方差 优 ...

  7. PCA主成分分析(上)

    PCA主成分分析 PCA目的 最大可分性(最大投影方差) 投影 优化目标 关键点 推导 为什么要找最大特征值对应的特征向量呢? 之前看3DMM的论文的看到其用了PCA的方法,一开始以为自己对于PCA已 ...

  8. git的简单理解及基础操作命令

    前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...

  9. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

随机推荐

  1. 【洛谷2252&HDU1527】取石子游戏(博弈论)

    题面 HDU1527 取石子游戏 洛谷2252 取石子游戏 题解 裸的威佐夫博弈 #include<iostream> #include<cmath> using namesp ...

  2. 【CF526G】Spiders Evil Plan(贪心)

    [CF526G]Spiders Evil Plan(贪心) 题面 洛谷 CodeForces 给定一棵树,要求选择\(y\)条链,满足被链覆盖的所有点在树上联通,且\(x\)必定在联通块中. 对于每次 ...

  3. 「SHOI2016」黑暗前的幻想乡 解题报告

    「SHOI2016」黑暗前的幻想乡 sb题想不出来,应该去思考原因,而不是自暴自弃 一开始总是想着对子树做dp,但是状态压不起去,考虑用容斥消减一些条件变得好统计,结果越想越乱. 期间想过矩阵树定理, ...

  4. 外围功能电路控制 LET′S TRY“嵌入式编程”: 4 of 6

    外围功能电路控制 LET′S TRY“嵌入式编程”: 4 of 6 本连载讲解作为嵌入式系统开发技术人员所必需具备的单片机的基础知识. 在<单片机入门(1)-(3)>中,我们一起学习了单片 ...

  5. zabbix3.2添加web页面监控(Web monitoring)

    应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...

  6. 蓝桥杯试题 k倍区间(dp)

    问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  7. 20165223 学习基础和C语言基础调查

    一.学习基础 1. 我所擅长的技能 从小我就对新鲜事物抱有浓厚的兴趣,因此多年来培养了许多爱好,对感兴趣的诸如绘画方面的国画.油画.素描.漫画等:音乐方面的钢琴.吉他.架子鼓等:运动方面的滑板.溜冰. ...

  8. Docker中如何删除image(镜像)

    原文地址:http://yaxin-cn.github.io/Docker/how-to-delete-a-docker-image.html docker中删除images的命令是docker rm ...

  9. macOS在virtualenv中使用wxPython报错

    在虚拟的Python环境中运行GUI的软件报错 This program needs access to the screen. Please run with a Framework build o ...

  10. A1125. Chain the Ropes

    Given some segments of rope, you are supposed to chain them into one rope. Each time you may only fo ...