机器学习之概率分布1

来源:互联网 发布:win2003安装node.js 编辑:程序博客网 时间:2024/05/17 07:06

机器学习-概率分布-伯努利分布

概率论在机器学习领域发挥了重要的作用。目前机器学习的很多方法本质上是统计学习,而统计学习的本质则是概率论。在概率论中概率分布是一个非常重要的工具。概率分布 p(x) 描述的是随机变量 x 的概率密度分布。
首先介绍最简单的一种分布-伯努利分布。变量 x{0,1} 即变量 x 要么为 1 要么为 0。真实世界中的一个例子是抛硬币,设硬币正面朝上表示 1, 反面朝上表示为 0。假设硬币经过了特定设计,那么正面朝上的概率和反面朝上的概率是不一样的,设正面朝上的概率为μ,0<μ<1。那么我们抛一次硬币,正面朝上的概率可表示为:

p(x=1|μ)=u

同理,反面朝上的概率为:
p(x=0|μ)=1u

因此,变量x的概率可写为:
p(x)=ux(1u)1x

假设我们抛硬币抛了N次,得到了N次结果D={x1,x2,,xN},那么这些观测变量的似然为:
p(D|μ)=n=1Np(xn|μ)=n=1Nuxn(1μ)1xn

我们可以通过最大似然来估计概率分布的参数μ。最大化似然等价于最大化对数似然。对上述求对数
lnp(D|μ)=n=1N{xnlnμ+(1xn)ln(1μ)}

最大化上面的对数似然就可以得到参数μ的最大似然估计。具体过程为:lnp(D|μ)mu求导并令其为0,可得:
0μ==n=1Nxn1μn=1N(1xn)11μ1Nn=1Nxn

我们用python来实现上述的参数估计过程,用scipy包中的bernoulli分布来生成样本,再根据这些样本估计bernoulli分布的参数。下面的代码表示bernoulli分布的参数为0.32,我们用这个分布生成了10000个样本。再用这10000个样本估计该分布的参数。看看估计出来的参数是多少。减少生成样本的个数(size),重新估计参数,看有什么变化。

代码

估计伯努利分布的参数:

from scipy.stats import bernoulli,poisson,norm,exponimport numpyX=bernoulli.rvs(0.32,size=10000) #根据伯努利分布来生成样本#mu=numpy.mean(X)#用样本来估计参数#print(mu)
原创粉丝点击