LDA线性判别分析

线性判别分析原理


hit2015spring

给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例点尽可能的远,对新样本进行分类的时候,将新样本同样的投影,再根据投影得到的位置进行判断,这个新样本的类别
LDA二维示意图。用‘+’表示正类“-”表示负类,两个投影,实心三角形和圆表示投影中心
二分类:
给定数据集D=(xi,yi)mi=1,yi0,1

Xi:第i0,1类的样本集合
μi:第i0,1类的均值向量
i:第i0,1类的协方差矩阵

将数据投影在直线w上,则两类样本的中心点在直线上的投影分别为wTμ0wTμ1

将所有的样本点投影到直线上之后,两类样本的协方差为wT0wwT1w

由于直线是一维空间,因此wTμ0 wTμ1 wT0wwT1w均为实数

为了把两类分的比较开于是有两个方面考虑
1、同类抱团更加紧密
2、不同类分的开

为了让同类的样本尽可能的接近,就让同类样本的投影点协方差尽可能的小,
于是有
wT0w+wT1w让他们尽可能的小

为了两类分的开:
于是有了两类的投影中心尽可能的远离
wTμ0wTμ122

要尽可能的大,这样就可以得到它的优化目标函数,使她最大就ok
J=wTμ0wTμ122wT0w+wT1w

定义两个符号
类内散度矩阵:
Sw=0+1=x1X0(xμ0)(xμ0)T+x1X1(xμ0)(xμ0)T
类间散度矩阵
Sb=(μ0μ1)(μ0μ1)T

于是得到了要优化的下式,最后需要优化的目标,使之最大化即可,求取w

J=wTSbwwTSww

### LDA线性判别分析原理 LDA(Linear Discriminant Analysis,线性判别分析)是一种常用的监督学习算法,主要用于分类和降维。它通过寻找一个线性组合来最大化类别之间的分离度,从而提高数据的可区分性[^1]。 #### 基本目标 LDA的核心目标是在低维空间中找到投影方向,使不同类别的样本尽可能分开,而同一类别的样本尽可能聚集在一起。这可以通过优化两个矩阵的比例实现:组间散度矩阵 \( S_B \) 和组内散度矩阵 \( S_W \)[^2]。 - **组间散度矩阵 (\(S_B\))**:衡量类别中心间的差异程度。 - **组内散度矩阵 (\(S_W\))**:反映同类样本内部的变化情况。 最终的目标是最小化 \( S_W \),同时最大化 \( S_B \)[^3]。 --- ### 数学推导过程 假设输入数据集有 \( C \) 类,每类的数据分别为 \( X_1, X_2, ..., X_C \): 1. 计算全局均值向量: \[ m = \frac{1}{N} \sum_{i=1}^{C} N_i m_i \] 其中 \( N_i \) 是第 \( i \) 类的样本数,\( m_i \) 是该类的均值向量。 2. 构造组内散度矩阵 \( S_W \): \[ S_W = \sum_{i=1}^{C} \sum_{x_j \in X_i} (x_j - m_i)(x_j - m_i)^T \] 3. 构造组间散度矩阵 \( S_B \): \[ S_B = \sum_{i=1}^{C} N_i (m_i - m)(m_i - m)^T \] 4. 寻找最优投影方向 \( W \): 解广义特征值问题: \[ S_B w = \lambda S_W w \] 这里的解即为最佳投影方向[^2]。 --- ### 实现方法 以下是基于Python的一个简单LDA实现示例: ```python import numpy as np from sklearn.discriminant_analysis import LinearDiscriminantAnalysis # 数据准备 X = np.array([[1, 2], [2, 3], [3, 3], [4, 5], [6, 5], [9, 10]]) y = np.array([0, 0, 0, 1, 1, 1]) # 初始化并拟合模型 lda = LinearDiscriminantAnalysis() lda.fit(X, y) # 转换到新空间 X_lda = lda.transform(X) print("转换后的数据:\n", X_lda) ``` 上述代码展示了如何利用 `scikit-learn` 库中的 `LinearDiscriminantAnalysis` 来完成LDA操作。 --- ### 性能特点与应用场景 - **优点**:相比PCA,LDA能够更好地保留类别信息;适用于多分类场景下的降维任务。 - **缺点**:依赖于标签信息,无法应用于无监督学习;对于高维稀疏数据可能表现不佳。 常见应用领域包括但不限于人脸检测、语音识别以及医学诊断等领域。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值