让你惊艳的PCA

来源:互联网 发布:多管火炮升级数据 编辑:程序博客网 时间:2024/04/27 18:18

我一直误以为自己记述了这个历程,今天翻开博客发现竟然没有任何记录。事情从很早前的一个失眠的夜晚说起,一个数据集假设有d个特征属性,但是我想使用d’ < d个特征属性来尽可能的表示这个特征,那我要怎么做,那么我如何尽可能多的保留原始数据的信息呢。暂且以二维数据d=2为例,后面会扩展到多维d > 2。
如下图所示,这些二维的数据,可以通过两个坐标轴的数值完完全全的反映数据的信息。那么我能不能通过一个数值完完全全反映一个二维数据的信息呢,肯定是不行的。这时候会想到,这些数据在某一个方向上面十分集中,而在另一个方向上十分离散,集中的方向反映了这些数据的共性,离散的方向反映数据的特异性,假如把数据映射到这两个方向上,也就是映射到了一个新的二维空间,新的二维空间中,一个坐标的值代表了特异性,一个坐标代表共性。当然要求这两个坐标是互相垂直的。
使用两条垂直的直线来代表这两个坐标的方向,line1:w1*x = 0,line2: w2 * x = 0,w1 * w2 = 0。从这两个直线的定义可以知道这两条直线全部过原点,我们要找的是直线所在的方向,跟直线没有关系,为了尽可能用少的变量来表示这两条直线,那就找那两条过原点的直线吧。
二维空间中的随机数据集
点x在line1直线上投影距离原点的距离是多少呢,line1的法向量是w1,方向向量肯定是w2了, |w2*x|/||w2||, 当然x到line2直线上投影距离原点的距离就是 |w1 * x|/||w1||, 其实到在直线上的投影到原点的距离也就是在新空间的两个坐标值,假设||w1|| = ||w2|| = 1,这个作为约束项,好求得唯一的一组w1 w2。 不妨假设line1是表示特异性的坐标轴,line2表示的是共性坐标轴,我们的目标是 min( |w1 * x|/||w1|| - ave1)2的同时max (|w2 * x|/||w2|| - ave2)2,ave1表示的是 所有数据在line2上面坐标的均值。其实目标就是在共性上面希望方差最小,在特异性方向上希望方差最大。如果数据集X在各个属性上是经过归一化处理的统一减去均值,那么ave1、ave2就会等于0。此时就变成了
min(w1XX’w1’)且max (w2XX’w2’),||w1|| = ||w2|| = 1。
这时候求得的结果就会是我们想要的结果。但是对于两个目标一个约束条件显得手足无措,如何求解w1和w2呢。
但是无论如何去求,我们得到的w1和w2必定是目标函数对其求偏导并等于0得来的结果。
下面就用笔算代替吧,这样编辑着实在费时间,还不容易描述清楚。一个简单的降维想法,无意中竟然发现与PCA完全吻合,当时的我感到无比惊奇,今天看周志华的机器学习西瓜书的时候,在介绍PCA的过程中回想起了以往的推导,可能PCA出现的一个原因就是这个吧。
这里写图片描述
下面是引入核技巧的Kernel PCA
这里写图片描述
在这个地方,我不太确定,之所以这么写是在台大林轩田教授课程里面讲到当最优化的目标里面包含W二次范式的时候,W就可以用所有样本线性表示,详细原因个人能力有限,尚不清楚。我们最优化的式子里面没有明显的W二次范式,但是有Wi*Wi * Aij的累加,所以在这里假设这种条件下,W也可以用样本的线性组合来表示。(日后会完善这个地方)
这里写图片描述

从上面的结论可以看出,引入和技巧之后,变化不过是原来的解是d*d(样本维度)矩阵的特征值和特征向量,引入核技巧的解释m * m(m是样本数量)矩阵特征值和特征向量的解。(翻开书验证了一下结论,自己得出的结果没错,捏了一把冷汗)。其实学习的过程,不是看了多少,想了多少更重要。