线性判别分析(LDA)算法的原理与降维分类过程
我将为你讲解线性判别分析(LDA)这个经典的机器学习算法。LDA既可用于分类也可用于降维,其核心思想是寻找最佳投影方向,使得同类样本尽可能聚集,不同类样本尽可能分离。
题目描述
给定一个包含多个类别的数据集,每个样本有d维特征。线性判别分析的目标是找到一个投影方向,将数据投影到低维空间(通常是k维,k≤类别数-1),使得投影后:
- 同类样本的投影点尽可能紧凑(类内散度小)
- 不同类样本的投影点尽可能分开(类间散度大)
解题过程
第一步:理解基本概念和数学定义
假设我们有C个类别,第i类有n_i个样本,总样本数N = Σn_i。
定义三个关键矩阵:
-
类内散度矩阵S_W:衡量同类样本的分散程度
S_W = Σ_{i=1}^C Σ_{x∈第i类} (x - μ_i)(x - μ_i)^T
其中μ_i是第i类的均值向量 -
类间散度矩阵S_B:衡量不同类别之间的分离程度
S_B = Σ_{i=1}^C n_i(μ_i - μ)(μ_i - μ)^T
其中μ是所有样本的总体均值 -
总体散度矩阵S_T = S_W + S_B
第二步:建立优化目标函数
对于二分类问题(C=2),我们希望找到投影方向w,使得投影后的类间散度与类内散度的比值最大:
J(w) = (w^T S_B w) / (w^T S_W w)
这个比值称为Fisher判别准则。最大化J(w)意味着让类间散度尽可能大,类内散度尽可能小。
第三步:求解最优投影方向(二分类情况)
对目标函数求导并令导数为零:
∂J(w)/∂w = 0
经过推导可得:
S_B w = λ S_W w
这等价于广义特征值问题。可以证明,最优的w与S_W^{-1}S_B的特征向量方向一致。
具体解为:w ∝ S_W^{-1}(μ_1 - μ_2)
第四步:扩展到多分类问题
对于C个类别,我们需要寻找k个投影方向(k ≤ C-1),组成投影矩阵W = [w_1, w_2, ..., w_k]。
优化目标变为:J(W) = |W^T S_B W| / |W^T S_W W|
求解广义特征值问题:S_B w_i = λ_i S_W w_i
取前k个最大特征值对应的特征向量组成投影矩阵W。
第五步:计算步骤详解
- 计算每个类别的均值向量μ_i和总体均值μ
- 计算类内散度矩阵S_W
- 计算类间散度矩阵S_B
- 求解广义特征值问题:S_W^{-1}S_B w_i = λ_i w_i
- 按特征值从大到小排序,取前k个特征向量组成投影矩阵
- 将原始数据投影到新空间:Y = XW
第六步:LDA用于分类
投影到新空间后,可以用简单的分类器(如最近质心分类器)进行分类:
- 计算每个类别在新空间中的质心
- 对新样本,计算其到各类别质心的距离
- 将其分配到距离最近的类别
关键点说明
- LDA假设数据服从高斯分布且各类别协方差矩阵相同
- 投影维数最大为C-1,因为类间散度矩阵S_B的秩不超过C-1
- 与PCA不同,LDA是有监督的降维方法,考虑了类别信息
- 在实际应用中,当S_W奇异时需要使用正则化技术