模式识别大作业班级 021252 姓名 谭红光 学号 021251281.线性投影与Fisher 准则函数各类在d 维特征空间里的样本均值向量:∑∈=ik X x kii xn M 1,2,1=i (1)通过变换w 映射到一维特征空间后,各类的平均值为:∑∈=ik Y y kii yn m 1,2,1=i (2)映射后,各类样本“类内离散度”定义为:22()k ii k i y Y S y m ∈=-∑,2,1=i (3)显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好。
因此,定义Fisher 准则函数:2122212||()F m m J w s s -=+ (4)使FJ 最大的解*w 就是最佳解向量,也就是Fisher 的线性判别式. 从)(w J F 的表达式可知,它并非w 的显函数,必须进一步变换。
已知:∑∈=ik Y y kii yn m 1,2,1=i , 依次代入上两式,有:i TX x ki Tk X x Ti i M w x n w x w n m ik ik ===∑∑∈∈)1(1,2,1=i (5) 所以:221221221||)(||||||||M M w M w M w m m T T T -=-=-w S w w M M M M w b T T T =--=))((2121 (6)其中:Tb M M M M S ))((2121--= (7)bS 是原d 维特征空间里的样本类内离散度矩阵,表示两类均值向量之间的离散度大小,因此,b S 越大越容易区分。
将(4.5-6)i Ti M w m =和(4.5-2)∑∈=ik X x kii xn M 1代入(4.5-4)2iS 式中:∑∈-=ik X x iT k T i M w x w S 22)(∑∈⋅--⋅=ik X x Tik i k T w M x M x w ))(( w S w i T= (8)其中:T iX x k i k i M x M x S ik ))((--=∑=,2,1=i (9)因此:w S w w S S w S S w T T =+=+)(212221 (10)显然:21S S S w += (11)w S 称为原d 维特征空间里,样本“类内离散度”矩阵。
w S 是样本“类内总离散度”矩阵。
为了便于分类,显然iS 越小越好,也就是wS 越小越好。
将上述的所有推导结果代入)(w J F 表达式:可以得到:)(211*M M S w w -=-λγ其中,λγ是一个比例因子,不影响*w 的方向,可以删除,从而得到最后解:)(211*M M S w w -=- (12)就使)(w J F 取得最大值,*w 可使样本由d 维空间向一维空间映射,其投影方向最好。
)(211*M M S w w -=-是一个Fisher 线性判断式.这个向量指出了相对于Fisher 准则函数最好的投影线方向。
2.近邻法线简述最近邻(Nearest Neighbor ,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:如果一个样本在特征空间中的k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
KNN 算法中,所选择的邻居都是已经正确分类的对象。
该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN 方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。
由于KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN 方法较其他方法更为适合。
将与测试样本最近邻样本的类别作为决策的结果。
对一个C 类别问题,每类有i N 个样本,1,2,i C =,则第i 类i ω的判别函数为:()min ||||,1,2,,k i i i kg x x x k N =-= (1)因此,最近邻决策规则: 若()min (),1,2,j i ig x g x i c == (2)3.设计思路根据公式用Matlab 计算出w0,然后对测试数据进行与w0的比较进行分类。
在用欧式距离进行分类。
流程图:算法的流程设计图。
2.程序代码:mine=xlsread('C:\Users\Administrator\Desktop\mine.xls'); %导入mine数据rock=xlsread('C:\Users\Administrator\Desktop\rock.xls'); %导入rock数据amine=randsample(111,55,'false'); %产生55个随机数作为mine行下标bmine=zeros(55,60);for i=1:55for j=1:60bmine(i,j)=mine(amine(i,1),j);mine(amine(i,1),j)=2;endend%选出mine训练样本dmine=zeros(56,60);r=1;for i=1:111if mine(i,1)==2i=i+1;else for j=1:60dmine(r,j)=mine(i,j);endr=r+1;endend%选出mine测试样本cmine=zeros(1,60);for i=1:60for j=1:55cmine(1,i)=cmine(1,i)+bmine(j,i);endendarock=randsample(97,48,'false');brock=zeros(48,60);for i=1:48for j=1:60brock(i,j)=rock(arock(i,1),j);rock(arock(i,1),j)=2;endend%选出rock的训练样本drock=zeros(49,60);p=1;for i=1:97if rock(i,1)==2i=i+1;else for j=1:60drock(p,j)=rock(i,j);endp=p+1;endend%选出rock的测试样本crock=zeros(1,60);for i=1:60for j=1:48crock(1,i)=crock(1,i)+brock(j,i);endend%fisher线性判别mm=cmine/55; %mine的类均值向量mr=crock/48; %rock的类均值向量mm=mm';mr=mr';s_mine=zeros(60,60);s_rock=zeros(60,60);for i=1:55s_mine=s_mine+(bmine(i,:)'-mm)*(bmine(i,:)'-mm)';end%mine的类内离散度矩阵for i=1:48s_rock=s_rock+(brock(i,:)'-mr)*(brock(i,:)'-mr)';end%rock的类内离散度矩阵sw=s_mine+s_rock;w1=inv(sw)*(mm-mr); %最佳投影方向w0=w1'*(mm+mr)/2; %阈值%画坐标轴x=-1:2;y=-1:2;hold on;plot(x,y);y=w0;plot(y,y,'xk'); %阈值的坐标text(0.6,0.5,'w');text(-0.4,0,'rock');text(0.4,0.2,'mine');title('fisher02125128');xlabel('mine');ylabel('rock');%测验分类器emine=0;erock=0;for i=1:56y=w1'*dmine(i,:)';if y>w0plot(y,y,'og'); %分对的mine样本的坐标else plot(y,y,'+m');emine=emine+1; %mine分错的个数endendfor i=1:49y=w1'*drock(i,:)';if y<w0plot(y,y,'oc'); %分对的rock样本的坐标else plot(y,y,'+r');erock=erock+1; %rock分错的个数endenddisp(w0);disp(erock/97);disp(emine/111);text(-0.2,0.63,['errmine:' num2str(emine*100/111) '%']); text(-0.2,-0.43,['errrock:' num2str(erock*100/97) '%']); %最近临法eemine=0;eerock=0;for i=1:56min1=inf;min2=inf;for j=1:55x=norm(dmine(i,1:60)-bmine(j,:));if(x<min1)min1=x;endendfor jj=1:48y=norm(dmine(i,1:60)-brock(jj,:));if(y<min2)min2=y;endendif(min1>min2)eemine=eemine+1;endendfor i=1:49min3=inf;min4=inf;for j=1:55xx=norm(drock(i,1:60)-bmine(j,:));if(xx<min3)min3=xx;endendfor jj=1:48yy=norm(drock(i,1:60)-brock(jj,:));if(yy<min4)min4=yy;endendif(min4>min3)eerock=eerock+1;endenddisp(eemine/111);disp(eerock/97);3.运行结果截图4.结果分析次数 1 2 3 4 5 6 7 8 9 10 平均值erock 0.1546 0.1753 0.1959 0.1856 0.0722 0.1753 0.1959 0.134 0.2165 0.1546 0.1672 emine 0.1351 0.1712 0.1081 0.1892 0.1532 0.0991 0.1261 0.2072 0.1532 0.1532 0.1496 eemine 0.0721 0.0901 0.0901 0.0811 0.0811 0.0721 0.0811 0.0631 0.0721 0.0901 0.0793 eerock 0.1753 0.1856 0.1753 0.0928 0.1649 0.1546 0.1341 0.1959 0.1856 0.1649 0.1629可以看出近邻法得到的识别率比fisher得到的识别率高,这也说明了近邻法比fisher更优。