第二章: 机器学习与神经网络概述
第二部分:降维算法理论与实践
第二节:线性判别分析(LDA)
内容:类间散度矩阵、类内散度矩阵、降维与分类结合。
一、LDA 的目标
LDA 是一种有监督降维方法,它不仅考虑维度压缩,还注重提升类别可分性。其核心思想是:
在降低数据维度的同时,使类间距离尽可能大,类内距离尽可能小。
二、核心概念
类内散度矩阵(Within-Class Scatter Matrix)
衡量同一类别内部的样本分布紧密程度:
-
:第 c 类的样本集合
-
:第 c 类的均值向量
类间散度矩阵(Between-Class Scatter Matrix)
衡量类别之间的分布差异:
-
:第 c 类样本数
-
μ:所有样本的总体均值向量
上图展示了 线性判别分析(LDA)中两个关键概念的可视化:
-
左图为类内散度(Within-Class Scatter):每个样本点通过细线连接到所属类别的中心点,体现类内样本之间的紧密程度。类内散度越小,类别内样本越集中,有助于分类准确性。
-
右图为类间散度(Between-Class Scatter):展示各类别中心点相对于总体样本均值的偏离。类间散度越大,类别之间越容易区分。
在 LDA 中,目标是通过线性投影,使得类间散度最大化、类内散度最小化,从而提升降维后的分类性能。
三、LDA 的优化目标
最大化如下目标函数:
求解使 J(w) 最大的投影向量 w,即为最优判别方向。
对于多类情况(>2 类),解出多个判别向量(最多 k-1 个)。
四、Python 实践(使用 Iris 数据集)
from sklearn.datasets import load_iris
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import matplotlib.pyplot as plt
# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# LDA 降维到 2D
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)
# 可视化
plt.figure(figsize=(6,5))
plt.scatter(X_lda[:, 0], X_lda[:, 1], c=y, cmap='rainbow', edgecolor='k')
plt.xlabel("判别轴1")
plt.ylabel("判别轴2")
plt.title("LDA: Iris数据集二维投影")
plt.grid(True)
plt.show()
五、PCA 与 LDA 对比
维度 | PCA | LDA |
---|---|---|
监督学习 | 无监督 | 有监督 |
目标 | 保留最大方差 | 提高类别可分性 |
应用 | 可视化、压缩 | 分类前的预处理 |
降维数量 | ≤ 原始特征维度 | ≤ 类别数 - 1 |
六、典型应用场景
-
用于分类任务的降维预处理
-
图像识别(如人脸识别)
-
文本分类
-
医学图像分析等场景