• 线性差别分析LDA


    LDA原理

    LDA思想

    这里的LDA是指Linear Discriminant Analysis,简称LDA,全称线性判别分析。要与自然语言处理领域的LDA(Latent Dirichlet Allocation)隐含狄利克雷分布区分开来。

    LDA是一种监督学习降维技术,它的数据集的每个样本是有类别输出的。而PCA是不考虑样本类别输出的无监督降维技术。

    核心思想是:投影后类内方差最小,类间方差最大。理解为:数据在低维度上进行投影,投影后希望每一类别数据的投影点尽可能接近,而不同类别数据的类别中心之间距离尽可能远。

    瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)

    瑞利商的定义(R(A,x))如下

    [R(A,X)=frac{x^HAx}{x^Hx} ]

    其中x为非零向量,而A为(n imes n)的Hermitan矩阵,所谓Hermitan矩阵就是满足共轭转置和自相等的矩阵,即(A^H=A)。如果A是实数阵,则满足(A^T=A)的矩阵即为Hermitan矩阵。

    瑞利商(R(A,x))有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小特征值,也就是满足如下:

    [lambda_{min}lefrac{x^HAx}{x^Hx}lelambda_{max} ]

    当x是正标准正交基时,即满足(x^Hx=1)时瑞利商退化为(R(A,x)=x^HAx)

    广义瑞利商定义如下:

    [R(A,x)=frac{x^HAx}{x^HBx} ]

    其中(x)为非零向量,而A,B为(n imes n)的Hermitan矩阵,B为正定矩阵。它的最大值和最小值是什么?我们令(x=B^{-frac{1}{2}}x'),则上式分母转化为

    [x^HBx=x^{'H}(B^{-frac{1}{2}})^HBB^{-frac{1}{2}}x'=x^{'H}B^{-frac{1}{2}}BB^{-frac{1}{2}}x'=x^{'H}x^{'} ]

    而其分子转化为

    [x^HAx=x^{'H}B^{-frac{1}{2}}AB^{-frac{1}{2}}x^{'} ]

    此时我们的(R(A,B,x))转化为(R(A,B,x'))

    [R(A,B,x')=frac{x^{'H}B^{-frac{1}{2}}AB^{-frac{1}{2}}x^{'}}{x^{'H}x^{'}} ]

    利用瑞利商的性质可知,(R(A,B,x'))的最大值为矩阵(B^{-frac{1}{2}}AB^{-frac{1}{2}})的最大特征值或者说是矩阵(B^{-1}A)的最大特征值,而最小值为矩阵(B^{-1}A)的最小特征值。

    二类LDA

    LDA的目标是:中心点尽可能大,即每类均值的距离尽可能大;类间距离尽可能小,即协方差尽可能小。

    最后推导为瑞利商和广义瑞利商。

    假设数据集(D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}),其中任意样本(x_i)为n维重见天日,(y_iin {{0,1}})。我们定义(N_j(j=0,1))为第j类样本的个数,(X_j(j=0,1))为第j类样本的集合,而(mu_j(j=0,1))为第j类样本的均值向量定义(Sigma_j(j=0,1))为第j类样本的协方差矩阵(缺少分母部分)。

    (mu_j)表示为

    [mu_j=frac{1}{N}sumlimits_{xin X_j}(j=0,1) ]

    (Sigma_j)表示为

    [Sigma_j=sumlimits_{xin X_j}(x-mu_j)(x-mu_j)^T(j=0,1) ]

    由于是两类数据,我们将其投影到一条直线上即可。假设我们的投影直线是向量(w_j),则对任意一个样本(x_i),它在直线(w)的投影为(w^Tx_i),对于我们两个类别中心点(mu_0,mu_1),在直线(w)的投影为(w^Tmu_0)(w^Tmu_1)由于LDA需要让不同类别的数据中心之间的距离尽可能大,也就是我们需要最大化(lVert w^Tmu_0-w^Tmu_1 Vert_2^2),同时,我们希望同一种类数据的投影点尽可能的接近,也就是要同类样本投影点的协方差(w^TSigma_0w)(w^TSigma_1w)尽可能的小,即最小化(w^TSigma_0w+w^TSigma_1w)综上所述,我们的优化目标表示为:

    [underbrace{argmax}_w J(w)=frac{lVert w^Tmu_0-w^Tmu_1 Vert_2^2}{w^TSigma_0w+w^TSigma_1w}=frac{w^T(mu_0-mu_1)(mu_0-mu_1)^Tw}{w^T(Sigma_0+Sigma_1)w} ]

    我们一般定义类间散度矩阵(S_w)如下

    [S_w=Sigma_0+Sigma_1=sumlimits_{xin X_0}(x-mu_0)(x-mu_0)^T+sumlimits_{xin X_1}(x-mu_1)(x-mu_1)^T ]

    定义类间散度矩阵(S_b)如下

    [S_b=(mu_0-mu_1)(mu_0-mu_1)^T ]

    这样,重写优化目标如下

    [underbrace{argmax}_w J(w)=frac{w^TS_bw}{w^TS_ww} ]

    这就是广义瑞利商!由广义瑞利商的性质可知,我们的(J(w'))最大值为矩阵(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的最大特征值,而对应的(w')(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的最大特征值对应的向量!而(S_w^{-1}S_b)的特征值和(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的特征值相同,(S_w^{-1}S_b)的特征向量(w)(S_w^{-frac{1}{2}}S_bS_w^{-frac{1}{2}})的特征向量(w')满足(w=s_w^{-frac{1}{2}}w')的关系。

    注意到,二分类时,(S_bw)的方向恒为(mu_0-mu_1),令(S_bw=lambda(mu_0-mu_1)),将其带入((S_w^{-1}S_b)w=lambda w),可以得到(w=S_w^{-1}(mu_0-mu_1))也就是说只要求出原始二类样本的均值和方差,就可以确定最佳投影方向了

    多类LDA

    同理(略)

    LDA算法流程

    输入:数据集(D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}),其中任意样本(x_i)为n维向量,(y_iin{C_1,C_2,...,C_k})降维到的维度d

    输出:降给后的样本集(D')

    1. 计算类内散度矩阵(S_w)
    2. 计算类间散度矩阵(S_b)
    3. 计算矩阵(S_w^{-1}S_b)
    4. 计算(S_w^{-1}S_b)的最大特征值对应的d个特征向量((w_1,w_2,...,w_d)),得到投影矩阵W
    5. 对样本集中的每一个样本特征x,转化为新的样本(z_i=W^Tx_i)
    6. 得到输出样本集(D'={(z_1,y_1),(z_2,y_2),...,(z_m,y_m)})

    以上就是LDA进行降维的算法流程,实际上LDA除了可以用于降维外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率函数,计算它属于这个类别的概率,最大概率对应的类别即为预测类别。

    LDA VS PCA

    LDA与PCA都可以用于降维

    相同点:

    1. 均可降维
    2. 均使用了矩阵分解思想
    3. 都假设数据符合高斯分布

    不同点:

    1. LDA是有监督的降维,PCA是无监督的降维
    2. LDA降维最多降到类别数k-1维,而PCA无此限制
    3. LDA除了降维,还可以用于分类
    4. LDA选择分类性能最好的投影方向,而PCA选择样本投影具有最大方差的方向

    LDA算法总结

    LDA优点:

    1. 降维过程可以使用先验知识,而PCA这种无监督学习无法使用先验知识
    2. LDA依赖均值而不是方差的时候,比PCA算法较优

    LDA缺点:

    1. LDA不适合对非高斯分布进行降维
    2. 最多降维到类别数k-1维
    3. LDA依赖方差而不是均值的时候,降维效果不好
    4. LDA可能过拟合

    sklearn中LDA使用

    类库

    from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
    

    参数

    1. solover:求LDA超平面特征矩阵使用的方法
    2. shrinkage:正则化参数
    3. priors:类别权重
    4. n_componets:降到的维数

    实例

    from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
    
    lda = LinearDiscriminantAnalysis(n_components=2)
    lda.fit(x)
    

    如果数据是有标签是,优先使用LDA。

    PCA有助于去噪声。

  • 相关阅读:
    16 pymysql模块的使用
    15 可视化工具 Navicat的简单使用
    14 补充 MySQL的创建用户和授权
    13 多表查询
    linux常用查看文件或日志命令
    linux查找大文件命令
    linux测试环境维护之磁盘空间维护
    linux配置IP访问权限
    通过pytty工具代理连接数据库mysql(绕开数据库白名单限制)
    redis安装详解
  • 原文地址:https://www.cnblogs.com/guesswhy/p/12882838.html
Copyright © 2020-2023  润新知