7、Fisher线性判别函数的求解过程
时间: 2024-03-29 12:41:03 浏览: 132
Fisher线性判别函数是一种常用的分类方法,其求解过程如下:
1. 计算各类别的均值向量,即将每一类样本的特征向量相加并取平均值,得到每个类别的均值向量。
2. 计算类内散度矩阵,即将每一类的样本的特征向量与该类别均值向量的差的外积矩阵相加,得到类内散度矩阵。
3. 计算类间散度矩阵,即将各类均值向量的差的外积相加,得到类间散度矩阵。
4. 对类内散度矩阵求逆矩阵。
5. 计算 Fisher 系数向量,即将类内散度矩阵的逆矩阵与类间散度矩阵的乘积与目标变量(类别)的标签向量的乘积。
6. 最后得到 Fisher 线性判别函数,即样本特征向量与 Fisher 系数向量的点积。
以上就是 Fisher 线性判别函数的求解过程。
相关问题
请写出基于matlab的Fisher线性判别函数的模板
以下是基于Matlab的Fisher线性判别函数的模板:
```matlab
function [W, b] = fisher_ld(X, Y)
% Input:
% X: n-by-d data matrix, each row is a data point and each column is a feature
% Y: n-by-1 label vector
% Output:
% W: d-by-1 weight vector of Fisher linear discriminant
% b: scalar bias
% Compute the mean of each class
class_labels = unique(Y);
num_classes = length(class_labels);
means = zeros(num_classes, size(X, 2));
for i = 1:num_classes
means(i, :) = mean(X(Y==class_labels(i), :), 1);
end
% Compute the within-class scatter matrix
Sw = zeros(size(X, 2));
for i = 1:num_classes
Xi = X(Y==class_labels(i), :);
Si = (Xi - means(i, :))' * (Xi - means(i, :));
Sw = Sw + Si;
end
% Compute the between-class scatter matrix
Sb = zeros(size(X, 2));
for i = 1:num_classes
Ni = sum(Y==class_labels(i));
mi = means(i, :);
Sb = Sb + Ni * (mi - mean(X, 1))' * (mi - mean(X, 1));
end
% Compute the Fisher linear discriminant
[W, D] = eig(Sb, Sw);
[~, ind] = max(abs(diag(D)));
W = real(W(:, ind));
W = W / norm(W, 2);
% Compute the bias
b = -mean(X * W(Y==class_labels(1), :)' + X * W(Y==class_labels(2), :)', 1) / 2;
end
```
该函数将数据矩阵和标签向量作为输入,并返回Fisher线性判别函数的权重向量和偏置项。函数首先计算每个类别的均值,然后计算类内散布矩阵和类间散布矩阵。接下来,函数通过求解广义特征值问题来计算Fisher线性判别函数的权重向量。最后,函数计算偏置项,使得Fisher线性判别函数在两个类别的中间点处为零。
Fisher 线性判别分析
Fisher 线性判别分析(Fisher Linear Discriminant Analysis, FLDA)是一种监督学习的分类方法。它的目标是找到一个投影方式,可以将样本投影到一条直线上,使得同类样本的投影点尽量接近,异类样本的投影点尽量分开。这条直线称为 Fisher 分类线。
具体地说,FLDA 的过程可以分为以下几步:
1. 计算各类别样本的均值向量,以及所有样本的均值向量。
2. 计算类内散度矩阵(Within-class scatter matrix)和类间散度矩阵(Between-class scatter matrix):
类内散度矩阵 $S_w = \sum_{i=1}^{c}S_i$,其中 $S_i=\sum_{x\in X_i}(x-\mu_i)(x-\mu_i)^T$,$c$ 为类别数,$X_i$ 为第 $i$ 类的样本集合,$\mu_i$ 为第 $i$ 类样本的均值向量。
类间散度矩阵 $S_b = \sum_{i=1}^{c}n_i(\mu_i-\mu)(\mu_i-\mu)^T$,其中 $n_i$ 为第 $i$ 类样本的个数,$\mu$ 为所有样本的均值向量。
3. 计算 Fisher 准则函数 $J(w)=\frac{wS_bw^T}{wS_ww^T}$,其中 $w$ 为投影向量。我们的目标是使 $J(w)$ 最大。
4. 对 $J(w)$ 进行求解,得到投影向量 $w$。
5. 对新的样本进行分类时,将其投影到 $w$ 方向上,根据投影点的位置确定其所属类别。
FLDA 相比于其他线性分类方法(如 PCA)的优势在于,它是基于类别信息进行投影的,因此可以更好地区分不同类别之间的差异,提高分类准确率。缺点在于,FLDA 的前提是各类别的分布满足高斯分布,而且协方差矩阵相等。如果不满足这些条件,FLDA 可能会产生较差的效果。
阅读全文