文档介绍:机器学习领域中所谓降维就是指采取某种映射方法,将原高维空间中数据点映射到低维度空间中。降维本质是学习一个映射函数 f : x->y,其中x是原始数据点表示,现在最多使用向量表示形式。 y是数据点映射后低维向量表示,通常y维度小于x维度(当然提升维度也是能够)。f可能是显式或隐式、线性或非线性。
现在大部分降维算法处理向量表示数据,也有部分降维算法处理高阶张量表示数据。之所以使用降维后数据表示是因为在原始高维空间中,包含有冗余信息和噪音信息,在实际应用例图像识别中造成了误差,降低了正确率;而经过降维,我们期望降低冗余信息所造成误差,提升识别(或其它应用)精度。又或期望经过降维算法来寻求数据内部本质结构特征。
在很多算法中,降维算法成为了数据预处理一部分,如PCA。实际上,有部分算法假如没有降维预处理,其实是极难得到很好效果。
主成份分析算法(PCA)
Principal Component Analysis(PCA)是最常见线性降维方法,它目标是经过某种线性投影,将高维数据映射到低维空间中表示,并期望在所投影维度上数据方差最大,以此使用较少数据维度,同时保留住较多原数据点特征。
通俗了解,假如把全部点全部映射到一起,那么几乎全部信息(如点和点之间距离关系)全部丢失了,而假如映射后方差尽可能大,那么数据点则会分散开来,以此来保留更多信息。能够证实,PCA是丢失原始数据信息最少一个线性降维方法。(实际上就是最靠近原始数据,不过PCA并不试图去探索数据内在结构)
设n维向量w为目标子空间一个坐标轴方向(称为映射向量),最大化数据映射后方差,有:
其中m是数据实例个数, xi是数据实例i向量表示, x拔是全部数据实例平均向量。定义W为包含全部映射向量为列向量矩阵,经过线性代数变换,能够得到以下优化目标函数:
其中tr表示矩阵迹,
A是数据协方差矩阵。
轻易得到最优W是由数据协方差矩阵前k个最大特征值对应特征向量作为列向量组成。这些特征向量形成一组正交基而且最好地保留了数据中信息。
PCA输出就是Y = W‘X,由X原始维度降低到了k维。
PCA追求是在降维以后能够最大化保持数据内在信息,并经过衡量在投影方向上数据方差大小来衡量该方向关键性。不过这么投影以后对数据区分作用并不大,反而可能使得数据点揉杂在一起无法区分。这也是PCA存在最大一个问题,这造成使用PCA在很多情况下分类效果并不好。具体能够看下图所表示,若使用PCA将数据点投影至一维空间上时,PCA会选择2轴,这使得原本很轻易区分两簇点被揉杂在一起变得无法区分;而这时若选择
1轴将会得到很好区分结果。
Discriminant Analysis所追求目标和PCA不一样,不是期望保持数据最多信息,而是期望数据在降维后能够很轻易地被区分开来。后面会介绍LDA方法,是另一个常见线性降维方法。另外部分非线性降维方法利用数据点局部性质,也能够做到比很好地域分结果,比如LLE,Laplacian Eigenmap等。以后会介绍。
LDA
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一个有监督(supervised)线性降维算法。和PCA保持数据信息不一样,LDA是为了使得降维后数据点尽可能地轻易被区分!
假设原始数据表示为X,(m*n矩阵,m是维度,n是sample数量)
既然是线性,那么就是期望找到映射向量a, 使得 a‘X后数据点能够保持以下两种性质:
1、同类数据点尽可能靠近(within class)
2、不一样类数据点尽可能分开(between class)
所以呢还是上次PCA用这张图,假如图中两堆点是两类话,那么我们就期望她们能够投影到轴1去(PCA结果为轴2),这么在一维空间中也是很轻易区分。
接下来是推导,因为这里写公式很不方便,我就引用Deng Cai老师一个ppt中一小段图片了:
思绪还是很清楚,目标函数就是最终一行J(a),μ(一飘)就是映射后中心用来评定类间距,s(一瓢)就是映射后点和中心距离之和用来评定类内距。J(a)恰好就是从上述两个性质演化出来。
所以两类情况下:
加上a’a=1条件(类似于PCA)
能够拓展成多类:
以上公式推导能够具体参考pattern classification书中对应章节,讲fisher discirminant
OK,计算映射向量a就是求最大特征向量,也能够是前多个最大特征向量组成矩阵A=[a1,a2,….ak]以后,就能够对新来点进行降维了:y = A’X(线性一个好处就是计算方便!)
能够发觉,LDA最终也是转化成为一个求矩阵特征向量问题,和PCA很像,实际上很多其它算法