线性判别分析(LDA)基本原理及实现

线性判别分析(LDA)基本原理及实现前言在主成分分析 PCA 原理总结 机器学习 27 降维 之主成分分析 PCA 详解 中对降维算法 PCA 做了总结 这里就对另外一种经典的降维方法线性判别分析 LinearDiscri 简称 LDA 做一个总结 LDA 在模式识别领域 比如人脸识别 舰艇识别等图形图像识别领域 中有非常广泛的应用 因此我们有必要了解下它的算法原理 在学习 LDA 之前 有必要将其自然语

前言

在主成分分析(PCA)原理总结(机器学习(27)【降维】之主成分分析(PCA)详解)中对降维算法PCA做了总结。这里就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),是一种处理文档的主题模型。本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。

LDA思想

LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,如下图所示。 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

 

640?wx_fmt=png&wxfrom=5&wx_lazy=1

 

可能还是有点抽象,先看看最简单的情况。

假设有两类数据,分别为红色和蓝色,如下图所示,这些数据特征是二维的,希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。

0?wx_fmt=png

上图中提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。

 

LDA原理与流程

0?wx_fmt=png

 

0?wx_fmt=png

 

0?wx_fmt=png

 

0?wx_fmt=png

 

LDA与PCA

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

相同点

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

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

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

 

不同点

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

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

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

4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。

 

0?wx_fmt=png

 

当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:

 

0?wx_fmt=png

 

LDA小结

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

优点

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

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

 

缺点

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

2)LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。

3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。

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

该文章转载:https://blog.csdn.net/mbx8x9u/article/details/

LDA代码python实现:https://github.com/ruthy-wei/MachineLearning/tree/master/LDA

LDA详解:http://sebastianraschka.com/Articles/2014_python_lda.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200982.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:11
下一篇 2026年3月20日 上午10:12


相关推荐

  • goland2022.01 激活码_最新在线免费激活2022.01.29

    (goland2022.01 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    389
  • Docker安装配置教程[通俗易懂]

    Docker安装配置教程[通俗易懂]之前docker很久就写了笔记了。后面因为家里有事,耽搁了一年。现在把这部分笔记重新上传一下。大家看看。Docker要求:lunix内核,要求3.8以上centos7Docker是一个进程,一启动就两个进程,一个服务,一个守护进程。占用资源就非常少,启动速度非常快,1s。一台机器上vm,3到10个实例。docker100到10000。1.核心概念:1)镜像images,事先做好一…

    2022年10月10日
    6
  • Python Matplotlib 画心形曲线[通俗易懂]

    Python Matplotlib 画心形曲线[通俗易懂]https://blog.csdn.net/sinat_34328764/article/details/80246139

    2022年10月10日
    4
  • 深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)

    深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)1.简介深度学习(DeepLearning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。模型压缩算法能够有效降低参数冗余,从而减少存储占用、通信带宽和计算复杂度,有助于深度学习的应用部署,具体可划分为如下几种方法(后续重点介绍剪枝与量化):线性或非线性量化:1/2bits,int8和fp16等; 结构或…

    2026年4月15日
    6
  • Fragstats4.2之计算景观格局指数(一)

    Fragstats4.2之计算景观格局指数(一)利用 EXCEL 表格计算景观格局指数先放一放 后续会更新 现在给大家奉上 Fragstats4 2 专业软件如何计算 其实也是方便快捷 首先给大家送上软件 http www umass edu landeco research fragstats downloads fragstats downloads htmlFragstat 2 可以和 ArcGIS10 0 及以下版本进行数据互通 可以直接借助 ArcGIS10 的 SpatialAnaly 模块进行 Grid 数据的读取 需要 10 0 一下 GIS 版本可以

    2026年3月18日
    1
  • pkpm卸载后无法安装_正在安装的软件删不掉

    pkpm卸载后无法安装_正在安装的软件删不掉1.卸载原有旧的版本:npmuninstall-gcnpm–registry=https://registry.npm.taobao.org2.注册淘宝模块镜像:npmsetregistryhttps://registry.npm.taobao.org3.node-gyp编译依赖的node源码镜像npmsetdisturlhttps://npm.taobao.org/dist4.清空缓存npmcacheclean–force5.重

    2022年8月31日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号