最新公告
  • 欢迎光临数据科学与编程,我们是数据学科学兴趣交流小组立即加入我们
  • LDA线性判别分析

          线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的线性分类方法。注意机器学习中还有一种用于NLP主题模型建模的潜在狄利克雷分布(Latent Dirichlet Allocation)也简称为LDA,大家在学习的时候注意区分。不同于上一讲谈到的PCA降维使用最大化方差的思想,LDA的基本思想是将数据投影到低维空间后,使得同一类数据尽可能接近,不同类数据尽可能疏远。所以,LDA是一种有监督的线性分类算法。

    LDA原理与推导

    下图描述了PCA和LDA直观上的区别。

    并代入到可得:

    考虑到矩阵数值解的稳定性,我们可以对其进行奇异值分解,即:

    最后求其逆即可得到。

    根据上述推导,我们可以整理LDA完整的算法流程为:

    • 对数据按类别分组
    • 分别计算每组样本的均值和协方差
    • 计算类间散度矩阵
    • 计算均值差
    • SVD方法计算类间散度矩阵的逆
    • 根据计算。
    • 计算投影后的数据点

    读者还可以自行考虑将LDA推广到多分类情况,这里不再展开推导。

    LDA基本实现

       按照前述LDA算法流程,我们可以给基于numpy来实现一个简单的LDA模型。基本关     键点包括计算分组均值与协方差、类间散度矩阵和SVD分解等。具体实现过程如下代     码所示:


    本文只给出二分类的LDA的推导和基本实现,读者可自行将其推广到多分类的情形,这里不做过多展开。sklearn中为LDA算法提供了sklearn.lda.LDA接口可供调用,实际应用时直接调用该接口即可。

    参考资料:

    周志华 机器学习 


    本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
    数据科学与编程 » LDA线性判别分析

    发表评论

    • 52会员总数(位)
    • 320资源总数(个)
    • 25本周发布(个)
    • 3 今日发布(个)
    • 333稳定运行(天)

    提供最优质的博文资源集合

    立即阅览 了解详情