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 }\)做特征分解取所需要的特征即可。

过程就是:

  1. 对样本集进行中心化处理:\(x _ { i } \leftarrow x _ { i } - \frac { 1} { m } \sum _ { i = 1} ^ { m } x _ { i }\)
  2. 计算协方差矩阵:\[\mathbf { X } \mathbf { X }\]
  3. 对协方差矩阵进行特征分解
  4. 取最大的d个特征作为所需要的特征向量\(w _ { 1} ,w _ { 2} ,\dots ,w _ { d }\)
  5. 得到投影矩阵\(\mathbf { W } = \left( w _ { 1} ,w _ { 2} ,\ldots ,w _ { d } \right)\)

如果这个推导过程看不懂的话请翻阅参考。

参考

  1. PCA的数学原理

cs229_part7的更多相关文章

  1. cs229课程索引

    重要说明 这个系列是以cs229为参考,梳理下来的有关机器学习传统算法的一些东西.所以说cs229的有些内容我会暂时先去掉放在别的部分里面,也会加上很多重要的,但是cs229没有讲到的东西.而且本系列 ...

随机推荐

  1. Codeforces Round #497 (Div. 2) A. Romaji

    Bryce1010模板 http://codeforces.com/contest/1008/problems #include <bits/stdc++.h> using namespa ...

  2. mysql 维护添加远程主机访问

    https://www.cnblogs.com/JNUX/p/6936548.html

  3. 547 Friend Circles 朋友圈

    班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的集合.给 ...

  4. 089 Gray Code 格雷编码

    格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异.给定一个代表编码总位数的非负整数 n,打印格雷码序列.格雷码序列必须以0开头.例如, 给定 n = 2, 返回 [0,1,3 ...

  5. audio、video的控制

    W3C上面给的是js控制相关的播放与暂停,不过在实际开发中我们多会选择JQ来操作的,毕竟方便很多,而play()和pause()用于js play并不是jQuery的函数,而是DOM元素的函数,所以我 ...

  6. IOSButton自定义

    + (APCCustomBackButton *)customBackButtonWithTarget:(id)aTarget action:(SEL)anAction tintColor:(UICo ...

  7. java实现打开Windows控制台窗口

    在写Python程序的时候突发奇想了一下,能不能用java代码实现打开控制台窗口呢? 经过查询网络资料和java API文档,终于实现了: package com.primeton.cmd; impo ...

  8. C语言中的二级指针(双指针)

    原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7220688 C语言更多查看 C语言使用注意事项(一) C语言使用注意事项(二) ...

  9. strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用

    strong关键字与retain关似,用了它,引用计数自动+1,用实例更能说明一切 @property (nonatomic, strong) NSString *stringA; @property ...

  10. Unity之脚本编译顺序

    根据官方的解释,它们的编译顺序如下: (1)所有在Standard Assets.Pro Standard Assets或者Plugins文件夹中的脚本会产生一个Assembly-CSharp-fil ...