• 机器学习: Linear Discriminant Analysis 线性判别分析


    Linear discriminant analysis (LDA) 线性判别分析也是机器学习中常用的一种降维算法,与 PCA 相比,
    LDA 是属于supervised 的一种降维算法。PCA考虑的是整个数据集在高维空间的分散性,PCA降维之后依然要让数据在低维空间尽可能地分散。而LDA考虑的是类与类之间的差别(用距离来衡量)。

    我们考虑两类情况下的LDA,
    给定一个训练集 D={xiRd},i=1,2,...N, 假设其中有 n1 个属于第一类 c1n2 个属于第二类c2N=n1+n2, LDA 希望可以找到一个投影关系,使得原来的特征向量 xi 投影到低维空间之后,类间的距离尽可能地大,而类内距离尽可能地小。

    我们可以计算每一类的均值向量:

    u1=1n1xc1xu2=1n2xc2x

    假设投影为 w,投影后为 y, 那么 y=wTx, 我们也可以求出投影后的均值:

    v1=1n1yc1y=1n1xc1wTx=wTu1

    v2=1n2yc2y=1n2xc2wTx=wTu2

    那么,我们可以设立如下的目标函数:

    J=|v1v2|=|wTu1wTu2|

    上面的目标函数,保证了映射之后类间距离尽可能大,但是无法保证类内距离尽可能小,为了让类内距离尽可能小,我们可以进一步定义:

    s21=yc1(yv1)2
    s22=yc2(yv2)2

    s21,s22 可以用来度量映射后每一类与类中心的分散程度。所以,最终的目标函数是:

    J=|v1v2|2s21+s22

    我们可以定义投影前的向量 x 与类中心的分散程度:

    Si=xci(xui)(xui)T

    SW=S1+S2

    我们可以看到:

    s2i=yci(yvi)2=xci(wTxwTui)2=wTSiw

    s21+s22=wTSWw

    同样的,我们有:

    (v1v2)2=(wTu1wTu2)2=wT(u1u2)(u1u2)Tw=wTSBw

    SB=(u1u2)(u1u2)T

    所以最终的目标函数是:

    J(w)=wTSBwwTSWw

    最终得到的投影w:

    w=argmax[wTSBwwTSWw]=S1W(u1u2)

    对于多类的LDA, 我们不能简单地将原来的向量 x 投影到一个标量y,我们需要投影到一个低维的向量 y 上。一个有C类的训练集 D={xRd} 含有N 个样本, N=ni. 我们需要找到一个投影矩阵W, 使得 y=WTx

    我们可以先定义

    Sw=i=1cSiSi=xci(xui)(xui)T

    SB=i=1cNi(uiu)(uiu)Tu=1Nx

    那么目标函数可以写成:

    J(W)=|WTSBW||WTSWW|

    最后的投影矩阵可以表示为: W=[w1,w2,...wk], 其中 wi 满足如下关系:

    SBwi=λiSWwiS1WSBwi=λiwi

    wi 是矩阵 S1WSB 的特征向量, 所以简单来说,可以先对矩阵 S1WSB 做特征值分解,然后取前 k 个大的特征值所对应的特征向量,组成投影矩阵。但是由于 S_{B} 的秩不会超过 c1,所以 k 最大也就是 c1,取前面k 个特征向量组成投影矩阵。对于两类的情况, c=2, k=1, 所以两类的情况下,LDA投影得到的是一个标量。

  • 相关阅读:
    Ubuntu升级软件和ubuntu升级系统的命令
    ASP 中如何根据数据库中取出的值来判定 checkbox或radio 的状态是否为选中
    C# 根据年、月、周、星期获得日期等
    鼠标右击事件
    【原创】VB利用堆栈实现算术表达式计算
    【算法】VB6实现哈夫曼编码生成的类
    【算法】VB 24点计算
    【算法】VB实现后缀表达式转中缀表达式
    C#操作Excel替换关键字 Johan
    C#递归遍历文件夹下的文件 Johan
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412498.html
Copyright © 2020-2023  润新知