【机器学习】LDA算法原理

news2024/11/18 9:44:36

问题

线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化。

LDA的思想

● LDA是一种线性的、有监督的降维方法,即每个样本都有对应的类别标签(这点和PCA不同)。

● 主要思想:给定训练样本集,设法将样本投影到一条直线上,使得同类的样本的投影尽可能的接近、异类样本的投影尽可能地远离(即最小化类内距离和最大化类间距离)。

下面分别通过《机器学习》和《百面机器学习》两本书中的图片先来直观地理解一下LDA的思想。

LDA2.png

● 为什么要将最大化类间距离和最小化类内距离同时作为优化目标呢?

先看上面第二张图的左图(a),对于两个类别,只采用了最大化类间距离,其结果中两类样本会有少许重叠;而对于右图(b),同时最大化类间距离和最小化类内距离,可见分类效果更好,同类样本的投影分布更加集中了。当然,对于二维的数据,可以采用将样本投影到直线上的方式,对于高维的数据,则是投影到一个低维的超平面上,这应该很好理解。

LDA算法优化目标

由上面的介绍我们知道,LDA算法的思想就是最大化类间距离和最小化类内距离,其优化目标就很直观了,那怎么用数学方式来表示呢?要解决这个问题,就得先看看怎么描述类间距离和类内距离。

● 类间距离(以二分类为示例)

假设有 C 1 C_{1} C1 C 2 C_{2} C2两类样本,其均值分别为 μ 1 = 1 N ∑ x ∈ C 1 x \mu_{1}=\frac{1}{N}\sum_{x\in C_{1}}x μ1=N1xC1x μ 2 = 1 N ∑ x ∈ C 2 x \mu_{2}=\frac{1}{N}\sum_{x\in C_{2}}x μ2=N1xC2x 。很显然,要使得两类样本类间距离最大,则 μ 1 \mu_{1} μ1 μ 2 \mu_{2} μ2 的距离应尽可能地大,则类间距离可描述为
∣ ∣ ω T μ 0 − ω T μ 1 ∣ ∣ 2 2 ,   其中, ω 为投影方向 ||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2},\ \ 其中,\omega为投影方向 ∣∣ωTμ0ωTμ122,  其中,ω为投影方向
● 类内距离

要使得样本在同类中距离最小,也就是最小化同类样本的方差,假设分别用 D 1 D_{1} D1 D 2 D_{2} D2 表示两类样本的投影方差,则有:
D 1 = ∑ x ∈ C 1 ( ω T x − ω T μ 1 ) 2 = ∑ x ∈ C 1 ω T ( x − μ 1 ) ( x − μ 1 ) T ω D 2 = ∑ x ∈ C 2 ( ω T x − ω T μ 2 ) 2 = ∑ x ∈ C 2 ω T ( x − μ 2 ) ( x − μ 2 ) T ω D_{1} = \sum_{x\in C_{1}}(\omega^{T}x-\omega^{T}\mu_{1})^{2}=\sum_{x\in C_{1}}\omega^{T}(x-\mu_{1})(x-\mu_{1})^{T}\omega \\ D_{2} = \sum_{x\in C_{2}}(\omega^{T}x-\omega^{T}\mu_{2})^{2}=\sum_{x\in C_{2}}\omega^{T}(x-\mu_{2})(x-\mu_{2})^{T}\omega D1=xC1(ωTxωTμ1)2=xC1ωT(xμ1)(xμ1)TωD2=xC2(ωTxωTμ2)2=xC2ωT(xμ2)(xμ2)Tω
因此,要使得类内距离最小,就是要最小化 D 1 + D 2 D_{1}+D_{2} D1+D2

● 优化目标

由上面分析,最大化类间距离和最小化类内距离,因此可以得到最大化目标:
J ( ω ) = ∣ ∣ ω T μ 0 − ω T μ 1 ∣ ∣ 2 2 D 1 + D 2 = ∣ ∣ ω T μ 0 − ω T μ 1 ∣ ∣ 2 2 ∑ x ∈ C i ω T ( x − μ i ) ( x − μ i ) T ω J(\omega) = \frac{||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2}}{D_{1}+D_{2}}\\\qquad\qquad\qquad\quad =\frac{||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2}}{\sum_{x\in C_{i}}\omega^{T}(x-\mu_{i})(x-\mu_{i})^{T}\omega} J(ω)=D1+D2∣∣ωTμ0ωTμ122=xCiωT(xμi)(xμi)Tω∣∣ωTμ0ωTμ122
为了化简上面公式,给出几个定义:

● 类间散度矩阵:
S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T S_{b}=(\mu_{1}-\mu_{2})(\mu_{1}-\mu_{2})^{T} Sb=(μ1μ2)(μ1μ2)T
● 类内散度矩阵:
S ω = Σ 1 + Σ 2 = ∑ x ∈ C 1 ( x − μ 1 ) ( x − μ 1 ) T + ∑ x ∈ C 2 ( x − μ 2 ) ( x − μ 2 ) T S_{\omega}=\Sigma_{1}+\Sigma_{2}=\sum_{x\in C_{1}}(x-\mu_{1})(x-\mu_{1})^{T}+\sum_{x\in C_{2}}(x-\mu_{2})(x-\mu_{2})^{T} Sω=Σ1+Σ2=xC1(xμ1)(xμ1)T+xC2(xμ2)(xμ2)T
因此最大化目标可以简写为:
J ( ω ) = ω T S b ω ω T S ω ω J(\omega) = \frac{\omega^{T}S_{b}\omega}{\omega^{T}S_{\omega}\omega} J(ω)=ωTSωωωTSbω

这是一个广义瑞利商,可以对矩阵进行标准化操作(具体证明就不展开啦),因此,通过标准化后总可以得到 ω T S ω ω = 1 \omega^{T}S_{\omega}\omega=1 ωTSωω=1,又由于上面优化目标函数分子分母都是二次项,其解与 ω \omega ω 的长度无关,只与方向有关,因此上面优化目标等价于以下最小化目标:

转化为最小化目标:
m i n ω − ω T S b ω s . t . ω T S ω ω = 1 \underset{\omega}{min}\quad-\omega^{T}S_{b}\omega \\ s.t. \quad \omega^{T}S_{\omega}\omega=1 ωminωTSbωs.t.ωTSωω=1
由拉格朗日法,上式可得:
S b ω = λ S ω ω 即有, S ω − 1 S b ω = λ ω S_{b}\omega=\lambda S_{\omega}\omega \\ 即有,S_{\omega}^{-1}S_{b}\omega=\lambda \omega Sbω=λSωω即有,Sω1Sbω=λω
至此,我们的优化目标就转化成了求矩阵 S ω − 1 S b S_{\omega}^{-1}S_{b} Sω1Sb 的特征值,而投影方向就是这个特征值对应的特征向量

由于 ( μ 1 − μ 2 ) T ω (\mu_{1}-\mu_{2})^{T}\omega (μ1μ2)Tω 是个标量(因为 μ 1 − μ 2 \mu_{1}-\mu_{2} μ1μ2 ω \omega ω 同向时才能保证类间距离最大),

所以,对于 S b ω = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T ω S_{b}\omega=(\mu_{1}-\mu_{2})(\mu_{1}-\mu_{2})^{T}\omega Sbω=(μ1μ2)(μ1μ2)Tω 而言,可以看出 S b ω S_{b}\omega Sbω 始终与 ( μ 1 − μ 2 ) (\mu_{1}-\mu_{2}) (μ1μ2) 的方向一致

因此,如果只考虑 ω \omega ω 的长度而不考虑方向,则由:
S ω − 1 S b ω = λ ω = > ω = S ω − 1 ( μ 1 − μ 2 ) S_{\omega}^{-1}S_{b}\omega=\lambda \omega \qquad => \qquad \omega=S_{\omega}^{-1}(\mu_{1}-\mu_{2}) Sω1Sbω=λω=>ω=Sω1(μ1μ2)
也就是说,我们只需求出样本的均值和类内的散度矩阵(即类内方差),即可求出投影方向。

LDA算法流程(推广至高维)

1.计算每类样本的均值向量 μ i \mu_{i} μi

2.计算类间散度矩阵 S ω S_{\omega} Sω 和类内散度矩阵 S b S_{b} Sb

3.求矩阵 S ω − 1 S b S_{\omega}^{-1}S_{b} Sω1Sb 的特征值即对应的特征向量,从大到小排序。

4.将特征值由大到小排列,取出前 k 个特征值对应的特征向量。

5.将 n 维样本映射到 k 维,实现降维处理。
x i ′ = [ ω 1 T x i ω 2 T x i ⋮ ω k T x i ] x_{i}^{'}=\begin{bmatrix}\omega_{1}^{T}x_{i}\\\omega_{2}^{T}x_{i}\\\vdots \\\omega_{k}^{T}x_{i} \end{bmatrix}\\ xi= ω1Txiω2TxiωkTxi

总结

● LDA是线性的、有监督的降维方法,其优点是善于对有类别信息的数据进行降维处理(与PCA的不同)。

● LDA因为是线性模型,对噪声的鲁棒性较好,但由于模型简单,对数据特征的表达能力不足。

● LDA对数据的分布做了一些很强的假设,比如每个类别都是高斯分布、各个类别的协方差相等,实际中这些假设很难完全满足。

关于LDA与PCA的区别,请看下回分解。

参考资料

周志华《机器学习》

葫芦娃《百面机器学习》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

销售流程标准化重要吗?

各行各业都存在销售,但并不是每个销售都可以成为优秀的销售,优秀的销售往往有一套完整的销售流程,为了保证销售新人销售工作的顺利进行,销售流程标准化很有必要。 前言 各行各业都存在销售,但并不是每个销售都可以成为…

前端面试题之计算机网络篇--WebSocket基本使用

WebSocket 普通的包的请求和响应过程 1. 对 WebSocket 的理解 WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。浏览器和服务器只需要完成一次握手,两者之间…

HDLBits练习汇总-13-时序逻辑设计测试--状态机(一)

简单摩尔状态机1(Fsm1) 是一个摩尔状态机,具有两种状态,一种输入,一种输出。实现此状态机。请注意,重置状态为 B。使用异步复位。 模块声明 module top_module(input clk,input areset, // Asynchrono…

基础数学复习(3)——曲线拟合

文章目录基础概念曲线拟合的流程极小化损失函数线性最小二乘超定方程组的最小二乘解(必考)例题(必考)使用法方程计算拟合方程使用最小二乘法求解总结基础概念 曲线拟合的流程 选取函数类选取参数的准则:极小化损失函…

实习-------数据库基础

检索数据 1、如果使用DISTINCT关键字,它必须直接放在列名的前面。不能部分使用DISTINCT,DISTINCT关键字应用于所有列而不仅是前置它的列 例如:SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的vend_id行 2、带一…

(六)devops持续集成开发——jenkins的全局工具配置之node环境安装及配置

前言 本节内容主要是关于jenkins集成node组件,从而实现前端node项目的流水线CICD发布功能。我们需要先安装好前端组件node,并在jenkins中配置好node组件,这样就可以流水线发布一个前端工程了。 正文 安装node组件①上传node安装包 ②解压node安装包 t…

用纯python脚本玩转UU加速器

1. 前言 之前几期内容,我们出过纯py形式的Android自动化脚本。同学们一直让再出一下纯py形式的Windows脚本,今天我们以UU加速器为例,给大家出一个简单的学习demo。 2. UU加速器的自动化demo 今天的练习demo也非常简单,大致内容…

张勇用最严厉的内部信,敲打阿里云,也在提振阿里士气

“「客户第一」的价值观,从来都不是高高挂在公司墙上的标语,而是支撑我们每一天获得成长的基石”。这应该是阿里巴巴董事局主席兼CEO张勇,自2015年来最严厉的一封内部信。信件里,张勇一改往日温情形象,措辞严厉的批评了…

pybind11 | 绑定CGAL几何算法(numpy数据交换)

文章目录一 前言二 numpy数据交换2.1 pybind11对numpy的支持2.2 Numpy VF(py::array_t)与CGAL mesh(Surface Mesh)之间的转换三 绑定CGAL算法示例3.1 示例函数3.2 绑定部分代码3.3 示例完整代码四 编译生成和测试4.1 编译生成pyd文件4.2 Python调用测试五 总结参考和拓展一 前言…

day04 IDEA数组

第一部分 : IDEA开发工具 参见 :IEDA的安装请参考文件夹PPT中的 04_IDEA.ppt 1.数组 1.1 数组介绍 ​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 1.2 数组的定义格式 1.2.1 第一种格式 ​ 数据类型[] 数组名 ​ 示例&…

【Linux】进程创建|进程终止|进程等待|进程程序替换

索引1.进程创建fork函数初识😊我们先来看这样的一个程序:写时拷贝fork返回值的三个问题2.进程终止进程退出场景进程常见退出方法进程退出码:3.进程等待进程等待的方法wait方法waitpid方法获取子进程status进程的阻塞等待方式:进程的非阻塞等待…

vue实现导入表格数据【纯前端实现】

一、文章引导 #mermaid-svg-3VJi5rNvrLDOy2MT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3VJi5rNvrLDOy2MT .error-icon{fill:#552222;}#mermaid-svg-3VJi5rNvrLDOy2MT .error-text{fill:#552222;stroke:#55222…

WSL Ubuntu SSH

WSL中的IP wsl中的ubuntu的ip是动态分配的,每次开机都不一样,而且动态分配的ip和windows系统中的ip不在同一网段,但是我发现在windows中能ping通wsl中ubuntu的ip,这说明子系统与虚拟机不同,在查看ubuntu系统ip时&…

第010课 - docker安装mysql

第010课 - docker安装mysql docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ # 这个里面是容器内mysql相关的日志 -v /mydata/mysql/data:/var/lib/mysql \ # 这个里面是msyql数据相关的内容 -v /mydata/mysql/conf:/etc/mysql \ # 这个里面是容…

数据结构进阶 二叉树OJ题

作者:小萌新 专栏:数据结构进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍几道二叉树的oj题 二叉树OJ题题目一 根据二叉树创建字符串题目二 二叉树的层序遍历题目三 二叉树的最近公共祖先题目一 根据…

华为机试 HJ35 蛇形矩阵

华为机试 HJ35 蛇形矩阵[HJ35 蛇形矩阵](https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e)方法一:顺序填表方法2:数学规律HJ35 蛇形矩阵 描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5…

【数据结构】链表基础知识讲解

文章目录链表链表的结构使用链表的优点模拟实现链表链表 在之前的学习中我们讲解了顺序表ArrayList,Java模拟实现顺序表,如果需要大家可以去看一看,顺序表底层的实现逻辑其实就是数组,在物理存储结构和逻辑上都是连续的&#xff…

Eth 03 -以太网驱动Eth的配置

以太网的配置,下面这张图描述了以太网的配置参数: EthCtrlConfig:单个控制器的配置EthCtrlEnableMii :启用/禁用用于收发器访问的媒体独立接口 (MII)EthCtrlEnableRxInterrupt:启用/禁用接收中断EthCtrlEnableTxInterrupt:启用/禁用传输中断EthCtrlIdx:指定已配置控制…

【BUUCTF】MISC(第一页wp)

文章目录签到金三胖二维码你竟然赶我走大白N种方法解决乌镇峰会种图基础破解wireshark文件中的秘密图片exifLSBLSB隐写(最低有效位隐写):zip伪加密ZIP 文件由**三个部分**组成:**压缩源文件数据区**:**压缩源文件目录区…

FS4412环境搭建

目录 一、开发板硬件资源介绍 二、交叉开发环境 2.1安装交叉编译工具链 2.2配置全局变量​编辑 2.3测试​编辑 2.4终端 2.5安装串口驱动 2.6上电测试 三、地址映射表 一、开发板硬件资源介绍 中间红色的是samsung的主控,四个粉色的256M的内存条&#xff0…