似然函数与极大似然估计

似然函数与极大似然估计

标签(空格分隔): ML

似然函数

  随机变量 X X X的概率分布已知,但是这个分布的参数是未知的,需要我们去估计,我们把他记作 θ \theta θ,好比在抛硬币的试验中,硬币正面朝上的概率是未知的,需要我们去估计,那么此时 θ \theta θ就代表了这个待估计的正面向上的概率值。

  随机变量 X X X的取值 x i x_i xi​表示抛掷 k k k次硬币,正面向上的次数,那么这个概率表示为:
P ( { X = x i } ) = C k x i θ x i ( 1 − θ ) k − x i P(\{X=x_i\}) = C_k^{x_i}\theta^{x_i}(1-\theta)^{k-x_i} P({X=xi​})=Ckxi​​θxi​(1−θ)k−xi​

  这里需要注意的是, k k k和 x i x_i xi​都是指定的、已知的,而参数 θ \theta θ是一个未知参数。因此在这个大的背景下,抛掷 k k k次,其中有 x i x_i xi​次向上的概率是关于一个未知参数 θ \theta θ的函数,我们把他写作是 P ( { X = x i } ) = p ( x i ; θ ) P(\{X=x_i\}) = p(x_i;\theta) P({X=xi​})=p(xi​;θ)。

  那么此时,我们做 n n n次这种实验,每次实验中,都是连续抛掷 k k k次硬币,统计正面出现的次数,这样就能取得一系列的样本: x 1 , x 2 , x 3 , … , x n x_1,x_2,x_3,\dots,x_n x1​,x2​,x3​,…,xn​,这些样本的取值之间满足相互独立,那么这一串样本取得上述取值 { X 1 = x 1 , X 2 = x 2 , X 3 = x 3 , … , X n = x n } \{X_1=x_1,X_2=x_2,X_3=x_3,\dots,X_n=x_n\} {X1​=x1​,X2​=x2​,X3​=x3​,…,Xn​=xn​}的联合概率为:
p ( x 1 ; θ ) ⋅ p ( x 2 ; θ ) ⋅ p ( x 3 ; θ ) ⋅ ⋯ ⋅ p ( x n ; θ ) p(x_1;\theta)\cdot p(x_2;\theta)\cdot p(x_3;\theta)\cdot\dots\cdot p(x_n;\theta) p(x1​;θ)⋅p(x2​;θ)⋅p(x3​;θ)⋅⋯⋅p(xn​;θ),用连乘符号写起来就是 ∏ i = 1 n p ( x i ; θ ) \prod \limits_{i=1}^n p(x_i;\theta) i=1∏n​p(xi​;θ)
  这是一个通用的表达式,实际上,他的未知数就是一个 θ \theta θ,而其他的 x i x_i xi​都是已知的样本值。
  由此,我们更换一个更加有针对性的写法:
L ( θ ) = L ( x 1 , x 2 , x 3 , … , x n ; θ ) = ∏ i = 1 n p ( x i ; θ ) L(\theta) = L(x_1,x_2,x_3,\dots,x_n;\theta) = \prod \limits_{i=1}^n p(x_i;\theta) L(θ)=L(x1​,x2​,x3​,…,xn​;θ)=i=1∏n​p(xi​;θ)

  那么, L ( θ ) = L ( x 1 , x 2 , x 3 , … , x n ; θ ) L(\theta) = L(x_1,x_2,x_3,\dots,x_n;\theta) L(θ)=L(x1​,x2​,x3​,…,xn​;θ)就是这一串已知样本值 x 1 , x 2 , x 3 , … , x n x_1,x_2,x_3,\dots,x_n x1​,x2​,x3​,…,xn​的似然函数,它描述了取得这一串指定样本值的概率值,而这个概率值完全由未知参数 θ \theta θ决定。这就是似然函数的由来。

  当然如果 X X X 是一个连续型的随机变量,我们只要相应的把离散型的概率质量函数替换成连续型的概率密度函数即可:
L ( θ ) = L ( x 1 , x 2 , x 3 , … , x n ; θ ) = ∏ i = 1 n f ( x i ; θ ) L(\theta) = L(x_1,x_2,x_3,\dots,x_n;\theta) = \prod \limits_{i=1}^n f(x_i;\theta) L(θ)=L(x1​,x2​,x3​,…,xn​;θ)=i=1∏n​f(xi​;θ)

极大似然估计:

  有了似然函数,我们就可以用似然函数来估计模型的参数了。我们要估计的模型的参数就是使似然函数取极大值的参数。
  那么问题就很简单了,对似然函数求导,使得导数为0的 θ \theta θ的取值,就是我们要找的极大似然估计值 θ ^ \hat{\theta} θ^。

  由于涉及到概率的连乘,而概率值都在 [ 0 , 1 ] [0,1] [0,1]之间,因此,概率的连乘将会变成一个很小的值,可能会引起浮点数下溢,尤其是当数据集很大的时候,联合概率会趋向于0,非常不利于之后的计算。
  所以我们通常会对似然函数取对数( f ( x ) f(x) f(x)转化为 l n ( f ( x ) ) ln(f(x)) ln(f(x))),因为对数函数单调递增的性质,所以
p ( x ∣ θ 1 ) > p ( x ∣ θ 2 ) ⇔ ln ⁡ p ( x ∣ θ 1 ) > ln ⁡ p ( x ∣ θ 2 ) p(x|\theta_1) > p(x|\theta_2) \Leftrightarrow \ln p(x|\theta_1) > \ln p(x|\theta_2) p(x∣θ1​)>p(x∣θ2​)⇔lnp(x∣θ1​)>lnp(x∣θ2​),因此似然函数的极大值与取对数后的似然函数的极大值是一样的,但是对于求解更方便,这样连乘就变成了连加。
  此时再对它求导就变的容易了,如果方程有唯一解,且是极大值点,那么我们就求得了极大似然估计值。
  如果有多个未知参数时,可以用偏导数分别对其求导,并建立方程组,最后解得这个方程组就可以了。

参考资料

如何理解似然函数
似然函数与极大似然估计

上一篇:C# 通过反射 XML 互转 Model 类


下一篇:fhq-treap模板