深度学习不深度-PCA与AutoEncoder

1.AutoEncoder

AutoEncoder称之为自编码器,自编码器过程如下:

我们的目标是使得 x和\tilde{x} 越接近越好。x经过Encoder后得到y(code)可以看作是一个降维的过程,因此与PCA类似。AutoEncoder原理十分简单,可以利用y(code)做分类,在y(code)较少的情况下,则需要考虑加入噪音来平衡。

2. PCA涉及数学知识

PCA是一种数据分析方法,将原始数据变换成一组各维度线性无关的表示,可以用来提取主要特征,进而实现降维。众所周知,在机器学习算法中,算法的复杂度与数据的维度是紧密相关的,因此提取数据的主要特征来降低算法的复杂度是一个不错的选择。

相关性:两个变量的关联程度。举个例子:电商某一商品的销量与访问量相关,一般情况下访问量高,销量也高,如果此时删除访问量,根据销量也可以推出访问量的大小(反之亦然),因此访问量这个属性对数据分析影响不大。再举个例子:新生入学,男女选项有两个,设置为0和1,即非男即女(阴阳人不算),如果在男女结果两列中删除一列,可以根据一列推出另一列的值。上面两个例子都可以看出本来两个属性(字段),删除其中一个,依然可以根据另一个推出,这就是直观理解降维过程了。

内积几何解释:向量A和向量BA \cdot B=|A|*cos( \alpha )*|B|,也就是AB上的投影长度 \times B的模。

基:在线性代数中,基(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数-----来自百度百科。说来说去,基就类似于一个单位,某一个向量可以表示为基向量的线性组合,基向量的维度决定了变换后向量的维度,因此在降维中可以选择维度较小的基。

问题在于:在PCA降维过程中如何合理的选择基呢?(先留着,最后回答)

具体问题:在尽量保持原有二维数据的信息的基础上,如何用一维数据来表示二维数据呢?

采用的方法是:选取一条直线,把所有二维上的点投影到该直线上,计算出新的坐标,最合理的直线选择就是希望投影后的投影值尽可能的分散,这样对原有数据影响最小。

方差:在数学上有一个术语可以用来衡量数据的分散程度,那就是方差。

如果把数据a中所有字段都去均值,则方差就如下:

此时降维问题就可以表示为:寻找一个低维度的基,使得所有数据在新基上表示后,新的坐标(值)方差最大。

协方差:对于高维(3维以上),我们希望找到一个方向,使得向量投影后的方差最大,但如果低维有2个以上分量该如何做呢?(如何投影?)此时就不能像在2维降低到一维一样投影了。在利用新的基变换后的字段尽可能表示更多的原始信息,同时希望变换后的字段(分量)之间无相关性,否则就重复表示了(见相关性解释)。在数学上,协方差可以表示相关性,协方差为0的两个随机变量不相关,但是不一定独立。

降维优化的目标直观表达:将一组N维向量降低至K维(K>0,K<N),目标是选择K个单位(模为1)的正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。

矩阵乘法:在链接中第1,2节有介绍。矩阵乘法可以看作是(行/列)向量的线性组合。

Jainszhang:MIT线性代数​zhuanlan.zhihu.com图标

 

协方差矩阵:上面我们导出了优化目标,但没有说怎么做。所以我们要继续在数学上研究计算方案。我们看到,最终要达到的目的与字段内方差及字段间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。于是我们来了灵感:假设我们只有a和b两个字段,那么我们将它们按行组成矩阵X:

然后让 X*X^{T} ,再乘系数 1/m 得到如下:

这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差,两者被统一到了一个矩阵中。

设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C=  \frac{1}{m}XX^{T} ,则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。

协方差对角化:根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:

此时优化目标变为:寻找一个矩阵P,满足  PCP^{T} 是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

由上文知道,协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

1)实对称矩阵不同特征值对应的特征向量必然正交。

2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为 e_{1},e_{2}...e_{n} ,按列组成矩阵: E=(e_{1},e_{2}...e_{n})

在此处已经找到了矩阵P, P=E^{T} 。P是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。

 

介绍完了PCA数学过程,下面给出PCA的算法过程:

3. PCA算法过程

总结一下PCA的算法步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵 C=\frac{1}{m}XX^{T}

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

 

 

CodingLabs - PCA的数学原理​blog.codinglabs.org图标

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值