理解极大似然估计与最大后验概率估计

概率和统计

概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。

概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。

最大似然估计(Maximum likelihood estimation, 简称 MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称 MAP)是很常用的两种参数估计方法

贝叶斯公式

P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ) P(A|B)=\frac{P(A)P(B|A)}{P(B)} P(AB)=P(B)P(A)P(BA)

这里可以把 P ( B ) P(B) P(B) 展开, 变为:

P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ∣ A ) P ( A ) + P ( B ∣ A ‾ ) P ( A ‾ ) P(A|B)=\frac{P(A)P(B|A)}{P(B|A)P(A)+P(B|\overline A)P(\overline A)} P(AB)=P(BA)P(A)+P(BA)P(A)P(A)P(BA)

贝叶斯公式就是在描述,你有多大把握能相信一件证据?(how much you can trust the evidence)

假如把 P ( A ) P(A) P(A) 设置为车被砸的概率, P ( B ) P(B) P(B) 设置为车警报响的概率

假如要求 P ( A ∣ B ) P(A|B) P(AB) 的值, 也就是车警报则车被砸了, 想要让这个的概率比较大, 为 1 最好了, 这样会过滤很多不必要的信息.

根据公式:

P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ∣ A ) P ( A ) + P ( B ∣ A ‾ ) P ( A ‾ ) P(A|B)=\frac{P(A)P(B|A)}{P(B|A)P(A)+P(B|\overline A)P(\overline A)} P(AB)=P(BA)P(A)+P(BA)P(A)P(A)P(BA)

假如 P ( B ∣ A ‾ ) P ( A ‾ ) P(B|\overline A)P(\overline A) P(BA)P(A)0 时, 则概率值为 1 , 也就是说其他因素不会引起车的警报

假如不要求它为 1, 就是个很大的概率值的话, 直观上可以想到让 P ( A ) P ( B ∣ A ) P(A)P(B|A) P(A)P(BA) 比较大, 但是首先 P ( A ) P(A) P(A) 不会很大, 即汽车被砸的概率本身就很小,则 P ( B ∣ A ) P ( A ) P(B|A)P(A) P(BA)P(A) 仍然很小, P ( A ∣ B ) P(A|B) P(AB) 还是大不起来。 这里 P ( A ) P(A) P(A) 即是常说的先验概率,如果A的先验概率很小,就算 P ( B ∣ A ) P(B∣A) P(BA) 较大,可能A的后验概率 P ( A ∣ B ) P(A∣B) P(AB) 还是不会大.

从这个角度思考贝叶斯公式:一个本来就难以发生的事情,就算出现某个证据和他强烈相关,也要谨慎。证据很可能来自别的虽然不是很相关,但发生概率较高的事情。

似然函数

对于一个似然函数 P ( x ∣ θ ) P(x|\theta) P(xθ) :

  • 输入有两个: x 表示某一个具体的数据, θ \theta θ 表示模型的参数

如果 θ 是已知确定的,x 是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点 x,其出现概率是多少。

如果 x 是已知确定的,θ 是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现 x 这个样本点的概率是多少。

最大似然估计

假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正反面出现的概率(记为 θ )各是多少?

  • 这是一个统计问题,解决统计问题需要数据.

于是我们拿这枚硬币抛了10次,得到的数据 x 0 x_0 x0 是:反正正正正反正正正反。我们想求的正面概率 θ 是模型参数,而抛硬币模型我们可以假设是 二项分布

那么,出现实验结果 x 0 x_0 x0(即反正正正正反正正正反)的似然函数是多少呢?

f ( x 0 , θ ) = ( 1 − θ ) × θ × θ × θ × θ × ( 1 − θ ) × θ × θ × θ × ( 1 − θ ) = θ 7 ( 1 − θ ) 3 = f ( θ ) f(x_0,θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ^7(1−θ)^3=f(θ) f(x0,θ)=(1θ)×θ×θ×θ×θ×(1θ)×θ×θ×θ×(1θ)=θ7(1θ)3=f(θ)

注意,这是个只关于 θ 的函数。而最大似然估计,顾名思义,就是要最大化这个函数。我们可以画出 f(θ) 的图像

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 100)
y = (x**7)*(1-x)**3
plt.plot(x, y)
plt.show()

在这里插入图片描述

可以看出,在 θ=0.7 时,似然函数取得最大值。

这样,我们已经完成了对 θ 的最大似然估计。即,抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7。

且慢,一些人可能会说,硬币一般都是均匀的啊! 就算你做实验发现结果是“反正正正正反正正正反”,我也不信 θ=0.7。

这里就包含了贝叶斯学派的思想了——要考虑先验概率。 为此,引入了最大后验概率估计

最大后验概率估计

  • 最大似然估计是求参数 θ, 使似然函数 P ( x 0 ∣ θ ) P(x_0 | \theta) P(x0θ) 最大 。(在某个 θ \theta θ 下可以使结果最可能)

  • 最大后验概率估计则是想求 θ \theta θ 使 P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0θ)P(θ) 最 大 。求得的 θ \theta θ 不单单让似然函数大, θ \theta θ 自己出现的先验概率也得大.(这有点像正则化里加惩罚项的思想,不过正则化里是利用加法,而MAP里是利用乘法

MAP其实是在最大化 P ( θ ∣ x 0 ) = P ( x 0 ∣ θ ) P ( θ ) P ( x 0 ) P(\theta|x_0) = \frac{P(x_0|\theta)P(\theta)}{P(x_0)} P(θx0)=P(x0)P(x0θ)P(θ), 不过因为 x 0 x_0 x0 是确定的(即投出的“反正正正正反正正正反”), P ( x 0 ) P(x_0) P(x0) 是一个已知值,所以去掉了分母 P ( x 0 ) P(x_0) P(x0) (假设“投10次硬币”是一次实验,实验做了1000次,“反正正正正反正正正反”出现了n次,则 P ( x 0 ) = n / 1000 P(x_0) = n/1000 P(x0)=n/1000 。总之,这是一个可以由数据集得到的值)。

最大化 P ( θ ∣ x 0 ) P(\theta | x_0) P(θx0) 的意义也很明确, x 0 x_0 x0 已经出现了,要求 θ 取什么值使 P ( θ ∣ x 0 ) P(θ|x _0) P(θx0) 最大。顺带一提, P ( θ ∣ x 0 ) P(θ|x_0) P(θx0) 即后验概率,这就是“最大后验概率估计”名字的由来。

对于投硬币的例子来看,我们认为(”先验地知道“) θ 取0.5的概率很大,取其他值的概率小一些。我们用一个高斯分布来具体描述我们掌握的这个先验知识,例如假设 P(θ) 为均值0.5,方差0.1的高斯函数,如下图:

在这里插入图片描述

P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta)P(\theta) P(x0θ)P(θ) 的函数图像为:

在这里插入图片描述

注意,此时函数取最大值时, θ 取值已向左偏移,不再是0.7。实际上,在 θ=0.558 时函数取得了最大值。即,用最大后验概率估计,得到 θ=0.558

最后,那要怎样才能说服一个贝叶斯派相信 θ=0.7呢?你得多做点实验。。

如果做了1000次实验,其中700次都是正面向上,这时似然函数为:

在这里插入图片描述

如果仍然假设 P(θ) 为均值0.5,方差0.1的高斯函数, P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0θ)P(θ) 的函数图像为:

在这里插入图片描述

在 θ=0.696 处, P ( x 0 ∣ θ ) P ( θ ) P(x_0 | \theta) P(\theta) P(x0θ)P(θ) 取得最大值。

这样,就算一个考虑了先验概率的贝叶斯派,也不得不承认得把 θ 估计在0.7附近了。

PS. 要是遇上了顽固的贝叶斯派,认为 P(θ=0.5)=1 ,那就没得玩了。。 无论怎么做实验,使用MAP估计出来都是 θ=0.5。这也说明,一个合理的先验概率假设是很重要的。(通常,先验概率能从数据中直接分析得到)

最大似然估计和最大后验概率估计的区别

MAP就是多个作为因子的先验概率P ( θ ) P(\theta)P(θ)。或者,也可以反过来,认为MLE是把先验概率 P(θ) 认为等于1,即认为 θ 是均匀分布。

最大似然估计的一个例子

假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我 们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?

很多人马上就有答案了:70%。而其后的理论支撑是什么呢?

我们假设罐中白球的比例是p,那么黑球的比例就是1-p。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。

这里我们把一次抽出来球的颜色称为一次抽样。题目中在一百次抽样中,七十次是白球的,三十次为黑球事件的概率是P(样本结果|Model)。

如果第一次抽象的结果记为 x 1 x_1 x1 ,第二次抽样的结果记为 x 2 . . . . x_2.... x2.... 那么样本结果为 ( x 1 , x 2 . . . . . , x 100 ) (x_1,x_2.....,x_{100}) (x1,x2.....,x100) 。这样,我们可以得到如下表达式:

P(样本结果|Model)

= P ( x 1 , x 2 , … , x 100 ∣ M o d e l ) P(x_1,x_2,…,x_{100}|Model) P(x1,x2,,x100Model)

= P ( x 1 ∣ M ) P ( x 2 ∣ M ) … P ( x 100 ∣ M ) P(x_1|M)P(x2|M)…P(x_{100}|M) P(x1M)P(x2M)P(x100M)

= p 70 ( 1 − p ) 30 p^{70}(1-p)^{30} p70(1p)30.

好的,我们已经有了观察样本结果出现的概率表达式了。那么我们要求的模型的参数,也就是求的式中的p。

那么我们怎么来求这个p呢?

不同的p,直接导致P(样本结果|Model)的不同。

p实际上是有无数多种分布的。如下:

在这里插入图片描述

p的分布也可以是如下:

在这里插入图片描述

那么问题来了,既然有无数种分布可以选择,极大似然估计应该按照什么原则去选取这个分布呢?

答:采取的方法是让这个样本结果出现的可能性最大,也就是使得p70(1-p)30值最大,那么我们就可以看成是p的方程,求导即可!

参考链接

一文搞懂极大似然估计

猜你喜欢

转载自blog.csdn.net/landing_guy_/article/details/122825248
今日推荐