cs229_part7
PCA
问题背景
回顾一下我们特征选择中的问题。如果特征非常多,而且有一些特征是重复的,那么我们可以想办法剔除掉一些无用的特征。那里我们提到一个计算互信息的方法。那么这里换一种降维方法。

比如说这样的一种比较极端的情况,我们数据是二维的,但是很明显能看的出来有一个维度对于分类是没有任何作用的,那我们可以把这个数据投影到x轴上面,变成这样:

这样我们就把二维的数据降到了一维。
当然这只是一种比较极端的情况,但是对于任意情况也是可以推广的。比如上面这个情况,投到x轴是最好的情况,而投到y轴上是最差的情况。因为投到y轴上就变成了一个点,还怎么分类。
那么主要的想法就是,我们找到一个超平面,然后把特征投到超平面上面,那要怎么投呢,就是投完之后使得点之间的距离越大越好。
形式描述
如果我们的样本在超平面上的投影是\(\mathbf { W } ^ { T } x _ { i }\)那么投影后样本的方差就是\(\sum _ { i } \mathbf { W } ^ { T } x _ { i } x _ { i } ^ { T } \mathbf { W }\)
那么优化目标就是:
\[
\left.\begin{array} { c } { \max _ { \mathbf { W } } \operatorname{tr} \left( \mathbf { W } ^ { \text{T} } \mathbf { X } \mathbf { X } ^ { \text{T} } \mathbf { W } \right) } \\ { \mathbf { s .t .} \mathbf { W } ^ { \text{T} } \mathbf { W } = \mathbf { I } } \end{array} \right.
\]
利用拉格朗日算子可得:
\[
\mathbf { X } \mathbf { X } ^ { \text{T} } \mathbf { W } = \lambda \mathbf { W }
\]
于是对\(\mathbf { X } \mathbf { X }\)做特征分解取所需要的特征即可。
过程就是:
- 对样本集进行中心化处理:\(x _ { i } \leftarrow x _ { i } - \frac { 1} { m } \sum _ { i = 1} ^ { m } x _ { i }\)
- 计算协方差矩阵:\[\mathbf { X } \mathbf { X }\]
- 对协方差矩阵进行特征分解
- 取最大的d个特征作为所需要的特征向量\(w _ { 1} ,w _ { 2} ,\dots ,w _ { d }\)
- 得到投影矩阵\(\mathbf { W } = \left( w _ { 1} ,w _ { 2} ,\ldots ,w _ { d } \right)\)
如果这个推导过程看不懂的话请翻阅参考。
参考
cs229_part7的更多相关文章
- cs229课程索引
重要说明 这个系列是以cs229为参考,梳理下来的有关机器学习传统算法的一些东西.所以说cs229的有些内容我会暂时先去掉放在别的部分里面,也会加上很多重要的,但是cs229没有讲到的东西.而且本系列 ...
随机推荐
- UVa12304(计算几何中圆的基本操作)
断断续续写了250多行的模拟,其间被其他事情打扰,总共花了一天才AC吧~ 这道题目再次让我明白,有些事情看起来很难,实际上并没有我们想象中的那么难.当然了我主要指的不是这个题的难度…… 也是初学计算几 ...
- bryce1010专题训练——CDQ分治
Bryce1010模板 CDQ分治 1.与普通分治的区别 普通分治中,每一个子问题只解决它本身(可以说是封闭的) 分治中,对于划分出来的两个子问题,前一个子问题用来解决后一个子问题而不是它本身 2.试 ...
- Windows下打开某些软件时显示显卡驱动不是最新的问题
在Windows下打开某些对显卡要求比较高的软件时,会出现某些显卡驱动不是最新,要求更新到最新的提示,但是当你真的去更新显卡驱动的时候,却发现现在的显卡驱动已经是最新了,那么为什么还会有这样的提示呢, ...
- maven创建springMVC项目(一)
1.Eclipse配置 添加maven集成安装包:路径是maven下载安装的解压位置,如果不知道如何下载安装请点击这里看我的另一篇安装文章,这里不多说 这里需要注意的是: a.settings.xml ...
- Spring框架学习-Spring的AOP概念详解
一.SpringAOP的概述. AOP(Aspect Oriented Programming),面向切面编程,通过预编译方式和运行期间动态代理实现程序的功能的统一维护的技术.AOP是OOP(面向对象 ...
- jQuery.Deferred(jQuery1.5-2.1)源码剖析
jQuery.Deferred作为1.5的新特性出现在jQuery上,而jQuery.ajax函数也做了相应的调整.因此我们能如下的使用xhr请求调用,并实现事件处理函数晚绑定. var promis ...
- 浅析document和window的区别
1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2 ...
- 安卓ListView基础应用
listview简单描述 主页面: package com.example.listview; import com.lidroid.xutils.ViewUtils; import com.lidr ...
- explian使用介绍
1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有:A:simple:表示 ...
- JS 语言基础
两个变量 相加 var s="今天下雨了"; var i=10; alert(i+s); 这里的i+s是拼接的意思 显示出来是 今天下雨了10 假设我改 s="2 ...