本篇文章是根据视频( link.)所作的学习笔记,旨在对机器学习的相关知识更好的理解和巩固。本人基础较弱,推导中看不懂的公式可能会细究,如果有理解不当之处也欢迎指出。
当数据的特征维度不断增加时,很可能会产生维度灾难。以二值数据为例,每增加一个特征维度,样本数量就要增加倍。
所以要使用一些降维的操作。常见的降维方法有:1)直接降维——特征选择;2)线性降维——PCA,MDS;3)非线性降维——流形降维。
本篇文章主要是来介绍一下PCA算法的原理及使用步骤。
· 数据介绍
PCA思想——“一个中心,两个基本点”
一个中心是围绕着原始特征空间进行重构,使线性相关的特征转变为线性无关。
两个基本点包括最大投影方差和最小重构代价。是本文需要进行详解的部分。
数据中心化
首先在PCA当中,必须要做的就是标准化,即每个数据都要减去所在维度上的均值。目的是平衡每一维特征的权重,避免过多的信息缺失。
最大投影方差是希望数据从原始维度投影到新的维度方向时更加离散,目的是为了更好体现每个数据的价值(希望数据都有用,投影后重合的话就浪费数据了)。
投影
这里的投影是指数据投影到新维度方向的位置,以二维降一维为例,下图中的绿色直线就是新维度方向。
假设||||=1,则投影值表示为:
关于投影值计算的小解释:
1. 以此图为例,计算向量a在向量b上的投影,投影值=
,而两向量的内积
,假设向量b的模为1时
,则投影值等于内积结果。
2. 之前的文章《线性代数的本质2》说到两个向量的内积等于第一个向量的转置与第二个向量的乘积,即
。
3. 这下就能解释上面所说数据投影到新维度方向的结果为
了。
方差
因为举例是降到了一维,所以用方差来表示数据降维之后的离散程度
如果是多维空间的话,用协方差来表示不同维度之间的相关性,协方差的主对角线是方差,要尽可能的大,其他位置是协方差计算,令其为0,这样才能保证降维后各维度之间的独立,使其线性无关。
目标函数
此时,最大投影方差的目标函数就可以表达为:
因为该目标函数带有约束 ,所以采用拉格朗日乘子法求解新的维度方向。
求解:
,相当于高数中的求条件极值嘛,使用拉格朗日乘子法进行求解:
得到的结果奈斯了不是!这不就说明了方差矩阵对应的特征向量就是我们想要的新维度向量啊。
对于多维情况而言,就是协方差矩阵对应的前q个特征向量为我们想要的降维后的方向,也相当于对协方差矩阵进行对角化的过程,对角线元素就是特征值,从大到小排列就是前面所说的每一维内部数据足够离散,对角矩阵的其他位置为0就是降维后各维度之间相互正交,线性无关啊!(特征值和特征向量需要补课的同学见我的上篇博文)
这里是指数据降维之后再重构数据时,这之间的损失/误差要尽量小,目的是为了尽可能的保留原始数据的主要成分。
假设现在数据从p维降到q维(q
小解释:中括号内部是投影到新维度
方向的值,再乘以对应的
方向并相加,得到的是该数据在空间中的向量表示。比如向量
,2和3为方向i , j的值,再乘以各方向并相加就是向量的表达,即线性组合嘛,有点绕的同学去之前的文章《线性代数的本质1》看一下。
目标函数
其中,乘以常数
为了简便后边的计算,不影响结果。
同样的,该目标函数也带有约束,所以仍然使用拉格朗日乘子法求解:
计算过程和结果与最大投影方差一致,不同的是,这里表示的是余量(q+1维到p维)中的特征值和特征向量情况。即,使剩余维度的特征值特征向量min和使选取的特征值和特征向量max之间并不冲突,都是为了最小化重构损失时保留原数据中尽可能多的成分。
这里的结果求出来的是余量(降维之后剩下的维度)当中的特征值对应的特征向量。其实跟最大投影方差一回事,只不过一个从大到小选维数,一个从小到大选维数。
与PCA关系不大的小小思考:在最大投影方差和最小重构代价时,都进行了
的假设,这是由于在计算投影时如果没有这个约束就无法化为内积,无法化成两向量乘积的形式,并且我们也不知道
的数值,又多了一个变量,使计算大大的复杂!这时候就在想啊,我该怎么样才能简化这个计算啊,突然!发现加入投影向量为单位向量这样一个约束时,在不影响投影方向的基础之上能大大的简化计算,并且在求解极值的时候一定要带上这个约束条件!这样,加了额外的条件既简化了计算,也没有凭空白白加入!So,在创新的路上,是不是也可以结合我们的问题设置一些合理合适的约束条件,来达到我们的某种目的呢~
3. 求出协方差矩阵C的特征值即特征向量。
4. 将特征向量按照对应特征值从大到小排列,求出前q列组成矩阵P。
5. 降维到q维的数据重构结果为。