贝叶斯概率
贝斯公式和全概率公式的意思差不多相反。
全概率公式是说;某件事情的发生可以由很多情况导致,那么这件事情发生的概率,就是每件事情导致他发生的概率,乘以每件事情发生的概率。
贝斯公式的意思是:某件事情还是由刚才所说的那些事件引起的,你已经知道某件事情发生了,那么他是由哪件事情引起的呢?就可以又贝斯公式A事件引起他发生的概率。
基本概念
条件概率
条件概率,事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。
公式导出
观察下图
易知
P(A|B) = P(A∩B) / P(B)
同理又有
P(B|A) = P(A∩B) / P(A)
所以
P(A|B) * P(B) = P(B|A) * P(A)
P(A|B) = P(B|A) * P(A) / P(B)
经典题型
假设有两个各装了100个球的箱子,甲箱子中有70个红球,30个绿球,乙箱子中有30个红球,70个绿球。假设随机选择其中一个箱子,从中拿出一个球记下球色再放回原箱子,如此重复12次,记录得到8次红球,4次绿球。问题来了,你认为被选择的箱子是甲箱子的概率有多大?
以下,A代表甲盒,R表示红球
当取出第一个红球的时候,
P(A|R)=P(R|A)*P(A)/P(R)
分别展开:
在甲盒子中取出红球的概率
P(R|A)=70/100=0.7
选择甲盒子的概率
P(A)=0.5
取出红球的概率(从两个盒子中),等于从甲盒子中取出红球的概率+从乙盒子中取出红球的概率
P(R)= 0.7*0.5+0.3*0.5=0.5
所以
P(A|R)=0.7*0.5/0.5=0.7
请注意,第一个红球的出现导致了我们对两个盒子的概率猜测发生了修正
现在甲盒子被选取的概率是0.7,当然乙盒子被选取的概率自然就是0.3
当第二个红球出现的时候
P(A)=0.7
P(R) = 0.7 * 0.7 +0.3*0.3 = 0.58
P(A|R) = 0.7 * 0.7 / 0.58 = 0.845
于是第二次迭代之后,甲盒子的概率称为了0.845
备注下,如果出现了绿球,则公式转变为
P(A|G)=P(G|A)*P(A)/P(G)
js代码
// 甲盒子和乙盒子的概率
var pa = .5;
var pb = .5;
// 其中的红绿球概率
var par=.7;
var pag =.3;
var pbr=.3;
var pbg=.7;
/*
calp = pa_ball * pa / pball
pa_ball -> 甲盒子中某球的概率
pa -> 甲盒子的概率
pball -> 某球的全概率
*/
function calp(pa_ball,pa,pball){
return pa_ball * pa / pball;
}
function calBall(color){
var pball;
var pa_ball;
if(color == 'red'){
pball = pa*par +pb*pbr;
pa_ball = par;
}else{
pball = pa*pag +pb*pbg;
pa_ball = pag;
}
pa = calp(pa_ball,pa,pball);
pb = 1-pa;
console.log('after '+color+' ball: ',pa);
}
for(var i=0;i<8;i++){
calBall('red');
}
for(var i=0;i<4;i++){
calBall('green');
}