实验二 Bayes 分类器设计一、实验目的通过实验,加深对统计判决与概率密度估计基本思想、方法的认识,了解影响Bayes 分类器性能的因素,掌握基于Bayes 决策理论的随机模式分类的原理和方法。
二、实验内容设计Bayes 决策理论的随机模式分类器。
假定某个局部区域细胞识别中正常(a 1)和非正常(a 2)两类先验概率分别为 正常状态:P (a 1)=0.9; 异常状态:P (a 2)=0.1。
三、方法手段Bayes 分类器的基本思想是依据类的概率、概密,按照某种准则使分类结果从统计上讲是最佳的。
换言之,根据类的概率、概密将模式空间划分成若干个子空间,在此基础上形成模式分类的判决规则。
准则函数不同,所导出的判决规则就不同,分类结果也不同。
使用哪种准则或方法应根据具体问题来确定。
四、Bayes 算法 1.实验原理多元正太分布的概率密度函数由下式定义112211()exp ()()2(2)T d p X X X μμπ-⎧⎫=--∑-⎨⎬⎩⎭∑ 由最小错误概率判决规则,可得采用如下的函数作为判别函数()(|)(),1,2,,i i i g x p X P i N ωω==这里,()i P ω为类别i ω发生的先验概率,(|)i p X ω为类别i ω的类条件概率密度函数,而N 为类别数。
设类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p X ω,i=1,2,……,N 服从正态分布,即有(|)i p X ω~(,)i i N μ∑,那么上式就可以写为1122()1()exp ()(),1,2,,2(2)T i i d P g X X X i N ωμμπ-⎧⎫=--∑-=⎨⎬⎩⎭∑由于对数函数为单调变化的函数,用上式右端取对数后得到的新的判别函数替代原来的判别函数()i g X 不会改变相应分类器的性能。
因此,可取111()()()ln ()ln ln(2)222T i i i i i i dg X X X P μμωπ-=--∑-+-∑-显然,上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。
这样,判别函数()i g X 可简化为以下形式111()()()ln ()ln 22T i i i i i i g X X X P μμω-=--∑-+-∑2.实验步骤1、求出两类样本的均值11,2iX iX i N ωμ∈==∑2、求每一类样本的协方差矩阵11()(),1,21i ii N w w i jklj j lk k l i s x x j k N μμ==--=-∑式中,l 代表样本在类中的序号,其中lj x 代表i w 类的第l 个样本,第j 个特征值;iw j μ代表i w 类的i N 个样品第j 个特征的平均值lk x 代表i w 类的第l 个样品,第k 个特征值;iw k μ代表i w 类的i N 个样品第k 个特征的平均值。
i w 类的协方差矩阵为11122122i iii i ⎛⎫∑∑∑= ⎪∑∑⎝⎭ 3、计算出每一类的协方差矩阵的逆矩阵1i -∑以及协方差矩阵的行列式i ∑ 4、求出每一类的先验概率()/1,2i i P N Ni ω≈=5、将各个数值代入判别函数111()()()ln ()ln 22T i i i i i i g X X X P μμω-=--∑-+-∑判别边界为12()()0g X g X -=五、Bayes 分类器实验结果已知(图1)数据a=[0.3760 0.0240 0.2440 -0.1740 0.0460 -0.3940 0.3760 0.7720 0.2660 0.5080 -0.4380 -0.0640 0.8160 0.5960 0.1120 0.3540 0.8380 -0.7680 0.4200 -0.7900];其满足正态分布(图2)。
1. 最小错误率贝叶斯决策图1 样本数据图2 样本的类条件概率根据最小错误率准侧,计算其后验条件概率(图3),通过程序运行出结果细胞分类结果为:1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0,其中,0为判成正常细胞,1为判成异常细胞。
图3 后验条件概率2. 最小风险贝叶斯决策根据最小风险判别准侧,其损失函数赋值为r=[0 1000 0;200 0 0],则计算其条件风险概率(图4)通过程序运行出结果细胞分类结果为:1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1,其中,0为判成正常细胞,1为判成异常细胞。
图4 条件风险概率3.两类分类器结果不同原因分析由最小错误率的贝叶斯判决和基于最小风险的贝叶斯判决得出图形中的分类结果可以看出,样本0.0240,0.2440等在前者中被分为“正常细胞”,在后者被分为“异常细胞”,分类结果不同。
因为在给予最小风险贝叶斯判决中,影响决策结果的因素多了损失r这一项,所以当结合最小风险贝叶斯决策表进行计算时,‘损失’起了主导作用,导致出现两者结果的不一致。
六、Bayes分类器程序代码function y=my_bayes(n,a)%%%%%%%%%%%%%最小错误率贝叶斯决策% 构造实验数据a=[0.3760 0.0240 0.2440 -0.1740 0.0460 -0.3940 0.3760 0.7720 0.2660 0.5080 -0.4380 -0.0640 0.8160 0.5960 0.1120 0.3540 0.8380 -0.7680 0.4200 -0.7900];n=20; % 样本数a=(round(100*rand(n,1))/100)*2.2-0.9;% 样本数为n,特征数为1,数据在-0.9与1.3之间figureplot(1:n,a,'rx')xlabel('样本数');ylabel('生化化验值');title('样本数据:生化化验值');pause;% 先验概率P=[0.9 0.1];% 作类条件概率密度曲线p(x|wi)x=-0.9:0.01:1.3;px(1,:)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2);px(2,:)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1).^2);figure;plot(x,px(1,:),'b',x,px(2,:),'r--');xlabel('生化化验值');ylabel('概率密度');title('类条件概率密度曲线')axis tight;pause;% 作后验概率曲线for i=1:2pwx(i,:)=px(i,:)*P(i)./(px(1,:)*P(1)+px(2,:)*P(2));endfigure;plot(x,pwx(1,:),'b',x,pwx(2,:),'r--');xlabel('生化化验值');ylabel('后验概率');title('后验概率曲线')axis tight;pause;% 计算给定生化化验值的类条件概率密度曲线for j=1:ns=a(j);PXW1=spline(x,px(1,:),s);PXW2=spline(x,px(2,:),s);PXW=[PXW1,PXW2];disp('样本')s%计算后验概率,判断输出for i=1:2Pwx(i)=PXW(i)*P(i)/(PXW(1)*P(1)+PXW(2)*P(2)); enddisp('后验概率 P(wi|x)=')Pwxplot(x,pwx(1,:),'b',x,pwx(2,:),'r--');xlabel('生化化验值');ylabel('后验概率');title('后验概率曲线')hold onplot(s,Pwx(1),'or',s,Pwx(2),'ob');axis tight;hold offif Pwx(1)>Pwx(2)w(j,1)=s;disp('正常人')elsew(j,2)=s;disp('感染病人')endpause;enddisp('========================================')disp('正常人感染病人')w%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%最小风险贝叶斯n=20; % 样本数figureplot(1:n,a,'rx')xlabel('样本数');ylabel('生化化验值');title('样本数据:生化化验值');pause;% 先验概率P=[0.9 0.1];% 作类条件概率密度曲线p(x|wi)x=-0.9:0.01:1.3;px(1,:)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2);px(2,:)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1).^2); figure;plot(x,px(1,:),'b',x,px(2,:),'r--');xlabel('生化化验值');ylabel('概率密度');title('类条件概率密度曲线')axis tight;pause;% 作后验概率曲线for i=1:2pwx(i,:)=px(i,:)*P(i)./(px(1,:)*P(1)+px(2,:)*P(2)); endfigure;plot(x,pwx(1,:),'b',x,pwx(2,:),'r--');xlabel('生化化验值');ylabel('后验概率');title('后验概率曲线')axis tight;pause;% 损失函数r=[0 1000 0;200 0 0];%作条件风险曲线for i=1:2R(i,:)=r(i,1)*pwx(1,:)+r(i,2)*pwx(2,:);endfigure;plot(x,R(1,:),'b',x,R(2,:),'r--');xlabel('生化化验值');ylabel('条件风险');title('条件风险曲线')axis tight;pause;% 计算给定生化化验值的条件风险for j=1:ns=a(j);PXW1=spline(x,px(1,:),s);PXW2=spline(x,px(2,:),s);PXW=[PXW1,PXW2];disp('样本')s%计算后验概率for i=1:2Pwx(i)=PXW(i)*P(i)/(PXW(1)*P(1)+PXW(2)*P(2)); end%计算条件风险,判断输出for i=1:2Rx(i,:)=r(i,1)*Pwx(1)+r(i,2)*Pwx(2);%%%%%enddisp('条件风险 R(ai|x)=')Rxplot(x,R(1,:),'b',x,R(2,:),'r--');xlabel('生化化验值');ylabel('条件风险');title('条件风险曲线')hold onplot(s,Rx(1),'or',s,Rx(2),'ob');axis tight;hold offif Rx(1)>Rx(2)w(j,1)=s;disp('正常人')elsew(j,2)=s;disp('感染病人')endpause;enddisp('========================================')disp('正常人感染病人')W。