首页 > 试题广场 >

韩信是汉高祖手下一名大将,据说他的数学也非常好,点兵时使用“

[问答题]

韩信是汉高祖手下一名大将,据说他的数学也非常好,点兵时使用“中国剩余定理”看余数就能得出手下共计N个士兵。近日,韩信对全军做了一次身体素质普查,得到了每一位士兵的身高体重等数据{x1,x2,…,xN},其中的每一个xi是由第i位士兵的身高体重等信息构成的向量。同时韩信发现,他的士兵是由来自河东和来自河西两部分组成,这两地的士兵在身高体重分布上有差别。假设两地身高体重数据分别满足一个正态分布,请给出一个算法从普查数据估计两地士兵比例。

设f(x)为一维高斯函数,f(x)=1/(sqrt(2*pi)*sigma)*(e**((x-u)**2)/(2*sigma**2)) 这道题考的是EM算法,需要通过迭代的方式才能得到答案。 首先如果我们知道每一个样本来自于哪一个分布,即改名士兵是来自于河西还是河东,那么使用极大似然估计就可以得到河西和河西士兵 身高分布。 
取河东为例,具体做法如下:(图片方向偏了,将就着看哈)

刚刚讲了如何通过确定的人员身高来获取高斯分布参数。你可能会问那我现在并不知道给定的分布中哪些士兵来自于河西哪些士兵来自于河东?基于此,
①我们可以事先给定一组参数(u1,sigma1),(u2,sigma2)来设定为河东与河西士兵身高分布的参数。
②通过给定的参数,对于任何一个样本xi,可以通过前面的概率公式f(x)计算出xi属于河东与河西的概率,这里取概率较大的那一类作为xi的Label。
③通过士兵的label将所有的士兵分配到两个组,河东与河西,然后依据极大似然估计的思想来计算两个分布的参数,得到一组新的(new_1,new_sigma1),(new_u2,new_sigma2),
如果你运气好,你发现(new_1,new_sigma1),(new_u2,new_sigma2)原先“夜观星象”+“掐指一算”得到的参数(u1,sigma1),(u2,sigma2)是相同的,那么此时就可以相信,这组参数就是所求的参数。但现实情况下,你可能运气没有那么好,所求的参数与原先参数不匹配,那应该怎么做呢?很简单,将计算出来的(new_1,new_sigma1),(new_u2,new_sigma2)替换(u1,sigma1),(u2,sigma2),并且依据该参数重新计算每一个士兵label,然后....。也就是(new_1,new_sigma1),(new_u2,new_sigma2)替换(u1,sigma1),(u2,sigma2)迭代执行上面的步骤②。那如何能停止呢?当(new_1,new_sigma1),(new_u2,new_sigma2)等于(u1,sigma1),(u2,sigma2)时,实际应用中可设置一个距离函数当
distance(x1,x2)<threshol时停止迭代。
发表于 2019-08-19 16:08:28 回复(2)

高斯混合分布,用EM算法

发表于 2019-06-23 23:32:09 回复(0)