基于Fisher准则的线性分类器设计

一、设计目的

本设计旨在进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解Fisher准则方法确定最佳线性分界面方法的原理。

二、算法原理

线性判别函数的一般形式可表示成
在这里插入图片描述

根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:
在这里插入图片描述

在这里插入图片描述

使用Fisher准则方法确定最佳线性分界面的方法是一个著名的方法,尽管提出该方法的时间比较早,仍见有人使用。

三、设计内容

已知有两类数据和,即 Female.txt和Male.txt,进行Fisher判别分类,用test1.txt和test2.txt中的样本进行测试。
数据的样本点分布如下图:
在入图片描述
图 1:样本点分布图

四、设计要求

1)把数据作为样本,根据Fisher选择投影方向的原则,使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,求出评价投影方向的函数,并在图形表示出来。并在实验报告中表示出来,并求使取极大值的。用matlab完成Fisher线性分类器的设计,程序的语句要求有注释。
2)根据上述的结果并判断test2.txt中第5、第10、第15、第22、第32个样本,分别属于哪个类别,并画出数据分类相应的结果图,要求画出其在上的投影。
3)回答如下问题,分析一下的比例因子对于Fisher判别函数没有影响的原因

五、算法步骤

在这里插入图片描述

六、MATLAB源代码

%读入男生的身高、体重
male = importdata(‘MALE.TXT’) ;
%读入女生的身高、体重
female = importdata(‘FEMALE.TXT’);

m1=mean(male);
m2=mean(female);

test1 = ‘.\test1.txt’;
[data1,data2,data3]=textread(test1,’%n%n%s’);
pos = find(strcmp(data3,‘m’));
neg = find(strcmp(data3,‘f’));
%画图
figure;
hold on;
plot(data1(pos,1),data2(pos,1),‘k+’); %男生样本
plot(data1(neg,1),data2(neg,1),‘ko’); %女生样本
legend(‘男生’,‘女生’);title(‘test1样本点分布’);
xlabel(‘身高’);ylabel(‘体重’);

test2 = ‘.\test2.txt’;
[data11,data22,data33]=textread(test2,’%n%n%s’);
pos1 = find(strcmp(data33,‘M’));
neg1 = find(strcmp(data33,‘F’));
%画图
figure(2);
hold on;
plot(data11(pos1,1),data22(pos1,1),‘k+’); %男生样本
plot(data11(neg1,1),data22(neg1,1),‘ko’); %女生样本
legend(‘男生’,‘女生’);title(‘test2样本点分布’);
xlabel(‘身高’);ylabel(‘体重’);

figure(3)
hold on;
plot(male(:,1),male(:,2),‘b*’); %男生样本
plot(female(:,1),female(:,2),‘r+’); %女生样本
legend(‘男生’,‘女生’);title(‘投影前图像’);
xlabel(‘身高’);ylabel(‘体重’);

s1=zeros(2,2);
for i=1:size(male,1)
s1 = s1 + (male(i,:)-m1)’*(male(i,:)-m1);
end

s2=zeros(2,2);
for i=1:size(female,1)
s2 = s2 + (female(i,:)-m2)’*(female(i,:)-m2);
end

sw=s1+s2;

m1=m1’;
m2=m2’;

w=inv(sw)*(m1-m2);
w=w/sqrt(w’*w)

w0=w’*(m1+m2)/2

g1 = w’*male’;
g2 = w’*female’;

r1=ones(size(g1));
r2=ones(size(g2));

figure(4);
hold on
plot(g1,r1,‘b*’)%男生样本的投影结果
plot(g2,r2,‘r+’)%女生样本的投影结果

t =[156 45; 160 47; 155 60;160 45;173 54];
yt=w’t’% - w0;
rt1=1.1
ones(size(yt));

plot(yt(find(yt>w0)),rt1(yt>w0),‘b+’)
plot(yt(find(yt<w0)),rt1(yt<w0),‘r*’)

a=axis();
a(3)= 0.99;
a(4)= 1.12;
axis(a)

plot([w0 w0],[a(3) a(4)],‘r’)

legend(‘男生样本的投影结果’,‘女生样本的投影结果’,‘测试数据中的第一类’,‘测试数据中的第二类’,‘两类数据投影的平均值’);

七、结果展示

1.投影前后图形显示
在这里插入图片描述
在这里插入图片描述

2、参数
决策面向量:W =[0.7817,0.6236 ]
阈值:yuzhi= 168.4505
样本点分类:
150.0115 154.3856 158.5842 153.1383 168.9133
在这里插入图片描述

八、实验分析

1.分析一下的比例因子对于Fisher判别函数没有影响的原因
设乘上一比例因子α,则投影后即为,相当于每一个样本都乘以比例因子α,所以对Fisher判别函数没有影响。
2.Fisher判别的直观解释是,把待决策的样本投影到Fisher判别的方向上,通过与两类均值投影的平分点相比较做出分类决策。在先验概率相同的情况下,以该平分点为两类的分类点;在先验概率不同时,分类点向先验概率小的一侧偏移。
3.Fisher判别并不对样本的分布做任何假设。但在很多情况下,当样本维数比较高且样本数也比较多时,投影到一维空间后样本接近正态分布。这时可以在一维空间中用样本拟合正态分布,用得到的参数来确定分类阈值。

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 基于Fisher准则线性分类设计是一种常见的分类算法,它通过最大化类间距离和最小化类内距离来实现分类。该算法首先将数据投影到一条直线上,然后根据投影后的数据进行分类。具体而言,该算法通过计算类内协方差矩阵和类间协方差矩阵,来确定最佳的投影方向。最终,将数据投影到该方向上,然后根据投影后的数据进行分类。该算法简单易懂,计算效率高,因此在实际应用中得到了广泛的应用。 ### 回答2: Fisher准则是一种常用于线性分类设计的方法。其核心思想是,将不同类别的数据映射到一个新的空间中,使得同一类别的数据点之间距离尽可能小,不同类别的数据点之间距离尽可能大,并在新的空间中找到一个合适的超平面来划分不同的类别。 假设给定训练样本集S={($x_1$, $y_1$), ($x_2$, $y_2$), ..., ($x_N$, $y_N$)},其中$x_i$为样本特征向量,$y_i\in\{-1,1\}$为样本类别标记。我们的目标是设计一个能够将任意未知样本分为两类的线性分类f($x$)。 Fisher准则将一个样本$x_i$映射到一个新的空间中,新空间的维数一般会低于原空间,使得同一类别的样本尽可能地近,不同类别的样本尽可能地远。这种映射可以借助矩阵转换和特征向量提取的方法来实现,最终得到一个线性变换矩阵$W$,将样本$x_i$映射到新的样本特征空间中的向量$y_i$。 具体而言,我们假设样本均值向量为$u_1$和$u_2$,样本类别协方差矩阵为$S_w$和$S_b$,则样本在新空间中的投影可以表示为: $y_i = W^Tx_i$ 其中,$W$是一个$d$维行向量,其中$d$是新空间的维数。为了最大化不同类别的样本之间距离,我们可以定义类间差异最大化函数$J_1(W)$: $J_1(W) = \frac{(W^T(u_1 - u_2))^2}{W^T(S_w+S_b)W}$ 其中,$u_1$和$u_2$是两个类别的均值向量,$S_w$和$S_b$分别是类别内协方差矩阵和类别间协方差矩阵。 我们的目标是最大化$J_1(W)$,从而找到最佳的投影矩阵$W$。为了实现这一目标,我们可以使用拉格朗日乘数方法,将$J_1(W)$和限制条件$W^TW=I$相结合。通过求取矩阵$W$的特征值和特征向量,可以找到最佳的投影矩阵。 在新空间中,我们可以使用线性超平面来划分不同的类别。超平面的参数可以通过解决以下最优化问题得到: $\max_{w} J_2(w) = \frac{w^TS_bw}{w^TS_ww}$ 其中,$S_b$和$S_w$分别是两个类别的协方差矩阵。通过最大化类别间方差和最小化类别内方差,可以最大化类别间的距离,最小化类别内的距离,从而得到一个用于分类的超平面。 在实际应用中,可以采用支持向量机、逻辑回归等算法来实现基于Fisher准则线性分类设计。此外,还可以借助特征提取、PCA等方法来进一步提高分类的性能。 ### 回答3: 基于Fisher准则线性分类设计是一种基于数据分析的分类算法。Fisher准则也叫做LDA(Linear Discriminant Analysis),它能够准确地将多维特征空间中的数据点分成不同的分类Fisher准则的核心思想是找到一个投影向量,将样本从高维空间映射到一个一维的直线上,并且让不同分类的样本在直线上的分散程度最大,同类样本的分散程度最小。这个过程可以通过求解类内散度矩阵和类间散度矩阵的特征向量来完成。 在使用Fisher准则进行线性分类设计时,首先需要对样本进行特征提取。然后对特征向量进行标准化处理,进而计算出类内散度矩阵和类间散度矩阵。类内散度矩阵是表示同类样本之间差异的矩阵,类间散度矩阵则是表示不同类样本间的差异矩阵。通过求解这两个矩阵的特征向量,得到一个最优的映射方向。这个方向就是将样本从高维空间映射到低维空间的最优方向,可以直接作为分类的判别函数。 在实际应用中,我们常常需要将多个最优投影向量进行组合,以求得更好的分割效果。这就是多类线性判别分析(MLDA)算法。在MLDA中,我们通过求解多个类间散度矩阵的特征向量,来找到最优的投影方向。同时,为了避免数据过拟合,我们可以引入正则化系数,使得投影向量更加平滑,得到更好的泛化性能。 在使用基于Fisher准则线性分类设计时,需要注意的一个问题是,如果训练数据中某些类别的样本数量过少,那么这些类别的分类效果会受到影响。此时,我们可以采用过采样、欠采样、生成式模型等方法来解决数据不平衡问题,从而提高分类的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方上&肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值