Fisher判别法解析与MATLAB实现

版权申诉
5星 · 超过95%的资源 8 下载量 22 浏览量 更新于2024-08-07 3 收藏 35KB DOCX 举报
"这篇文档详细介绍了Fisher判别分析(Fisher Linear Discriminant Analysis, FDA 或 LDA)的原理及MATLAB实现。Fisher算法旨在寻找一个投影向量,使得不同类别之间的分离度最大化,同时保持同一类别内的数据点聚集度最小化。文档中涵盖了从确定投影方向到实现MATLAB代码的全过程,包括类内离散度矩阵、类间离散度矩阵的计算,以及拉格朗日乘子法求解Fisher准则的极值问题。" Fisher判别分析是一种统计方法,常用于特征降维和分类问题。在二分类问题中,Fisher算法的目标是找到一个投影方向,使得两类样本在投影后的一维空间中尽可能地分离,同时保持类内样本的离散度最小。投影向量w由以下Fisher准则确定: \[ J(w) = \frac{(\mu_1 - \mu_2)^T w}{\sqrt{w^T (S_W) w}} \] 其中,\( \mu_1 \) 和 \( \mu_2 \) 分别代表两类样本的均值,\( S_W \) 是类内离散度矩阵,\( S_B \) 是类间离散度矩阵。 类内离散度矩阵 \( S_W \) 定义为: \[ S_W = \sum_{i=1}^{n_1} (\mathbf{x}_i - \mu_1)(\mathbf{x}_i - \mu_1)^T + \sum_{i=1}^{n_2} (\mathbf{x}_i - \mu_2)(\mathbf{x}_i - \mu_2)^T \] 类间离散度矩阵 \( S_B \) 定义为: \[ S_B = n_1 \mu_1 \mu_1^T + n_2 \mu_2 \mu_2^T - n (\mu \mu^T) \] 其中,\( n_1 \) 和 \( n_2 \) 是两类样本的数量,\( n = n_1 + n_2 \),\( \mu \) 是所有样本的均值。 通过最大化Fisher准则 \( J(w) \),我们可以求解投影向量 \( w \)。这通常涉及到拉格朗日乘子法,将Fisher准则和正则化项(即要求 \( w^T w = 1 \))一起处理。解出的 \( w \) 就是最佳的投影方向,对应的阈值 \( b \) 可以通过下面的公式计算: \[ b = \frac{1}{2} (\mu_1 + \mu_2)^T w \] 待分类的新样本 \( \mathbf{x} \) 通过以下方式投射到一维空间并进行分类: \[ y = \mathbf{x}^T w \] 如果 \( y > b \),样本归为第一类;否则,归为第二类。 文档还提供了MATLAB代码示例,用于读取数据并执行Fisher LDA。通过这样的过程,读者不仅可以理解Fisher算法的理论,还能学会如何在实际问题中应用这一方法。