几种特征降维方法:PCA(主成分分析)、KPCA(核主成分分析)、LDA(线性判别分析)、LDA与PCA的对比
PCA(Principal Component Analysis,主成分分析):
在进行图像的特征提取的过程中,提取的特征维数太多经常会导致特征匹配时过于复杂,因此经常采用特征降维的方法。
特征降维,即采用一个低维度的特征来表示高维度。特征降维一般有两类方法:特征选择和特征抽取。特征选择即从高维度的特征中选择其中的一个子集来作为新的特征;而特征抽取是指将高维度的特征经过某个函数映射至低维度作为新的特征。常用的特征抽取方法就是PCA。
PCA算法:
即将n维特征映射到k维空间上(k<n),这k维特征是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n−k维特征。
关于PCA,有两种理论可以用来解释它,即最大方差理论和最小平方误差理论。
图像的角度上理解PCA:
它其实是对数据在高维空间下的一个投影转换,通过一定的投影规则将原来从一个角度看到的多个维度映射成较少的维度。
如下图中,这个数据集本来有3个维度,经过映射就相当于将其旋转到某个角度,这时原本的3维数据集就变成了两条线性分布的数2维数据集(旋转后只需要z轴和y轴就可以很好地表示这两条数据集,此时两条数据集都已经线性分布了,那么x轴这个维度就没有用了)。
PCA的数学原理:
1、最大投影方差理论:
即将PCA定义为一种正交投影,使得原始数据在投影子空间的各个维度的方差最大化。
假设m个n维数据(x(1),x(2),...,x(m))都已经进行了中心化,即 。经过投影变换后得到的新坐标系为{w1,w2,...,wn},其中w是标准正交基,即 。
如果我们将数据从n维降到n'维,即丢弃新坐标系中的部分坐标,则新的坐标系为{w1,w2,...,wk},样本点x(i)在k维坐标系中的投影为:z(i)=(z1(i),z2(i),...,zk(i)).其中, 是x(i)在k维坐标系里第j维的坐标。
对于任意一个样本x(i),在新的坐标系中的投影为 ,在新坐标系中的投影方差为 。
要使所有的样本的投影方差和最大,也就是最大化 ,即:
利用拉格朗日乘数法:
求导可得
即:
W即为 的k个特征向量组成的矩阵,而-λ为 的特征值。
当我们将数据集从n维降到k维时,需要找到最大的k个特征值对应的特征向量。这k个特征向量组成的矩阵W即为我们需要的矩阵(实际上 时,如果W是n个特征向量组成的矩阵,取z(i)的前k个最大值就是所谓的取其主成分)。
对于原始数据集,我们只需要用 ,就可以把原始数据集降维到最小投影距离的k维数据集。
如何选择要保留多少个主成分?
一般而言,设 λ1,λ2,…,λn表示Σ的特征值(按由大到小顺序排列),使得λj为对应于特征向量uj的特征值。那么如果我们保留前k个成分,则保留的方差的百分比可计算为:
以处理图像数据为例,一个惯常的经验法则是选择一个k以保留99%的方差,换句话说,我们选取满足以下条件的最小k值:
对其它应用,如不介意引入稍大的误差,有时也保留90-98%的方差范围。
举例:
假设我们拥有数据{x(1),x(2),…,x(m)},维度n=2,即x(i)∈R2。假设我们想把数据从2维降到1维。
原始数据如下图:
这些数据已经进行了去中心化预处理,使得每个特征 x1和 x2具有相同的均值(零)和方差。
PCA算法将寻找一个低维空间来投影我们的数据。从下图中可以看出,u1是数据变化的主方向,而 u2是次方向。
显然数据在u1方向上的变化要比在u2方向上的变化更大。
我们来计算一下协方差矩阵(上面xi均已去中心化,也就是说xi的均值均为0,故Σ就是x的协方差矩阵):
符号Σ,读”Sigma”,是协方差矩阵的标准符号。注意和求和符号区分开。
求出协方差矩阵后,我们再求出其对应的所有特征向量组成的矩阵U,按列摆放。
注意摆放时,u1的特征值λ1应该是最大的一个,u2的特征值λ2是次大的一个,后面依次类推。
那么我们就可以取向量 u1和u2u1和u2构成的一个新基,用来表示数据。
令x∈R2为训练样本,那么 就是样本点x在维度u1上的投影的长度(幅值)。同样的, 是x投影到u2维度上的幅值。
那么x点在在(u1,u2)基上的坐标为:
“rot”来源于单词“rotation”,意指这是原数据经过(u1,u2)基的旋转。
所有x点旋转后的Xrot显示在坐标图上:
运算 表示旋转到基(u1,u2,...,un)上的训练数据x。矩阵U有正交性,即满足 ,若想将旋转后的向量Xrot还原为原始数据x,将其左乘矩阵U即可: 。
下面我们要将数据降到一维。
这里由于我们要降到一维,故只选择u1。
在本例中,可得 的图如下(取 n=2,k=1):
由于 的后n−k项均为零,因此没必要把这些零项保留下来。所以,我们仅用前 k个(非零)成分来定义k维向量 。
也就是说,我们先用基(u1,u2,…,un)将数据集X转换成Xrot,然后只保留Xrot的前k个最大值。这就是所谓的“我们保留了前k个PCA(主)成分”。
如何用Xrot还原成X呢?
将上面得到的Xrot后面添加n-k个零值,然后 即可。
重构数据 的点图:
注意这个重构数据和原始数据是不完全一样的。
2、最小投影距离理论(最小平方误差理论)
即找到一个k维超平面,使得数据点到这个超平面的距离平方和最小。
假设m个n维数据(x(1),x(2),...,x(m))都已经进行了中心化,即
。经过投影变换后得到的新坐标系为{w1,w2,...,wn},其中w是标准正交基,即
。
如果我们将数据从n维降到k维,即丢弃新坐标系中的部分坐标,则新的坐标系为{w1,w2,...,wk},样本点x(i)在k维坐标系中的投影为:(i)=(z1(i),z2(i),...,zk(i))。
其中, 是x(i)在k维坐标系里第j维的坐标。
如果我们用z(i)来恢复原始数据x(i),则得到的恢复数据 = ,其中,W为标准正交基组成的矩阵。
我们希望所有的样本到这个超平面的距离足够近,即最小化下式:
将这个式子进行整理,可得:
其中 = 。第二行是平方和展开,第三行使用了矩阵转置的公式 和 ,第四行用到了 。第五行合并了同类项,第六行用了 和矩阵的迹,第七行将其表达为矩阵形式。
又 是数据集的协方差矩阵,是一个常量。W的每一个向量wj是标准正交基。
因此,最小化上式等价于:
利用拉格朗日乘数法:
对W求导有
W即为 的k个特征向量组成的矩阵,而λ为 的特征值。
当我们将数据集从n维降到k维时,需要找到最大的k个特征值对应的特征向量。这k个特征向量组成的矩阵W即为我们需要的矩阵。对于原始数据集,我们只需要用 ,就可以把原始数据集降维到最小投影距离的k维数据集。
PCA的计算过程:
去平均值,即每一个特征减去各自的平均值;
计算协方差矩阵;
计算协方差矩阵的特征值与特征向量;
对特征值从大到小排序
保留最大的k个特征向量;
将数据转换到k个特征向量构建的新空间中。
KPCA(Kernel Principal Component Analysis,核主成分分析):
KPCA是对PCA算法的非线性扩展。KPCA算法是经过核变换将样本映射到线性可分的高维空间,再进行PCA降维。
在PCA中,我们舍弃了投影方向上方差最小的n-k个特征值,因为我们认为这些特征值往往代表了噪声。但是实际上小的特征值也可能包含有用的信息;另外,特征向量之间是正交的,这使得PCA容易受到离散值的影响。
在KPCA中,由于原始数据是非线性数据,故我们使用一个核函数通过非线性映射将原始数据投影到一个更高维度的特征空间,然后再使用PCA进行降维(非线性数据可能在更高维度上找到一个超平面使得其线性可分)。
假设高维空间的数据是由n维空间的数据通过映射ϕ产生。
对于n维空间的特征分解:
映射为:
然后通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。一般来说,映射ϕ不用显式的计算,而是在需要计算的时候通过核函数完成。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。
常用核函数:
LDA(Linear Discriminant Analysis, 线性判别分析):
LDA是一种有监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。
相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已。LDA(线性判别式分析)关注的是标注,希望投影之后不同类别的数据点距离尽量大,相同类别的数据点距离尽量紧凑。
LDA数学原理:
假设我们的数据集D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xi为n维向量,yi∈{C1,C2,...,Ck}。
定义Nj(j=1,2...k)为第j类样本的个数,Xj(j=1,2...k)为第j类样本的集合,而μj(j=1,2...k)为第j类样本的均值向量,定义Σj(j=1,2...k)为第j类样本的协方差矩阵。
LDA是多个类向低维投影,故此时投影到的低维空间不是一条直线,而是一个超平面。
假设我们投影到的低维空间的维度为d,对应的基向量为(w1,w2,...wd),基向量组成的矩阵为W, 它是一个n×d矩阵。
此时优化目标变为:
其中
,μ为所有样本均值向量,
。
Sb和Sw即类间散步矩阵和类内散步矩阵。
的分子和分母都是矩阵,不是标量,无法作为一个标量函数来优化。
我们可以用下面这个常见的LDA多类优化目标函数:
为A的主对角线元素的乘积,W为m×d的矩阵。
J(W)的优化过程可以转化为:
上式最右边就是广义瑞利商。
瑞利商是指下面所示的函数R(A,x):
其中x是非零向量,A是n×n的Hermitian(厄米特)矩阵。所谓的Hermitian矩阵就是满足共轭转置矩阵和自己相等的矩阵,即 。
瑞利商R(A,x)有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A最小的特征值,即:
当向量x是标准正交基时,即满足 时,瑞利商退化为: ,还记得上面PCA计算过程中的协方差矩阵吗,对,协方差矩阵的形式和此时的瑞利商完全一样。
广义瑞利商是指下面所示的函数R(A,B,x):
其中x是非零向量,A,B是n×n的Hermitian矩阵,B是正定矩阵。
广义瑞利商的最大值和最小值:
我们将其标准化转为瑞利商的形式:
令 ,得到
分母转化为:
分子转化为:
此时R(A,B,x)转化为R(A,B,x'):
由前面瑞利商的性质,R(A,B,x)的最大值为矩阵
的最大特征值,或者说矩阵
的最大特征值,而最小值为矩阵
的最小特征值。
再看上面J(W)的形式:
其右边就是广义瑞利商的形式,故J(w)最大值是矩阵 的最大特征值,最大的d个值的乘积就是矩阵 的最大的d个特征值的乘积,此时对应的矩阵W是这最大的d个特征值对应的特征向量组成的矩阵。
假如类别是k,LDA降维最多降到类别数k-1的维数。
为什么最大维度不是类别数k呢?
由于w是一个利用了样本的类别得到的投影矩阵(n*d,一般d<<n),而Sb的秩最大为k-1,所以最多有k-1个非0的特征值,即最多有k-1个特征向量。因此它降维的维度d最大值为k-1。
因为Sb中每个 的秩为1,因此协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和)。但是如果我们知道了前k-1个 以后,则最后一个 可以由前面k-1个 线性表示(由于k个 和 不是线性无关的, 前k-1个 和 可以表示线性表出第k个 i ),因此Sb的秩最大为k-1, 的秩最大也为k-1,即特征向量最多有k-1个。
LDA计算过程:
输入数据集D={x(1),x(1),…,x(m)};
计算数据集中不同类别数据的n维均值向量;
计算类内散度矩阵Sw和类间散度矩阵SB;
计算矩阵 的特征值(SW的逆矩阵乘以矩阵SB后得到的矩阵的特征值);
找出矩 最大的k个特征值和其对应的k个特征向量(w1,w2,...,wk);
将原始样本集投影到以(w1,w2,...,wk)为基向量生成的k维空间中,投影后的样本集就是我们需要的样本集D′。
LDA与PCA的对比:
相同点:
两者均可以对数据进行降维;
两者在降维时均使用了矩阵特征分解的思想(求特征值、特征向量);
两者都假设数据符合高斯分布。
不同点:
LDA是有监督的降维方法,而PCA是无监督的降维方法;
LDA降维最多降到类别数k-1的维数,而PCA没有这个限制;
LDA除了可以用于降维,还可以用于分类;
LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向,实际的降维步骤中,经常是LDA放在PCA之后使用;
当样本数量远小于样本的特征维数,样本与样本之间的距离变大使得距离度量失效,使LDA算法中的类内、类间离散度矩阵奇异,不能得到最优的投影方向,这在人脸识别领域中表现得尤为突出。
阅读更多- 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA
- 第八章 采用PCA(主成分分析)或LDA(线性判别分析)的人脸识别(二)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 主成分分析(PCA)和线性判别分析(LDA)原理简介
- 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 线性判别分析(LDA)- 主成分分析(PCA)
- 线性判别分析(LDA), 主成分分析(PCA)
- 采用PCA(主成分分析)或LDA(线性判别分析)的人脸识别
- 线性判别分析(LDA) 主成分分析(PCA)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 机器学习-线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学系列:线性判别分析(LDA)& 主成分分析(PCA)
- 线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)