习题 2 2 2.
( 1 ) . (1). (1).

P ( x ∣ w 1 ) P ( w 1 ) = 0.25 × 0.8 = 0.2 P(x|w_1)P(w_1)=0.25\times0.8=0.2 P(xw1)P(w1)=0.25×0.8=0.2

P ( x ∣ w 2 ) P ( w 2 ) = 0.6 × 0.2 = 0.12 P(x|w_2)P(w_2)=0.6\times0.2=0.12 P(xw2)P(w2)=0.6×0.2=0.12

根据基于最小错误率的Bayes,该细胞为正常细胞。

( 2 ) (2) (2)

计算后验概率:

P ( w 1 ∣ x ) = P ( x ∣ w 1 ) P ( w 1 ) ∑ j = 1 2 P ( x ∣ w j ) P ( w j ) = 0.25 × 0.8 0.25 × 0.8 + 0.6 × 0.2 = 0.625 P(w_1|x)=\frac{P(x|w_1)P(w_1)}{\sum^{2}_{j=1}{P(x|w_j)P(w_j)}}=\frac{0.25\times0.8}{0.25\times 0.8+0.6\times0.2}=0.625 P(w1x)=j=12P(xwj)P(wj)P(xw1)P(w1)=0.25×0.8+0.6×0.20.25×0.8=0.625

P ( w 2 ∣ x ) = 1 − P ( w 1 ∣ x ) = 0.375 P(w_2|x)=1-P(w_1|x)=0.375 P(w2x)=1P(w1x)=0.375

条件风险:

R ( a 1 ∣ x ) = ∑ i = 1 2 λ 1 i P ( w i ∣ x ) = 2.25 R(a_1|x)=\sum^{2}_{i=1}{λ_{1i}P(w_i|x)}=2.25 R(a1x)=i=12λ1iP(wix)=2.25

R ( a 2 ∣ x ) = ∑ i = 1 2 λ 2 i P ( w i ∣ x ) = 0.625 R(a_2|x)=\sum^{2}_{i=1}{λ_{2i}P(w_i|x)}=0.625 R(a2x)=i=12λ2iP(wix)=0.625

因为 R ( a 1 ∣ x ) > R ( a 2 ∣ x ) R(a_1|x)>R(a_2|x) R(a1x)>R(a2x),所以该细胞为异常细胞。

一、实验内容

  1. 应用单个特征进行实验:
    以 (a)身高 或者 (b)体重 数据作为特征,在正态分布假设下利用最大似然法估计分布密度参数,建立最
    小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到测试样本,考察测试错误情况。
    在分类器设计时可以考察采用不同先验概率(如 0.5对0.5 , 0.75对0.25 , 0.9对0.1 等)进行实验,考察
    对决策规则和错误率的影响。
  2. 自行给出一个决策表,采用最小风险的Bayes决策重复单个特征的实验

二、原理简述、程序流程图及相应结果

(一)、实验原理

1、最小错误率贝叶斯决策,常用的判别函数:

①. g i = P ( w i ∣ x ) g_i=P(w_i|x) gi=P(wix)

②. g i = P ( x ∣ w i ) P ( w i ) g_i=P(x|w_i)P(w_i) gi=P(xwi)P(wi)

③. g i = l n P ( x ∣ w i ) + l n P ( w i ) g_i=lnP(x|w_i)+lnP(w_i) gi=lnP(xwi)+lnP(wi)


在两类的情况下,对于二分类问题,一般只用一个判别函数:

g ( x ) = g 1 ( x ) − g 2 ( x ) g(x)=g_1(x)-g_2(x) g(x)=g1(x)g2(x)

其决策面方程为 g ( x ) = 0 g(x)=0 g(x)=0。对应的判决规则为:若 g ( x ) > 0 g(x)>0 g(x)>0,则样本判决为 w 1 w_1 w1,否则判决为 w 2 w_2 w2

2、最小风险决策判别规则:

g ( x ) = ∑ i = 1 2 λ 1 i P ( w 1 ∣ x ) − ∑ i = 1 2 λ 1 i P ( w 2 ∣ x ) g(x)=\sum^{2}_{i=1}{λ_{1i}P(w_1|x)}-\sum^{2}_{i=1}{λ_{1i}P(w_2|x)} g(x)=i=12λ1iP(w1x)i=12λ1iP(w2x)

其决策面方程为 g ( x ) = 0 g(x)=0 g(x)=0。对应的判决规则为:若 g ( x ) > 0 g(x)>0 g(x)>0,则样本判决为 w 2 w_2 w2,否则判决为 w 1 w_1 w1

(二)、流程图

1.最小错误率贝叶斯决策流程图
流程图
2.最小风险决策流程图

在这里插入图片描述

三、实验结果及分析

(一)、最小贝叶斯错误率决策

1.只考虑身高的不同先验概率下男女判错统计表

女生先验概率 P ( w 1 ) P(w_1) P(w1)男生先验概率 P ( w 2 ) P(w_2) P(w2)test1判错个数test1错误率test2判错个数test2错误率
0.50.525.71%279.00%
0.250.75411.43%6622.00%
0.10.9720.00%14749.00%

2.只考虑体重的不同先验概率下男女判错统计表

女生先验概率 P ( w 1 ) P(w_1) P(w1)男生先验概率 P ( w 2 ) P(w_2) P(w2)test1判错个数test1错误率test2判错个数test2错误率
0.50.525.71%4414.67%
0.250.75411.43%7826.00%
0.10.91028.57%13344.33%

对于测试样本,当女生先验概率为0.5时,测试样本1、测试样本2判别错误率最小;故可推测用最小错误率贝叶斯决策当女生先验概率等于0.5时有最小错误率贝叶斯决策。

(二)、最小风险决策

决策表:

女生男生
04
30

1.只考虑身高的不同先验概率下男女判错统计表

女生先验概率 P ( w 1 ) P(w_1) P(w1)男生先验概率 P ( w 2 ) P(w_2) P(w2)test1判错个数test1错误率test2判错个数test2错误率
0.50.525.71%206.67%
0.250.75411.43%5819.33%
0.10.9617.14%12040.00%

2.只考虑体重的不同先验概率下男女判错统计表

女生先验概率 P ( w 1 ) P(w_1) P(w1)男生先验概率 P ( w 2 ) P(w_2) P(w2)test1判错个数test1错误率test2判错个数test2错误率
0.50.525.71%4414.67%
0.250.75411.436822.67%
0.10.9617.14%9732.33%

对于测试样本,当女生先验概率为0.5时,测试样本1、2判别错误率最小;
故可推测用最小风险决策假设身高或者体重不相关当女生先验概率等于0.5时有最小风险决策。

附录

部分截图

1.最小贝叶斯错误率决策
在这里插入图片描述
2.最小风险决策
在这里插入图片描述
c o d e : code: code:

clear all;%最小贝叶斯错误率决策
load FEMALE.txt;
load MALE.txt;

fid=fopen('test2.txt','r');   
test1=fscanf(fid,'%f %f %c',[3,inf]);
test=test1';
fclose(fid);
tot=300
Fmean = mean(FEMALE);
Mmean = mean(MALE);
Fvar = std(FEMALE);
Mvar = std(MALE);
preM = 0.1; preF = 0.9;%先验概率
error = 0; Nerror = 0;
figure;
for i=1:tot
     PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1)) ;
     
     PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1)) ;
     
     p=(log(PFheight)+log(preF))-(log(PMheight)+log(preM));
     
     if(p>0)
         plot(i,test(i,1),'r+');
           if (test(i,3)=='1')
              Nerror = Nerror +1;
           end;
     else
         plot(i,test(i,1),'b*');
          if (test(i,3)=='2')
              Nerror = Nerror +1;
          end
     end;
     hold on;
end;
title('身高最小风险的Bayes决策');
xlabel('测试序号'),ylabel('身高(cm)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
error=0;
Nerror=0;
figure;
for i=1:tot
     PFweight = normpdf(test(i,2),Fmean(1,2),Fvar(1,2)) ;
     PMweight = normpdf(test(i,2),Mmean(1,2),Mvar(1,2)) ;
     
     p=(log(PFweight)+log(preF))-(log(PMweight)+log(preM));
     if(p>0)
         plot(i,test(i,1),'r+');
           if (test(i,3)=='1')
              Nerror = Nerror +1;
           end;
     else
         plot(i,test(i,1),'b*');
          if (test(i,3)=='2')
              Nerror = Nerror +1;
          end
     end;
     hold on;
end;
title('体重最小风险的Bayes决策');
xlabel('测试序号'),ylabel('体重(kg)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')    

clear all;%最小风险决策
load FEMALE.txt;
load MALE.txt;

fid=fopen('test1.txt','r');   
test1=fscanf(fid,'%f %f %c',[3,inf]);
test=test1';
fclose(fid);

Fmean = mean(FEMALE);
Mmean = mean(MALE);
Fvar = std(FEMALE);
Mvar = std(MALE);

preM = 0.25; preF = 0.75;%先验概率

error = 0; Nerror = 0;

%损失矩阵
DFF=0;DFM=4;
DMF=3;DMM=0;
tot=35
figure;
for i=1:tot
     PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1)) ;
     PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1)) ;
     
     p=DMF*PFheight*preF-DFM*PMheight*preM;
     
     if(p>0)
         plot(i,test(i,1),'r+');
           if (test(i,3)=='1')
              Nerror = Nerror +1;
           end;
     else
         plot(i,test(i,1),'b*');
          if (test(i,3)=='2')
              Nerror = Nerror +1;
          end
     end;
     hold on;
end;
title('身高最小风险的Bayes决策');
xlabel('测试序号'),ylabel('身高(cm)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
error=0;
Nerror=0;
figure;
for i=1:tot
     PFweight = normpdf(test(i,2),Fmean(1,2),Fvar(1,2)) ;
     PMweight = normpdf(test(i,2),Mmean(1,2),Mvar(1,2)) ;
     p=DMF*PFweight*preF-DFM*PMweight*preM;
     if(p>0)
         plot(i,test(i,1),'r+');
           if (test(i,3)=='1')
              Nerror = Nerror +1;
           end;
     else
         plot(i,test(i,1),'b*');
          if (test(i,3)=='2')
              Nerror = Nerror +1;
          end
     end;
     hold on;
end;
title('体重最小风险的Bayes决策');
xlabel('测试序号'),ylabel('体重(kg)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')    

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐