其实之前写过PCA相关的博文,但是由于之前掌握的理论知识有限,所以理解也比较浅。这篇博文,我们以另外一种角度来理解PCA看,这里我假设大家对PCA都有一个初步的了解。首先,我们举一个二维空间中的例子,如下图:

                               

    左图表示二维空间中的五个点,我们试图找一个投影方向使得这5个点投影在这个方向上的方差最大。这里举了两个例子中图和右图,很明显中图的方差是所有投影方向中方差最大的投影方向。ps:这里解释一下方差的意义,纯属个人理解。设想一下,如果我们有一个投影方向A 和 B, 原始特征经过A 投影后数据几乎集中在一点,也就是说方差几乎为零。这个时候我们可以认为,投影后的样本在这一维上的特征几乎是一样一样的。这样一来我们得到新的空间里特征反映的信息就非常少,我们有理由认为这个投影方向非常差。相反呢,如果经过B 投影后,样本在新的特征空间方差非常大(如中图),我们认为新的样本这一维上的信息非常明确,也就是说这个投影方向是一个“主投影方向”。PCA的目的就是要找到最好的k个“主投影方向”,怎么来判断这个投影方向好不好,我们已经讲了,用方差:投影后方差越大就越好。

    接下来我们用数学公式来证明一下:假设我们有m个样本,u是要求解的投影方向,为样本点,这里的已经去均值化了,那么最大化方差可以形式化最大下面式子:

                                          

   ps:这里解释一样, 这是方差的计算公式,样本在投影后对应的新的样本是,由于原始空间去均值化这里新得到的样本也去均值化了,所以新的样本的方差就可以表示为 ,后面的式子就不解释了,并且这里

    于是乎,我们就把最大化方差这个问题转化为求解这个式子 的特征向量的问题了。至于为什么是这样呢,数学上有证明,如下:(这里使用的市拉格朗日方程来求解最大化问题)

                                  

    对u求导可得:

                                   

    令导数为零就可以知道u就是 的特征向量了,并且这些特征向量都是正交的,于是我们选取最大k个特征值对应的特征向量就可以构成方差最大的子空间了,样本投影在这个子空间每一维上的方差最大。

    总结:博文虽短,但是对于一些对PCA有一定了解却不知所以然的人,相信还是值得一看的。

   

 

 

再谈PCA的更多相关文章

  1. [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例

    [转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15   |   0 Comments   |   阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...

  2. Support Vector Machine (3) : 再谈泛化误差(Generalization Error)

    目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...

  3. Unity教程之再谈Unity中的优化技术

    这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体   这一步主要是为了针对性能瓶颈中的”顶点 ...

  4. 浅谈HTTP中Get与Post的区别/HTTP协议与HTML表单(再谈GET与POST的区别)

    HTTP协议与HTML表单(再谈GET与POST的区别) GET方式在request-line中传送数据:POST方式在request-line及request-body中均可以传送数据. http: ...

  5. Another Look at Events(再谈Events)

    转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...

  6. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

    STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...

  7. 再谈JSON -json定义及数据类型

    再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...

  8. C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】

    STL实践与分析 --再谈迭代器[下] 三.反向迭代器[续:习题] //P355 习题11.19 int main() { vector<int> iVec; for (vector< ...

  9. C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】

    STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...

随机推荐

  1. JavaScript “完美运动框架”

    /* “完美运动框架”,所谓“完美”,就是可以实现多个参数,多个物体运动互不影响的一个运动函数move(). * 大致结构如下:运动框架 EXP: move(obj,{width:200,height ...

  2. 【Qt】Qt之自定义界面(右下角冒泡)【转】

    简述 网页右下角上经常会出现一些提示性的信息,桌面软件中也比较常见,类似360新闻.QQ消息提示一样! 这种功能用动画实现起来很简单,这节我们暂时使用定时器来实现,后面章节会对动画框架进行详细讲解. ...

  3. jquery插件formValidator的ajaxValidator传参数问题

    最近在用formValidator插件,遇到一个问题.当我想用ajaxValidator的url传参数时,$("#tbName").val().document.getElemen ...

  4. 解析php开发中的中文编码问题

    其实php开发中的中文编码并没有想像的那么复杂,虽然定位和解决问题没有定规,各种运行环境也各不尽然,但后面的原理是一样的. 了解字符集的知识是解决字符问题的基础. PHP程序设计中中文编码问题曾经困扰 ...

  5. webstorm 10.0.4 注册码

    激活码: UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJ ...

  6. smarty框架块函数

    块函数的形式是这样的:{func} .. {/func}.换句话说,它们被封闭在一个模板区域内,然后对该区域的内容进行操作.默认地,你的函数实现会被Smarty调用两次:一次是在开始标签,另一次是在闭 ...

  7. 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL ...

  8. Nginx模块开发-理解HTTP配置

    理解HTTP配置 相关数据结构 先明白Nginx下述数据结构,再理解 HTTP配置的解析与合并过程 ngx_module_t 官方API typedef struct{ NGX_MODULE_V1; ...

  9. Linux流量监控工具 - iftop (最全面的iftop教程)

    在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...

  10. NOIP2015 心得

    NOIP2015的复赛已经过去一个多星期了,成绩也已经出来了,作为一个大(ruo)山(sheng)东的蒟蒻,在学了一年之后拿到了255的成绩.这个成绩并不是很好,但也算在我的预料之内. 第一天第一题水 ...