简介
首先,先介绍以下Beyas决策的基础:Beyas公式
其中 为类条件概率, 是条件 的先验概率,最终得到的结果是 由条件 导致的后验概率
BB这么多,这公式啥意思呢?如果学过概率论的同学应该对类条件概率和先验概率并不陌生,
就是条件 或者 事件发生的概率,
就是条件概率。下面我们实例化说明一下
记
为第一次十连中奖,
为第一次十连保底,记
为再来一发中奖,那么
就是我第一次十连中奖的概率,而
就是我已经保底之后,再来一发中奖的概率。
同样在该实例化中,对于后验概率我们又怎么解释呢?比如:
在我又氪了一单十连中奖之后,我第一次保底的概率。这好像不太不符合认知,我们在通过观测当前事件,去推算已经发现事件的概率,通俗一点说,我们想知道过去的某一事件对现在这件事的影响有多大,而显然这是我们无法人为察觉到的,我们习惯于做出假设并验证,而不是根据结果去推测
之后,我们再根据Bayes公式去看Bayes决策:依据后验概率对x进行分类。根据上面对后验概率的解释,Bayes决策实际就是对x进行解析,推测在每个类别中概率,并将x归为可能性最大的分组中
基于最小错误率的Bayes决策
在这种衡量方式下,我们认为错误是不可接受的,但由于事件具有随机性,因此力图将分类决策的错误概率最小,数学表达为
由于在贝叶斯公式中,对于同一样本的全概率相同,因此后验概率最大就可以等价为分子最大
在二值分类中,我们可以对上式变形得到
这样我们的判别依据就与样本无关,而是由先验概率确定的阈值进行判断
其中 称为似然比, 为似然比阈值
此外,可以证明的是: 贝叶斯分类器在最小化分类错误率上是最优的
这里给出一个一维、服从正态分布的样本x,并根据设定模型进行基于最小错误率分类的matlab模拟程序
clear all
close all
clc
N=1000;
prior=[.4 .6];
sample=rand(1,N);
x_in_w1=normpdf(sample,0,1);
x_in_w2=normpdf(sample,1,0.5);
g=x_in_w1.*prior(1)-x_in_w2.*prior(2);
Px=x_in_w1.*prior(1)+x_in_w2.*prior(2);
n_G1=1;n_G2=1;
G1=[];G2=[];
G1_pos=[];G2_pos=[];
for i=1:N
if g(i)>0
G1_pos(n_G1)=sample(i);
G1(n_G1)=x_in_w1(i)*prior(1)/Px(i);
n_G1=n_G1+1;
else
G2_pos(n_G2)=sample(i);
G2(n_G2)=x_in_w2(i)*prior(2)/Px(i);
n_G2=n_G2+1;
end
end
figure
scatter(G1_pos,G1)
grid on
hold on
scatter(G2_pos,G2)
legend('Group1','Group2')
figure
stem(sample,x_in_w1,'-g')
hold on
grid on
stem(sample,x_in_w2,'-r')
legend('Group1','Group2')
结果图像1是在分类组中x的后验概率:
可以看到x大约在0.25左右产生分界,由于一维数据,判决函数的分界面就是g(x)=0,所以没有给出图像
结果图像2为 条件下正态分布曲线
我们可以看到,在这里两类概率交点并不是实际分类分界点,当前仅当显眼概率相同时,上述两点重合
下面给出二维数据(x,y)的Beyas决策:
这里为了省事所以x,y是iid(独立同分布)的,所以就可以把联合pdf(概率密度)改为边缘pdf的乘积
clear all
close all
clc
N=100;
prior=[.6 .4];
% x,y~iid
x=rand(1,N);
y=rand(1,N);
% 在不同类别下条件概率
x_in_w1=normpdf(x,0,1);
x_in_w2=normpdf(x,1,0.5);
y_in_w1=normpdf(y,-1,1);
y_in_w2=normpdf(y,1.5,1);
% 由于iid,有P(x,y|wi)=P(x|wi)P(y|wi)
g=zeros(1,N);
g=x_in_w1.*y_in_w1*prior(1)-x_in_w2.*y_in_w2*prior(2);
G1_x=[];G1_y1=[];
G2_x=[];G2_y=[];
n_G1=1;n_G2=1;
for i=1:N
if g(i)>0
G1_x(n_G1)=x(i);
G1_y(n_G1)=y(i);
n_G1=n_G1+1;
else
G2_x(n_G2)=x(i);
G2_y(n_G2)=y(i);
n_G2=n_G2+1;
end
end
figure
scatter(G1_x,G1_y)
grid on
hold on
scatter(G2_x,G2_y)
legend('Group1','Group2')
这里我们就可以看到明显分界面
这里我调的N比较下,有兴趣可以再调整N的大小,分界面将越来越明显。也可用再加上样本对应的后验概率做3维图,可以更清楚的看到超平面
基于最小风险的贝叶斯决策
在这一决策衡量中,我们认为错误是可以接收,并且出现错误会产生不同代价,我们要求此类决策的代价最低
这也就意味着不同类别的误判有其自己的权重系数,是否发生误判不再是最重要的决策指标,做出这一判断后,误判造成的损失大小是决策的重要指标
为了衡量某一决策所带来的损失,我们引入损失函数 来定量分析这一指标
下面给出损失函数的表现形式:决策表
差不多就长这样,最后用矩阵表示。 表示决策 将样本归为 时产生的代价条件期望损失
对样本 采取决策 时的损失加权平均值,简而言之就是该决策下误判的概率的加权系数
期望风险
对于所有可能的样本 ,其对应决策所带来风险的统计平均
其中 表示对于样本 做出的决策所带来的风险系数可以预见的是:在采取每一个决策时都能保证风险最小,那么对所有 决策时,必然保证期望风险最小
基于最小风险的贝叶斯决策的核心就是 决策风险最小
基于上述对损失函数的介绍,我们可以得出该条件下决策规则
下面给一个似懂非懂的示例程序
clear all
close all
clc
N=500;
prior=[.4 .6];
lambda = [0 3;4 0];
sample=rand(1,N);
x_in_w1=normpdf(sample,0,1);
x_in_w2=normpdf(sample,1,0.5);
Px=x_in_w1.*prior(1)+x_in_w2.*prior(2);
L1=x_in_w2.*prior(2)./Px*lambda(1,2);
L2=x_in_w1.*prior(1)./Px*lambda(2,1);
g=L1-L2;
n_G1=1;n_G2=1;
G1=[];G2=[];
G1_pos=[];G2_pos=[];
for i=1:N
if g(i)>0
G1_pos(n_G1)=sample(i);
G1(n_G1)=x_in_w1(i)*prior(1)/Px(i);
n_G1=n_G1+1;
else
G2_pos(n_G2)=sample(i);
G2(n_G2)=x_in_w2(i)*prior(2)/Px(i);
n_G2=n_G2+1;
end
end
figure
scatter(G1_pos,G1)
grid on
hold on
scatter(G2_pos,G2)
legend('Group1','Group2')
figure
stem(sample,x_in_w1,'-g')
hold on
grid on
stem(sample,x_in_w2,'-r')
legend('Group1','Group2')
实验结果如下