机器学习算法03-线性判别分析LDA
来源:互联网 发布:java实战开发 编辑:程序博客网 时间:2024/05/22 03:41
机器学习算法03-线性判别分析LDA
判别分析(Discriminant Analysis)是一种分类方法,它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类。线性判别式分析(Linear Discriminant Analysis,简称为LDA)是其中一种,也是模式识别的经典算法。LDA以Bayes判别思想为基础,当分类只有两种且总体服从多元正态分布条件下,Bayes判别与Fisher判别、距离判别是等价的。
1. LDA和PCA比较
LDA与PCA主成分分析都是常用的降维方法,二者的区别在于:
- 出发思想不同。PCA主要是从特征的协方差角度,去找到比较好的投影方式,即选择样本点投影具有最大方差的方向;而LDA则更多的是考虑了分类标签信息,寻求投影后不同类别之间数据点距离更大化以及同一类别数据点距离最小化,即选择分类性能最好的方向。
- 学习模式不同。PCA属于无监督式学习,因此大多场景下只作为数据处理过程的一部分,需要与其他算法结合使用,例如将PCA与聚类、判别分析、回归分析等组合使用;LDA是一种监督式学习方法,本身除了可以降维外,还可以进行预测应用,因此既可以组合其他模型一起使用,也可以独立使用。
- 降维后可用维度数量不同。LDA降维后最多可生成N-1维子空间(分类标签数-1),因此LDA与原始维度数量无关,只有数据标签分类数量有关;而PCA最多有n维度可用,即最大可以选择全部可用维度。
从直接可视化的角度,以二维数据降维为例,PCA和LDA的区别如下图:
上图左侧是PCA的降维思想,它所作的只是将整组数据整体映射到最方便表示这组数据的坐标轴上,映射时没有利用任何数据内部的分类信息。因此,虽然PCA后的数据在表示上更加方便(降低了维数并能最大限度的保持原有信息),但在分类上也许会变得更加困难;上图右侧是LDA的降维思想,可以看到LDA充分利用了数据的分类信息,将两组数据映射到了另外一个坐标轴上,使得数据更易区分了(在低维上就可以区分,减少了运算量)。
线性判别分析LDA算法由于其简单有效性在多个领域都得到了广泛地应用,是目前机器学习、数据挖掘领域经典且热门的一个算法;但是算法本身仍然存在一些局限性:
- 当样本数量远小于样本的特征维数,样本与样本之间的距离变大使得距离度量失效,使LDA算法中的类内、类间离散度矩阵奇异,不能得到最优的投影方向,在人脸识别领域中表现得尤为突出
- LDA不适合对非高斯分布的样本进行降维
- LDA在样本分类信息依赖方差而不是均值时,效果不好
- LDA可能过度拟合数据
2. LDA思想
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。就是将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能近,而不同类别数据的类别中心之间的距离尽可能的大。
可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
上图中国提供了两种投影方式. 从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
3. 瑞利熵
瑞利商是指这样的函数
R(A,x)=xTAxxTx
其中
瑞利商
λmin⪯xHAxxHx⪯λmax
当向量
广义瑞利商。广义瑞利商是指这样的函数
R(A,B,x)=xHAxxHBx
其中
xHBx=x′H(B−1/2)HBB−1/2x′=x′HB−1/2BB−1/2x′=x′Hx′
而分子转化为:
xHAx=x′HB−1/2AB−1/2x′
此时我们的
R(A,B,x′)=x′HB−1/2AB−1/2x′x′Hx′
利用前面的瑞利商的性质,我们可以很快的知道,
4. 二类LDA
训练数据:
我们定义
μj=1Nj∑x∈Xjx(j=0,1)
Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1)
由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量
对于我们的两个类别的中心点
argmaxwJ(w)=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w
定义”类内散度矩阵” (within-class scatter matrix)
Sw=Σ0+Σ=∑x∈X0(x−μ0)(x−u0)T+∑x∈X1(x−μ1)(x−μ1)T
定义”类间散度矩阵” (between-class scatter matrix)
Sb=(μ0−μ1)(μ0−μ1)T=∑j=01Nj(μj−μ)(μj−μ)T
这样我们的优化目标重写为:
argmaxwJ(w)=wTSbwwTSww
argminwJ=−wTSbw
s.t.wTSww=1
由拉格朗日乘子法, 可得:
利用广义瑞利商的性质,我们知道我们的
注意到对于二类的时候,S_bw
w=S_w^{−1}(μ_0−μ_1)w=S−1w(μ0−μ1)
也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向w了.
二维样本的投影的原图和结果图:
=>
5. 多类LDA
数据集
由于我们是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设我们投影到的低维空间的维度为d,对应的基向量为
此时我们的优化目标应该可以变成为:
J(W)=WTSbWWTSwW
其中
Sb=∑j=1kNj(μj−μ)(μj−μ)T
Sw=∑j=1kSwj=∑j=1k∑x∈Xj(x−μj)(x−μj)T
总体散度矩阵(total scatter matrix)
St=∑i=1m(xi−μ)(xi−μ)T=Sb+Sw
显然多分类LDA可以有多种实现方法: 使用
但是有一个问题,就是
常见的一个LDA多类优化目标函数定义为:
argmaxWJ(W)=∏diagWTSbW∏diagWTSwW
其中
J(W)=∏i=1dwTiSbwi∏i=1dwTiSwwi=∏i=1dwTiSbwiwTiSwwi
上式最右边是广义瑞利商, 最大值是矩阵
由于
6. LDA算法流程
LDA降维的流程总结
输入:D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}
输出:降维后的样本集
1) 计算类内散度矩阵
2) 计算类间散度矩阵
3) 计算矩阵
4)计算
5) 对样本集中的每一个样本特征
6) 得到输出样本集
实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
参考文章:
- http://www.cnblogs.com/pinard/p/6244265.html
- http://www.cnblogs.com/jerrylead/archive/2011/04/21/2024384.html
- 机器学习算法03-线性判别分析LDA
- 机器学习:线性判别分析LDA
- 线性判别分析LDA算法
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
- 机器学习-线性判别分析(LDA), 主成分分析(PCA)
- 机器学习之线性判别分析(LDA) 主成分分析(PCA)
- 机器学习——特征工程之线性判别分析LDA
- 【机器学习】LDA线性判别分析原理及实例
- 机器学习(30)之线性判别分析(LDA)原理详解
- 线性判别分析算法(LDA)
- 线性判别分析(LDA)算法
- LDA(线性判别分析)算法
- 机器学习笔记(VIII)线性模型(IV)线性判别分析(LDA)
- 线性判别分析(LDA)算法总结
- LDA(线性判别分析)算法入门
- 降维算法:线性判别分析LDA
- 线性判别分析(LDA)学习笔记
- leftnoteasy:机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 【android】RxJava原理简述
- 【android】synchronized和volatile
- unity黑暗之光_01
- Git从库中移除已删除大文件
- MySQL知识整理(3)一些常用命令
- 机器学习算法03-线性判别分析LDA
- 欧拉回路和欧拉路径的判断
- FTPrep: 50 pow(x, n)
- hdu 1028
- 引用概念
- 网页自动跳转代码
- Sublime插件
- 关于红米3(开发版)如何修改host文件访问谷歌
- 服务跨域以及Session保持问题