概率论简明教程_Chapter-02_最大似然估计
本文内容摘自:
https://medium.com/towards-data-science/probability-concepts-explained-maximum-likelihood-estimation-c7b4342fdbb1
参考翻译:链接
1. 什么是参数?
在机器学习中,我们经常使用模型描述从数据中观测结果的过程。例如,我们可能使用随机森林模型来分类客户是否会退订某项服务(称为客户翻转),也可能使用线性模型来基于广告开销预测利润(这将是线性回归的一个例子)。每个模型都包含各自的参数集合,参数集合最终定义了模型是什么样的。
- 例子: 我们可以用 y = m x + c y = mx + c y=mx+c 来表示线性模型。在这个例子中, x x x 可能表示广告开销, y y y 可能表示产生的利润。 m m m 和 c c c 是这个模型的参数。不同的参数值将给出不同的曲线(见下图)。
所以参数定义了模型的蓝图。只有当为参数选择了特定的值时,我们才能得到一个描述特定现象的模型实例。
2. 最大似然估计的直观解释
最大似然估计是一种估计模型参数值的方法。估计的参数值要能使模型所描述的过程产生实际观察到的数据的可能性最大化。
以上的定义可能仍然比较晦涩,所以让我们通过一个例子来理解这一概念。
- 例子: 假定我们从某一过程中观测到了10个数据点。这里的每个数据点表示一个学生回答一道考题的时长。
我们首先要决定,哪种模型是描述生成这些数据的最佳模型。这部分非常重要。至少,我们对使用哪种模型要有个概念。这通常源于某些专门的领域知识,不过,我们在这里不讨论这个。
我们假定这些数据生成的过程可以通过高斯(正态)分布描述。从上图我们可以观察到,10个点中的大部分都集中在中间,少数点散布在左侧和右侧,因此,使用高斯分布描述看起来会是一个不错的选择。(仅仅只有10个数据点的情况下就做出这样的决定实在是欠考虑,不过既然我们生成了这些数据点,就姑且这样吧。)
回忆一下,高斯分布有两个参数,均值 μ \mu μ 和标注差 σ \sigma σ。这两个参数的不同值将产生不同的曲线(见下图)。我们想知道哪条曲线最可能生成了我们观测到的10个数据点?。最大似然估计就是寻找拟合数据的最佳曲线的参数 μ \mu μ 和 σ \sigma σ 值的方法。
(10个数据点和可能的高斯分布。 f 1 f1 f1是均值为10、方差为2.25(方差等于标准差的平方)的正态分布,记为 f 1 ∼ N ( 10 , 2.25 ) f1 \sim N(10, 2.25) f1∼N(10,2.25)。 f 2 ∼ N ( 10 , 9 ) f2 \sim N(10, 9) f2∼N(10,9)、 f 3 ∼ N ( 10 , 0.25 ) f3 \sim N(10, 0.25) f3∼N(10,0.25) 和 f 4 ∼ N ( 8 , 2.25 ) f4 \sim N(8, 2.25) f4∼N(8,2.25)。最大似然的目的是找到参数值,使由这些参数值生成的分布可以最大化观测到数据的概率。)
生成数据的真正分布是 f 1 ∼ N ( 10 , 2.25 ) f1 \sim N(10, 2.25) f1∼N(10,2.25),也就是上图中蓝色的曲线。
3. 计算最大似然估计
既然我们已经有了对最大似然估计的直觉理解,我们可以继续学习如何计算参数值了。我们将找的值称为 最大似然估计(Maximum likelihood estimation, MLE)。
- 例子:我们假设有3个数据点,产生这3个数据点的过程可以通过高斯分布充分表达。这三个点分别是9、9.5、11。我们如何计算高斯分布的参数 μ \mu μ 和 σ \sigma σ 的最大似然估计呢?
我们想要计算的是观测到的所有数据的全概率,即所有观测到的数据点的联合概率分布。因此,我们需要计算一些条件概率,这可能会很困难。所以,这里我们将做出我们的第一个假设。我们假设每个数据点的生成和其他点是独立的。这一假设让数学计算变得容易很多。因为如果事件(即生成数据的过程)是独立的,那么观测到所有数据的全概率是分别观测到的每个数据点的概率的乘积(即边缘概率的乘积)。
观测到的单个数据点
x
x
x 的概率密度,即从高斯分布中产生的概率密度由以下公式计算:
P
(
x
;
μ
,
σ
)
=
1
σ
2
π
exp
(
−
(
x
−
μ
)
2
2
σ
2
)
P(x ; \mu, \sigma)=\frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)
P(x;μ,σ)=σ2π1exp(−2σ2(x−μ)2)
P
(
x
;
μ
,
σ
)
P(x ; \mu, \sigma)
P(x;μ,σ) 中的分号 ;
后面出现的符号是概率分布的参数。而不是条件概率(条件概率通常用竖线分割,例如
P
(
A
∣
B
)
P(A|B)
P(A∣B))
在上面的例子中,观测到的3个数据点的全(联合)概率为:
P ( 9 , 9.5 , 11 ; μ , σ ) = 1 σ 2 π exp ( − ( 9 − μ ) 2 2 σ 2 ) × 1 σ 2 π exp ( − ( 9.5 − μ ) 2 2 σ 2 ) × 1 σ 2 π exp ( − ( 11 − μ ) 2 2 σ 2 ) \begin{array}{r} P(9,9.5,11 ; \mu, \sigma)=\frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(9-\mu)^{2}}{2 \sigma^{2}}\right) \times \frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(9.5-\mu)^{2}}{2 \sigma^{2}}\right) \\ \times \frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(11-\mu)^{2}}{2 \sigma^{2}}\right) \end{array} P(9,9.5,11;μ,σ)=σ2π1exp(−2σ2(9−μ)2)×σ2π1exp(−2σ2(9.5−μ)2)×σ2π1exp(−2σ2(11−μ)2)
我们只需找出能最大化以上表达式的值的 μ \mu μ 和 σ \sigma σ 的值。
如果你的学过微积分的话,你大概能意识到有一个帮助我们找到函数的最大(最小)值的方法,叫做微分。我们只需找到函数的导数,将导数设为零,重新整理等式,将感兴趣的参数放到等式的左边。看,我们得到了参数的 MLE 值。下面将详细讲解这些步骤,不过会假设大家知道常见的函数如何求导。
3.1 对数似然
实际上,对上面的全概率表达式求导很麻烦。所以,我们基本上总是通过取自然对数对其加以简化。由于自然对数是单调递增函数,所以这么做没问题。单调递增函数意味着随着 x x x 轴的值增加, y y y 轴的值也同样增加(见下图)。这很重要,因为这确保了当概率的对数达到最大值时,原概率函数同样达到最大值。因此我们可以操作简化了的对数似然,而不是原本的似然。
下图是一个非单调函数的例子。
对原表达式取对数,我们得到:
ln
(
P
(
x
;
μ
,
σ
)
)
=
ln
(
1
σ
2
π
)
−
(
9
−
μ
)
2
2
σ
2
+
ln
(
1
σ
2
π
)
−
(
9.5
−
μ
)
2
2
σ
2
+
ln
(
1
σ
2
π
)
−
(
11
−
μ
)
2
2
σ
2
\begin{aligned} \ln (P(x ; \mu, \sigma))=\ln \left(\frac{1}{\sigma \sqrt{2 \pi}}\right)-\frac{(9-\mu)^{2}}{2 \sigma^{2}}+\ln \left(\frac{1}{\sigma \sqrt{2 \pi}}\right) &-\frac{(9.5-\mu)^{2}}{2 \sigma^{2}} \\ &+\ln \left(\frac{1}{\sigma \sqrt{2 \pi}}\right)-\frac{(11-\mu)^{2}}{2 \sigma^{2}} \end{aligned}
ln(P(x;μ,σ))=ln(σ2π1)−2σ2(9−μ)2+ln(σ2π1)−2σ2(9.5−μ)2+ln(σ2π1)−2σ2(11−μ)2
根据对数定律,上式可以简化为:
ln
(
P
(
x
;
μ
,
σ
)
)
=
−
3
ln
(
σ
)
−
3
2
ln
(
2
π
)
−
1
2
σ
2
[
(
9
−
μ
)
2
+
(
9.5
−
μ
)
2
+
(
11
−
μ
)
2
]
\ln (P(x ; \mu, \sigma))=-3 \ln (\sigma)-\frac{3}{2} \ln (2 \pi)-\frac{1}{2 \sigma^{2}}\left[(9-\mu)^{2}+(9.5-\mu)^{2}+(11-\mu)^{2}\right]
ln(P(x;μ,σ))=−3ln(σ)−23ln(2π)−2σ21[(9−μ)2+(9.5−μ)2+(11−μ)2]
接着,我们需要对以上表达式求导以找到最大值。在这个例子中,我们将寻找均值 μ \mu μ 的 MLE。为此,我们求函数关于 μ \mu μ 的偏导数:
∂ ln ( P ( x ; μ , σ ) ) ∂ μ = 1 σ 2 [ 9 + 9.5 + 11 − 3 μ ] \frac{\partial \ln (P(x ; \mu, \sigma))}{\partial \mu}=\frac{1}{\sigma^{2}}[9+9.5+11-3 \mu] ∂μ∂ln(P(x;μ,σ))=σ21[9+9.5+11−3μ]
最后,我们将等式的左半部分设为 0 0 0,将 μ \mu μ 移动到等式左边,整理后得到:
μ = 9 + 9.5 + 11 3 = 9.833 \mu = \frac{9+9.5+11}{3} = 9.833 μ=39+9.5+11=9.833
这样我们就得到了 μ \mu μ 的最大似然估计。同理,我们可以求得 σ \sigma σ 的最大似然估计。
3.2 讨论
a. 最大似然估计总是能以精确的方式解决吗?
短答案是 不。在现实世界的场景中,对数似然函数的导数往往难以解析(也就是说,手工求导太困难甚至不可能)。因此,常使用如最大期望算法之类的迭代计算的方法寻找参数估计的数值解。不过总体思路是一样的。
b. 为什么是最大似然,而不是最大概率?
好吧,这只是统计学家在卖弄学问(不过他们的理由很充分)。大部分人倾向于混用概率和似然,但是统计学家和概率论学者区分了两者。以下等式突显了两者之所以容易混淆的原因:
L
(
μ
,
σ
;
d
a
t
a
)
=
P
(
d
a
t
a
;
μ
,
σ
)
L(\mu, \sigma; data) = P(data; \mu, \sigma)
L(μ,σ;data)=P(data;μ,σ)
这两个表达式是相等的!所以,这意味着什么?
首先,让我们来定义 P ( d a t a ; μ , σ ) P(data; \mu, \sigma) P(data;μ,σ)。它的意思是"基于模型参数 μ \mu μ 和 σ \sigma σ 观测到数据的概率"。值得注意的是,我们可以将其推广到任意数目的参数和任意分布。
而, L ( μ , σ ; d a t a ) L(\mu, \sigma; data) L(μ,σ;data) 的意思是"我们已经观测到一组数据,参数 μ \mu μ 和 σ \sigma σ 取特定值的似然"。
上面两个表达式是相等意味着给定参数得到数据的概率等于给定数据得到参数的似然。然而,尽管两者相等,似然和概率根本上问的是不同的问题——一为数据,一为参数。这就是该方法称做最大似然而不是最大概率的原因。
c. 什么时候最小二乘法和最大似然估计是一样的?
最小二乘法(Least squares minimisation)是另一个估计机器学习模型参数值的常用方法。事实证明,当模型被假定为高斯模型(如上文中的例子)时候,MLE估计等价于最小二乘法。关于两者在数学上的深层渊源,可以参考这些幻灯片。
直观上,我们可以通过理解两者的目标来解释它们之间的联系。最小二乘法想要找到数据点和回归线之间的距离平方和最小的直线(见上图)。最大似然估计想要最大化数据的全概率。如果数据点符合高斯分布,那么当数据点接近均值时,我们就找到了最大概率。由于高斯分布是对称的,因此这等价于最小化数据点和均值之间的距离。