使用统计学习计算选出所有牌有效且没有无效牌的概率

来源:互联网 发布:java nanotime 唯一 编辑:程序博客网 时间:2024/06/11 12:44

题目:桌面上有六张扣着的牌,其中三张牌的信息是有效的,三张牌的信息是无效的。一个人在不知道有多少张有效信息牌数的情况下,让他一次性选择 N 张牌,请问他一次性选出所有有效牌且没有无效牌的概率是多少?第一次算的是C(3,n)/C(6,n),当然这道题目最终想要的应该是一个值才对,但是问题来了,按照统计学习的思想,题目中并没有给出先验分布,也就是说N服从什么分布,如果N服从均匀分布,那么结果就是1/6*1/2+1/6*C(3,2)/C(6,2)+1/6*C(3,3)/C(6,3) = 1/8
但是如果换是你来,你会假设N服从均匀分布吗?N不应该服从均匀分布啊,但是我们可以知道N服从的分布跟六张牌的分布有关系,六张牌满足伯努利分布,假设这六张牌每张牌为有信息的可能性相同,且都为p(这是第一个假设**),那么某一种组合(比如该组合中有a个有信息的牌,6-a个没有信息的牌)出现的概率跟这个数成正比 p的a次方乘以(1-p)的(6-a)次方。那么在出现a个有信息牌的组合下,选多少个牌选中的概率最大,那么你就会选多少个牌。但是我们知道一个规律C(a,n)/C(6,n) = a*(a-1)(a-n+1)/6*(6-1)(6-n+1),随着n值得增加最终计算的结果越小,所以不管a为多少,作为一个聪明的人都应该从里面挑一张牌,也就是我会让N = 1, 这时候最终算出来的概率就是1/2.
后面的文字只管叙述自己的思想,具体公式推导会在后面通过笔算的方法展示出来。通过上面的描述我们知道m张牌里面有a张牌是有效信息的事件概率为P(a),那么在a发生N=i的前提条件下抽出的i张牌全部是有效的事件为p(true|i,a)。那么N=i的前提条件下抽出的i张牌全部是有效的而且所有牌里面有a张是有信息的概率为p(true,a|i) = p(true|i,a)* P(a)。p(true|i)= p(true,a|i)在a上的积分。在知道p(true|i)的前提条件下,只需要算出极大值就可以了,极大值对应的i就是N应该取得值。
公式如下:
这里写图片描述
在这个题目中因为刚好p(true|i,a)是单调的,所以不管a取任何值得时候i取1总是求得最大概率。但是针对更一般的解法,如果p(true|i,a)是一个不单调的函数呢,这样就要使用刚才推导的方法,最终计算出p(true|i),然后求使p(true|i)最大的时候i的表达式,当然这时候的i是与我们的第一个假设p相关,当然全文也就使用到了一个假设(这六张牌每张牌为有信息的可能性相同,且都为p)
根据p(true|i,a)的形式求出的最终结果肯定是不一样的,这里就不针对每一种p(true|i,a)来具体讨论最终计算出来的i了