Linear Discriminant Analysis(LDA)

2023-05-16

好久没有整理最近的一些算法了,今天趁着跑数据的过程整理一下LDA算法。该算法在很多地方都有使用:语音识别,说话人识别等等,那么今天在这里就为大家详细介绍一下,最终把matlab代码放在我的git上,有兴趣的可以去看一下,好了不多说,直接进入主题。

 

首先介绍一下LDA到底是什么?LDA是一种降维的方法,一提到降维,大家应该很熟悉PCA。那么PCA和LDA的区别是什么呢?我们简单的理解可以理解为PCA是获取那些数据能量集中的子空间,用《模式分类》中的例子:手写字母识别中,Q和O利用PCA能够发现两个字母的相似之处,却很可能把区分字母Q和O的那撇特征去掉。而LDA却不同,它也是是获取一个子空间,在这个子空间中:同类的数据会集中,不同类的数据则分散开来,所以从这个角度来看LDA更适合于分类的任务。那么上面大家对LDA有了一个整体的了解,下面我开始讲解LDA,这里会参照《模式分类》这本书,不过会穿插我的理解,方便大家一步步跟进,那么我们开始。

 

假设我们有n个d维度的样本:x1,x2,....xn,他们分别属于两个不同的类别,即其中大小为那n1的样本属于类别1,大小为n2 的样本属于类别2【假设我们只有两大类】.如果对x中的各个成分做线性组合,就会得到一个点积,结果就是一个标量:

那么全部的n个样本x1,x2,....xn就产生n个结果y1,y2,....yn。这些结果不是属于类别1就是属于类别2。从几何上说,当||w||=1的时候,那么每个yi就是把xi向着方向w的直线进行投影的结果【为什么这么说,大家可以查一下投影矩阵,看他的公式和意义】。那么根据我们上面讲过的LDA的思想,我们希望w有着以下这种功效:我们希望x经过w的映射后形成两个显著分开的聚类【这句话意味着不同类分散开,同类聚集在一起】。当我们把此LDA用作分类的时候,其实也就是需要两步:1. 确定w 2. 确定一个阀值,当低于阀值属于类别1,当高于阀值属于类别2.

 

那我们首先就来确定最佳的直线方向w,以达到最好的分类效果。以下是思路过程:

【PS:请你们自动忽略字体,我用的是草体,这绝不是乱,嗯~】

那么我们继续,把w变量引入:

这其实是一个广义特征值分解的问题,使得J最大的w必须满足:

我们左乘Sw^-1,得到:

 

因为我们只有两类,所以没有必要把Sw^-1*SB的特征值真的分解,SB*W的总是位于m1-m2的方向上,w的模的大小我们并不关心,只关心其方向,所以:

以上就是关于LDA在二分类情况下求解w的过程,关于阀值的判断我们不进行讨论。那么下面引入了新的问题:如何处理多分类的情况?

最后我把我的实现放在我的git上,并不难,主要是一个公式转代码的思想,这个很重要:https://github.com/mahuichao/MatlabWorkSpace

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linear Discriminant Analysis(LDA) 的相关文章

随机推荐

  • TensorFlow和Keras解决数据量过大内存溢出

    将上万张图片的路径一次性读到内存中 xff0c 自己实现一个分批读取函数 xff0c 在该函数中根据自己的内存情况设置读取图片 xff0c 只把这一批图片读入内存中 xff0c 然后交给模型 xff0c 模型再对这一批图片进行分批训练 xf
  • LQ-Nets: Learned Quantization for Highly Accurate and Compact Deep Neural Networks

    ECCV 2018 ABSTRACT 虽然权重和激活值的量化是深度神经网络 xff08 DNN xff09 压缩的有效方法 xff0c 并且具有很大的潜力来提高利用位操作的推理速度 xff0c 但是在量化模型和full precision模
  • 关于事件的理解

    以前的时候 xff0c 事件这个东西虽然说是经常用 xff0c 但是没有真正意义上去理解它 xff0c 为什么要用事件 xff0c 事件有什么好处 xff0c 明明可以直接用方法实现为什么还要去用事件 xff0c 说到底 xff0c 事件就
  • Maven打包常见问题

    Maven打包常见问题 1 Maven 打包时 无法将scope为system的jar文件打包进war和jar中 分析问题 通过对maven打包的生命周期进行分析 在package阶段未将scope为system的jar打包到war或者ja
  • VS2015 无法启动程序“***\\***.exe” 系统找不到指定的文件

    问题 xff1a 无法启动程序 exe 系统找不到指定的文件 解决方案 xff1a 将链接器 gt 常规 gt 输出文件中的内容手动改为 OutDir Target Name TargetExt 或者选择 lt 从父级或项目默认设置继承 g
  • VS2015 MFC 类向导 “未将对象引用设置到对象的实例”

    问题描述 xff1a MFC工程跨机器移动后 xff0c 使用类向导 xff0c 提示 34 未将对象引用设置到对象的实例 34 解决方法 xff1a 删除MFC工程中的 vs目录
  • qt 编译运行步骤

    1 先qmake 由 pro文件生成Makefile文件到构建目录 xff0c makefile文件保存了编译器和连接器的参数选项 还表述了所有源文件之间的关系 源代码文件需要的特定的包含文件 可执行文件要求包含的目标文件模 块及库等 构建
  • VS2015 插件

    Visual Assist 代码颜色 xff0c 关键字高亮 Inden Guides Mode 缩进辅助线 FeinBrace 括号跳转 Toggle Comment 快速注释 解除注释
  • VS内存泄漏定位方法

    内存泄漏检测宏定义 ifdef DEBUG define DEBUG CLIENTBLOCK new CLIENT BLOCK FILE LINE else define DEBUG CLIENTBLOCK endif DEBUG defi
  • tar: 由于前次错误,将以上次的错误状态退出

    问题描述 tar cvfz test tar gz test tar test tar gz xff1a 无法 stat 没有那个文件或目录 test rwt tar 由于前次错误 xff0c 将以上次的错误状态退出 原因分析 xff1a
  • VSCode登录Microsoft账户无效

    现象 经过上述两步 xff0c 并没有弹出登录界面 解决方法 xff1a 使用腾讯电脑管家 电脑诊所 IE浏览器出错崩溃 修复后重新执行上述两步 xff0c 可以正常登录
  • Qt munmap_chunk(): invalid pointer

    现象 xff1a 软件退出时报munmap chunk invalid pointer 产生原因 xff1a 单例了窗口采用的静态变量写法 并且把单例的窗口添加到了另一个窗口中 软件退出时 xff0c 父窗口析构了单例的窗口 Qt的对象管理
  • node.js 跨域访问

    配置 node js http server启动方式 http span class token operator span server span class token operator span p span class token
  • Linux修改系统编码方法总结

    Linux系统安装后 xff0c 发现中文显示乱码 因为系统编码为en US UTF 8 xff0c 应改为支持中文的编码 xff08 即zh CN UTF 8 xff09 检查系统编码 英文环境如下 xff1a root 64 local
  • std::cout输出十六进制数据

    std vector lt uint8 t gt data 0x11 0x22 0x33 0x99 0xff std ofstream ofs 34 test txt 34 std ios app for int i 61 0 i lt d
  • ubuntu 缺少lsusb lspci insmod等

    lsusb gt usbutils lspci gt pciutils insmod gt module init tools
  • hexo知识点

    配置环境 安装Node xff08 必须 xff09 作用 xff1a 用来生成静态页面的 到Node js 官网下载相应平台的最新版本 xff0c 一路安装即可 安装Git xff08 必须 xff09 作用 xff1a 把本地的hexo
  • 安装Ubuntu下的开发工具

    安装Ubuntu下的开发工具 安装Ubuntu下的开发工具 刚安装好的Ubuntu xff0c 还缺乏很多开发工具 这些工具都可以通过网络进行安装 如果网络不佳 xff0c 也可以使用光盘中的工具包 如果要使用光盘中的工具包 xff0c 先
  • 基于深度学习场景分类算法

    目前出现的相对流行的场景分类方法主要有以下三类 xff1a xff08 1 xff09 基于对象的场景分类 xff1a 这种分类方法以对象为识别单位 xff0c 根据场景中出现的特定对象来区分不同的场景 xff1b 基于视觉的场景分类方法大
  • Linear Discriminant Analysis(LDA)

    好久没有整理最近的一些算法了 xff0c 今天趁着跑数据的过程整理一下LDA算法 该算法在很多地方都有使用 xff1a 语音识别 xff0c 说话人识别等等 xff0c 那么今天在这里就为大家详细介绍一下 xff0c 最终把matlab代码