线性判别分析(Linear Discriminant Analysis, LDA)
一、线性判别器的问题分析
线性判别分析(Linear Discriminant Analysis, LDA)是一种经典的线性学习方法,在二分类问题上亦称为 "Fisher" 判别分析。与感知机不同,线性判别分析的原理是降维,即:给定一组训练样本,设法将样本投影到某一条直线上,使相同分类的点尽可能地接近而不同分类的点尽可能地远,因此可以利用样本点在该投影直线上的投影位置来确定样本类型。
二、线性判别器的模型
还是假定在 p 维空间有 m 组训练样本对,构成训练集 T=(x1,y1),(x2,y2),...,(xn,yn),其中 xi∈R1×p,yi∈{−1,+1},以二维空间为例,在线性可分的情况下,所有样本在空间可以描述为:
我们的目的就是找到一个超平面 Φ:b+w1x1+w2x2+..+wnxn=0,使得所有的样本点满足 “类内尽可能接近,类外尽可能遥远"。那么我们用类内的投影方差来衡量类内的接近程度,用类间的投影均值来表示类间的距离。这里,我们另 w 代表投影方向,如下图所示,
在这里,x,w 均为 p×1 的列向量,那么根据投影定理,x 在 w 上的投影 p 既有方向又有距离,那么:
p 与 w 同方向,表示为:w||w||; p 的长度为:||x||cosθ=||x||x⋅w||w||||x||=x⋅w||w||
由于 w 的长度不影响投影结果,因此我们为了简化计算,设置 ||w||=1,只保留待求 w 的方向:||p||=x⋅w=wTx
2.1 类间投影均值
我们假设用 u0,u1 分别表示第1,2类的均值,那么:
所以,第一,二类均值在 w 方向上的投影长度分别表示为:wTu0,wTu1
2.2 类内投影方差
根据方差的计算公式,第一类的类内投影方差可以表示为:
即:
如下图所示:
当 xi,u0 都是一维时, 式子 1n∑ni=1(xi−u0)(xi−u0)T 就表示所有输入 xi 的方差;
当 xi,u0 都是二维时, 式子 1n∑ni=1(xi−u0)(xi−u0)T 就表示:
其中:u01 表示第一类集合中在第一个维度上的均值,u01 表示第一类集合中在第二个维度上的均值,x11 表示第一类集合中第一个维度的坐标值,x12 表示第一类集合中第二个维度的坐标值
我们设 J(w) 为最终的损失函数,那么满足 ”类内方差最小,类间均值最大“ 的 最大化J(w) 可以表示为:
借用西瓜书的符号,我们定义类间散度矩阵:Sb=(u0−u1)(u0−u1)T,类内散度矩阵:Sw=M0+M1,于是式 (6) 可以重写为:
三、线性判别器的求解
由于 w∈Rp×1,Sb,Sw∈Rp×p,因此:J(w)∈R1×1,所以(7)可以写成:J(w)=wTSbw(wTSww)−1
根据我们之前的讲述:矩阵求导 - ZhiboZhao - 博客园 (cnblogs.com)
可以解得:
即:
由于我们主要关心的是 w 的方向,因此可以简化为:w=S−1wSbw=S−1w(u0−u1)(u0−u1)Tw
又因为 (u0−u1)Tw 也是一个标量,因此,最终的结果为:w=S−1w(u0−u1)
由于 Sw 是实对称矩阵,因此一定存在矩阵 U,V,使得:Sw=Udiag(λ1,λ2,...,λp)VT,所以最后的结果为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南