zoukankan      html  css  js  c++  java
  • 【ML-16】线性判别分析(LDA)

    目录

    1. 简单介绍
    2. LDA的相关说明
    3. 基本思想-2个类别
    4. 计算过程-2个类别
    5. PCA VS LDA
    6. 总结

    一、简单介绍

    定义:Linear Discriminant Analysis是Ronald Fisher于1936年提出的方法,因此又叫做Fisher's linear discriminant。是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。

    基本思想:将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性,个人觉得有点类似SVM思路,但是作用不同。

    作用:LDA是一种降维的方法。

    与PCA区别:PCA主要是从特征的协方差角度,去找到比较好的投影方式,比如一般找方差尽量分散的。LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。前者是无监督,后者是监督算法。

    用《模式分类》中的例子:手写字母识别中,Q和O利用PCA能够发现两个字母的相似之处,却很可能把区分字母Q和O的那撇特征去掉。而LDA却不同,它也是是获取一个子空间,在这个子空间中:同类的数据会集中,不同类的数据则分散开来,所以从这个角度来看LDA更适合于分类的任务。

    再比如:一篇文档中含有"learn"和"study"的问题,使用PCA后,也许可以将这两个特征合并为一个,降了维度。但假设我们的类别标签y是判断这篇文章的topic是不是有关学习方面的。那么这两个特征对y几乎没什么影响,完全可以去除。

    图例显示区别

    二、LDA的相关说明

    2.1 降维后的维度

     PCA降维是直接和数据维度相关的,比如原始数据是n维的,那么PCA后,可以任意选取1维、2维,一直到n维都行(当然是对应特征值大的那些)。

    LDA降维是直接和类别的个数相关的,与数据本身的维度没关系,比如原始数据是n维的,一共有C个类别,那么LDA降维之后,一般就是1维,2维到C-1维进行选择(当然对应的特征值也是最大的一些),举个例子,假设图象分类,两个类别正例反例,每个图象10000维特征,那么LDA之后,就只有1维特征,并且这维特征的分类能力最好。 PS:对于很多两类分类的情况,LDA之后就剩下1维,找到分类效果最好的一个阈值貌似就可以了。

    2.2 投影的坐标系是否正交

    PCA投影的坐标系都是正交的,而LDA根据类别的标注,关注分类能力,因此不保证投影到的坐标系是正交的(一般都不正交)。

    三、基本思想-2个类别

    我们将这个最佳的向量称为w(d维),那么样例x(d维)到w上的投影可以用下式来计算:

    这里得到的y值不是0/1值,而是x投影到直线上的点到原点的距离。

    右图就是使用了LDA的方法进行处理的。这条分界线如何能找到呢,主要是找到这个最佳的w。

    3.1 使得均值尽量拉大(也即是类间增大)

    首先我们寻找每类样例的均值(中心点),这里i只有两个

    由于x到w投影后的样本点均值为

    为了使得新的均值最大化,我们定义目标函数,使得它尽量大

    是不是这个越大越好呢?如下图所示:样本点均匀分布在椭圆里,投影到横轴x1上时能够获得更大的中心点间距J(w),但是由于有重叠,x1不能分离样本点。投影到纵轴x2上,虽然J(w)较小,但是能够分离样本点。因此我们还需要考虑样本点之间的方差,方差越大,样本点越难以分离。

    3.2 减少类内方差,使得类内间距更小

     我们使用另外一个度量值,称作散列值(scatter),对投影后的类求散列值,如下

    这里的y是投影后的值,散列值的几何意义是样本点的密集程度,值越大,越分散,反之,越集中。

    3.3 最终目标函数

    而我们想要的投影后的样本点的样子是:不同类别的样本点越分开越好,同类的越聚集越好,也就是均值差越大越好,散列值越小越好。正好,我们可以使用J(w)和S来度量,最终的度量公式是

    四、计算过程-2个类别

    分子部分:

    分母部分:

    定义上式中间那部分

    因为是2类的问题,我们直接在定义:

    上面的Sw称为Within-class scatter matrix。则第一个式子变形如下:

    SB称为Between-class scatter,是两个向量的外积,虽然是个矩阵,但秩为1。

    那么J(w)最终可以表示为

    在我们求导之前,需要对分母进行归一化,因为不做归一的话,w扩大任何倍,都成立,我们就无法确定w。这点也和SVM计算异曲同工。令分母为1,借用拉格朗日乘子后,求导

    若Sw可逆,则得到下式:

    这个公式称为Fisher linear discrimination。

    由于对w扩大缩小任何倍不影响结果,因此可以约去两边的未知常数λ,λw,得到:

    至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向w。

    上述结论虽然来自2维,但对于多维也是成立的。大特征值所对应的特征向量分割性能最好。由于

    不一定是对称阵,因此得到的K个特征向量不一定正交,这也是与PCA不同的地方。

    五、PCA VS LDA

    LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。

    相同点:

    1)两者均可以对数据进行降维。

    2)两者在降维时均使用了矩阵特征分解的思想。

    3)两者都假设数据符合高斯分布。

    不同点:

    1)LDA是有监督的降维方法,而PCA是无监督的降维方法

    2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。

    3)LDA除了可以用于降维,还可以用于分类。

    4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

    这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。

    六、总结

    使用LDA的一些限制:

    1. LDA至多可生成C-1维子空间。C为类别数。LDA降维后的维度区间在[1,C-1],与原始特征数n无关,对于二值分类,最多投影到1维。
    2. LDA不适合对非高斯分布样本进行降维。

    上图中红色区域表示一类样本,蓝色区域表示另一类,由于是2类,所以最多投影到1维上。不管在直线上怎么投影,都难使红色点和蓝色点内部凝聚,类间分离。当然有不少论文提出Kernel LDA解决。这也和SVM的Kernel类似。

    LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在我们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。

    下面总结下LDA算法的优缺点。

    LDA算法的主要优点有:

    1)在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。

    2)LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。

    LDA算法的主要缺点有:

    1)LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。

    2)LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。

    4)LDA可能过度拟合数据。

    主要参照:

    https://blog.csdn.net/antkillerfarm/article/details/80880221

    https://www.cnblogs.com/jerrylead/archive/2011/04/21/2024384.html

    https://blog.csdn.net/antkillerfarm/article/details/80880221

    附件:手写公式

  • 相关阅读:
    Future和Callable的使用
    Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 1:解码文件头
    jQuery 表格排序插件 Tablesorter 使用
    jQuery 表单验证插件 jQuery Validation Engine 使用
    jQuery 文本编辑器插件 HtmlBox 使用
    开源视频质量评价工具: IQA
    hql 语法与详细解释
    MYSQL常用命令
    C++发送HTTP请求获取网页HTML代码
    编译运行Red5源代码
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/12708421.html
Copyright © 2011-2022 走看看