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没有讲到的东西.而且本系列 ...
随机推荐
- 给ACM newer的编程技巧
一.复杂度 1.1什么是复杂度? 在设计满足问题要求的算法时,复杂度的估算是非常重要的.我们不可能把每个想到的算法实现一遍看看是否足够快.应当通过估计算法的复杂度来判断所想的算法是否足够高效. 1.2 ...
- Java EE学习笔记(一)
spring入门程序: 1.导入Spring的4个基础包以及commons-logging的JAR包复制到lib目录中 2.src->com.itheima.ioc包下: ①UserDao.ja ...
- python入门之集合set
集合(无序不重复) 创建 s = {} s = set() 转换 s = set(li) 方法 s.add("chy") #添加元素 s.clear() #清除元素 a = s.d ...
- python学习之串口编程
# coding=utf-8import serial ser=serial.Serial('com1',9600)ser.write(b"hello")while 1: ser. ...
- Crusher Django 学习笔记2 基本url配置
http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial2-conf-basic-url.html 顺便学习一下FQ Cr ...
- MDX之Case When用法
with member [Measures].[终端销售数量总计] as sum(ytd([日期].[年月].CurrentMember),[Measures].[终端销售数量]) member [M ...
- Sql Server 排序规则字符集的冲突问题
可通过如下sql 进行修改: 如果整个DB都不一致: Alter database Expense_Portal collate Chinese_PRC_CI_AS 某张Table的栏位不一致: ) ...
- bin&sbin 命令作用
最近需要了解sbin与bin的功能,需要整理一下.一下全部为Ubuntu14里面默认安装的.在这里收集一下,转载请注明出处! bin bash shell bunzip2 .bz2文件的解压缩程序. ...
- shell中的-z
-z 字符串为"null",即是指字符串长度为零.
- [windows]命令行关机或重启电脑
1.关机:菜单--〉运行--〉输入:cmd--〉输入:shutdown -s -t 0 2.重启:菜单--〉运行--〉输入:cmd--〉输入:shutdown -r -t 0 (注:“-r”代表重启, ...