美文网首页机器学习
降维算法二:LDA(Linear Discriminant An

降维算法二:LDA(Linear Discriminant An

作者: 尼小摩 | 来源:发表于2018-01-30 11:42 被阅读70次

    前言

    学习分类算法,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了。

    谈到LDA,就不得不谈谈PCA,PCA是一个和LDA非常相关的算法,从推导、求解、到算法最终的结果,都有着相当的相似。

    本次的内容主要是以推导数学公式为主,都是从算法的物理意义出发,然后一步一步最终推导到最终的式子,LDA和PCA最终的表现都是解一个矩阵特征值的问题,但是理解了如何推导,才能更深刻的理解其中的含义。本次内容要求读者有一些基本的线性代数基础,比如说特征值、特征向量的概念,空间投影,点乘等的一些基本知识等。除此之外的其他公式、我都尽量讲得更简单清楚。

    LDA

    LDA的全称是Linear Discriminant Analysis(线性判别分析),是一种supervised learning。有些资料上也称为是Fisher’s Linear Discriminant,因为它被Ronald Fisher发明自1936年,Discriminant这次词我个人的理解是,一个模型,不需要去通过概率的方法来训练、预测数据,比如说各种贝叶斯方法,就需要获取数据的先验、后验概率等等。LDA是在目前机器学习、数据挖掘领域经典且热门的一个算法,据我所知,百度的商务搜索部里面就用了不少这方面的算法。

    LDA的原理是,将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近。要说明白LDA,首先得弄明白线性分类器(Linear Classifier):因为LDA是一种线性分类器。对于K-分类的一个分类问题,会有K个线性函数:


    当满足条件:对于所有的j,都有Yk > Yj,的时候,我们就说x属于类别k。对于每一个分类,都有一个公式去算一个分值,在所有的公式得到的分值中,找一个最大的,就是所属的分类了。

    上式实际上就是一种投影,是将一个高维的点投影到一条高维的直线上,LDA最求的目标是,给出一个标注了类别的数据集,投影到了一条直线之后,能够使得点尽量的按类别区分开,当k=2即二分类问题的时候,如下图所示:


    红色的方形的点为0类的原始点、蓝色的方形点为1类的原始点,经过原点的那条线就是投影的直线,从图上可以清楚的看到,红色的点和蓝色的点被原点明显的分开了,这个数据只是随便画的,如果在高维的情况下,看起来会更好一点。下面我来推导一下二分类LDA问题的公式:
    假设用来区分二分类的直线(投影函数)为:

    LDA分类的一个目标是使得不同类别之间的距离越远越好,同一类别之中的距离越近越好,所以我们需要定义几个关键的值。
    类别i的原始中心点为:(Di表示属于类别i的点)

    类别i投影后的中心点为:


    衡量类别i投影后,类别点之间的分散程度(方差)为:

    最终我们可以得到一个下面的公式,表示LDA投影到w后的损失函数:

    分类的目标是,使得类别内的点距离越近越好(集中),类别间的点越远越好。分母表示每一个类别内的方差之和,方差越大表示一个类别内的点越分散,分子为两个类别各自的中心点的距离的平方,我们最大化J(w)就可以求出最优的w了。想要求出最优的w,可以使用拉格朗日乘子法,但是现在我们得到的J(w)里面,w是不能被单独提出来的,我们就得想办法将w单独提出来。
    我们定义一个投影前的各类别分散程度的矩阵,这个矩阵看起来有一点麻烦,其实意思是,如果某一个分类的输入点集Di里面的点距离这个分类的中心店mi越近,则Si里面元素的值就越小,如果分类的点都紧紧地围绕着mi,则Si里面的元素值越更接近0.


    带入Si,将J(w)分母化为:

    同样的将J(w)分子化为:


    这样损失函数可以化成下面的形式:

    我们希望分母越小越好,分子越大越好
    分母小,则每个类内部数据点比较聚集;
    分子大,则两个类别的距离较远。
    所以需要找出一个 W 使 J(W) 的值最大。

    这样就可以用最喜欢的拉格朗日乘子法了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,我们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧,在下面将说的PCA里面也会用到,如果忘记了,请复习一下高数),并作为拉格朗日乘子法的限制条件,带入得到:

    这样的式子就是一个求特征值的问题了。
    对于N(N>2)分类的问题,我就直接写出下面的结论了:


    和 PCA 区别

    二者都有降维的作用。

    1. 左边是PCA,属于无监督方法,当数据没有标签时可以用它。
      右边是 LDA,属于监督方法。考虑了数据的分类信息,这样数据在低维空间上就可以分类了,减少了很多的运算量。

    2. PCA 主要是从特征的协方差角度考虑,追求的是在降维之后能够最大化保持数据的内在信息。
      它不考虑分类信息,因此,降低维度后,信息损失降到最低,但分类上可能会变得更加困难。
      LDA 追求的是降维后的数据点尽可能容易被区分。
      降维后的样本数据在新的维度空间有最大的类间距离和最小的类内方差,数据在低维空间有最佳的可分离性。

    3. PCA 后的维度数目是和数据维度相关的,原始数据是 n 维,那么 PCA 后维度为 1、2~n 维。
      LDA 后的维度数目是和类别的个数相关的,原始数据是 n 维,一共有 C 个类别,那么 LDA 后维度为 1、2~C-1 维。

    4. PCA 投影的坐标系都是正交的
      LDA 关注分类能力,不保证投影到的坐标系是正交的。

    相关文章

      网友评论

      • 371f1e38c88b:前面写的通俗易懂,后面有点看不懂了,快结束时直接写下面结论:SB中怎么突然冒出个ni。
        再就是你最后说转化为求特征值问题,我看线性代数书上说,特征向量x要一样才能求特征值,比如Ax=λx,这里x是一样的,SBw=λSWw好像特征向量不同啊。求楼主大佬解释下,万分感谢!!!

      本文标题:降维算法二:LDA(Linear Discriminant An

      本文链接:https://www.haomeiwen.com/subject/tgnzixtx.html