概率不均等时如何掷硬币

掷硬币大家都知道,正常情况下硬币掷出正反面的概率均等,在猜输赢的时候,大家各选一面,掷出硬币之后,获胜的概率是均等的。

可是如果硬币掷出正反面的概率是不均等的呢? 比如一枚硬币,掷出正面的概率是70%,掷出反面的概率是30%,这时候应该如何才能让选正面和选反面有同样的获胜概率呢?冯诺依曼给出了一个很简单的解决方案,以掷两次硬币为一个单位来观察结果,那么就可能有下面两种情况出现:
1,两次结果相同,这时候,把这两次结果都舍弃,重新掷两次
2,两次结果不同,这时候,取第一次掷的结果,舍弃第二次掷的结果
理由很简单,先掷出正面再掷出反面和先掷出反面再掷出正面的概率是一样的,排除掉两次结果都相同的情况之后,那么只要取第一次的结果就可以了。维基百科上有关于这个的内容,http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin
首先,我们需要构建完整数据的似然函数,即将隐变量$\z$也考虑进去,得到完整数据似然函数为: $$ L_c(\theta) = \prod_{i=1}^N p(\x_i, \z_i | \theta) = \prod_{i=1}^N [p(\x_i | \z_i, \theta) \cdot p(\z_i)] $$ 其中,$p(\x_i | \z_i, \theta)$是已知选择了硬币$z_i$的情况下,观测到$x_i$的概率,即: $$ p(\x_i | \z_i, \theta) = \binom{M}{x_i} \theta_{z_i}^{x_i}(1-\theta_{z_i})^{M-x_i} $$ $p(\z_i)$是隐变量$\z_i$的先验分布,由于每次实验选择硬币概率均等,因此: $$ p(\z_i) = \begin{cases} 0.5 & \text{if } \z_i = A \\ 0.5 & \text{if } \z_i = B \\ \end{cases} $$ 对于EM算法,我们需要先求出完整数据的对数似然函数,即: $$ \begin{aligned} \ln L_c(\theta) &= \sum_{i=1}^N [\ln p(\x_i | \z_i, \theta) + \ln p(\z_i)] \\ &= \sum_{i=1}^N \left[\ln \binom{M}{x_i} + x_i \ln \theta_{z_i} + (M-x_i)\ln(1-\theta_{z_i}) + \ln 0.5 \right] \end{aligned} $$ 接下来,我们需要求在给定参数$\theta$下,隐变量$\z$的后验概率$p(\z_i | \x_i, \theta)$。根据贝叶斯公式: $$ p(\z_i | \x_i, \theta) = \frac{p(\x_i, \z_i | \theta)}{p(\x_i | \theta)} = \frac{p(\x_i | \z_i, \theta) \cdot p(\z_i)}{\sum_{\z_i} p(\x_i | \z_i, \theta) \cdot p(\z_i)} $$ 其中,分母是边缘概率,可以按照以下方式计算: $$ p(\x_i | \theta) = \sum_{\z_i} p(\x_i | \z_i, \theta) \cdot p(\z_i) $$ 然后,我们可以根据EM算法的求解步骤,依次进行E步和M步: 1. E步:在给定参数$\theta^t$的情况下,计算隐变量$\z$的后验概率$p(\z_i | \x_i, \theta^t)$。 2. M步:在给定隐变量的后验概率$p(\z_i | \x_i, \theta^t)$的情况下,计算参数的更新值$\theta^{t+1}$。 具体而言,在E步中,我们需要计算每个隐变量的后验概率: $$ \begin{aligned} p(z_i=A | \x_i, \theta^t) &= \frac{p(\x_i | z_i=A, \theta^t) \cdot p(z_i=A)}{p(\x_i | \theta^t)} \\ &= \frac{\binom{M}{x_i} \theta^t_A}{\binom{M}{x_i} \theta^t_A + \binom{M}{x_i} \theta^t_B} \\ &= \frac{\theta^t_A}{\theta^t_A + \theta^t_B} \end{aligned} $$ $$ \begin{aligned} p(z_i=B | \x_i, \theta^t) &= \frac{p(\x_i | z_i=B, \theta^t) \cdot p(z_i=B)}{p(\x_i | \theta^t)} \\ &= \frac{\binom{M}{x_i} \theta^t_B}{\binom{M}{x_i} \theta^t_A + \binom{M}{x_i} \theta^t_B} \\ &= \frac{\theta^t_B}{\theta^t_A + \theta^t_B} \end{aligned} $$ 在M步中,我们需要计算参数的更新值。对于硬币$A$,我们可以将完整数据的对数似然函数对$\theta_A$求导数,并令其等于$0$,得到: $$ \frac{\partial \ln L_c(\theta)}{\partial \theta_A} = \sum_{i=1}^N\left[\frac{x_i}{\theta_A} - \frac{M-x_i}{1-\theta_A}\right] = 0 $$ 化简后得到: $$ \theta_A^{t+1} = \frac{\sum_{i=1}^N p(z_i=A | \x_i, \theta^t) x_i}{\sum_{i=1}^N p(z_i=A | \x_i, \theta^t) M} $$ 同理,对于硬币$B$,我们可以得到: $$ \theta_B^{t+1} = \frac{\sum_{i=1}^N p(z_i=B | \x_i, \theta^t) x_i}{\sum_{i=1}^N p(z_i=B | \x_i, \theta^t) M} $$ 根据以上推导,我们可以使用EM算法对参数$\theta$进行估计,具体实现过程可以参考下面的Python代码:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值