机器学习系列之极大似然估计(MLE)

核心

统计学中,极大似然估计(Maximum Likelihood Estimation)是用来估计模型参数的一种方法,就是利用已知样本的结果信息,反推出最有可能导致这样结果的模型参数值。一般情况下,我们用 θ \theta θ 来表示模型的参数,所以解决问题的本质就是求 θ \theta θ

举例1

现在假设有一枚不均匀的硬币,然后我们做了100次实验,一共60次正面,40次反面;我们设 θ \theta θ 为硬币朝上的概率。

现在假设 θ = 0.5 \theta = 0.5 θ=0.5 ,则导致该结果的概率为: P ( X = 60 ) = C 100 60 0. 5 60 ( 1 − 0.5 ) 40 ≈ 0.0108 P(X=60)=C_{100}^{60}0.5^{60}(1-0.5)^{40} \approx 0.0108 P(X=60)=C100600.560(10.5)400.0108
现在假设 θ = 0.6 \theta = 0.6 θ=0.6 ,则导致该结果的概率为: P ( X = 60 ) = C 100 60 0. 6 60 ( 1 − 0.6 ) 40 ≈ 0.0812 P(X=60)=C_{100}^{60}0.6^{60}(1-0.6)^{40} \approx 0.0812 P(X=60)=C100600.660(10.6)400.0812
注意开头写的,我们需要得出最有可能导致这样结果的模型参数值,从上面的计算可以看出 θ = 0.6 \theta = 0.6 θ=0.6 时产生这种结果的概率要比 θ = 0.5 \theta = 0.5 θ=0.5 时高得多。

上面只是对比了 θ \theta θ 为不同值时,产生该结果概率的差异。为了求出 θ \theta θ 的具体值,我们应先写出似然函数 L ( θ ) = C 100 60 θ 60 ( 1 − θ ) 40 L(\theta) = C_{100}^{60}{\theta}^{60}(1 - {\theta})^{40} L(θ)=C10060θ60(1θ)40
也就是我们需要求出一个 θ \theta θ 使得 L ( θ ) L(\theta) L(θ)值最大,即最大化这个似然函数
θ M L E = a r g max ⁡ L ( θ ) \theta_{MLE} = arg\max L(\theta) θMLE=argmaxL(θ)这个式子正常求解就好。这个例子主要是为了方便大家理解什么是最大似然估计。

举例2

现在我们把上面的例子稍微扩展一下。假设我们做了三组实验,每组实验做了100次,其中,正面朝上的次数分别是50、60、70。这时,因为实验室独立的,我们可以写出似然函数: L ( θ ) = f ( 50 ∣ θ ) ∗ f ( 60 ∣ θ ) ∗ f ( 70 ∣ θ ) L(\theta) = f(50|\theta)*f(60|\theta)*f(70|\theta) L(θ)=f(50θ)f(60θ)f(70θ)在这个式子中: f ( x ∣ θ ) = P ( X = x ) = C 100 x θ x ( 1 − θ ) 100 − x f(x|\theta) = P(X=x) = C_{100}^{x}{\theta}^{x}(1-{\theta})^{100-x} f(xθ)=P(X=x)=C100xθx(1θ)100x一般化的,假如我们做了很多组实验,实验结果用分别用 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3…, x n x_n xn表示,则似然函数为: L ( θ ) = f ( x 1 ∣ θ ) f ( x 2 ∣ θ ) ⋯ f ( x n ∣ θ ) L(\theta) = f(x_1|{\theta})f(x_2|\theta)\cdots f(x_n|{\theta}) L(θ)=f(x1θ)f(x2θ)f(xnθ)然后来最大似然函数: θ M L E = a r g max ⁡ L ( θ ) = a r g max ⁡ ( f ( x 1 ∣ θ ) f ( x 2 ∣ θ ) ⋯ f ( x n ∣ θ ) ) \theta_{MLE} = arg\max L(\theta) = arg\max (f(x_1|{\theta})f(x_2|\theta)\cdots f(x_n|{\theta})) θMLE=argmaxL(θ)=argmax(f(x1θ)f(x2θ)f(xnθ))解这个式子的时候一般先取个对数,将连乘变为连加。这个例子主要想说明最大似然可以从很多组样本中来反推出合适的模型参数,下面我们看一个更经典的例子。

正态分布的极大似然估计

现给定一组样本 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3…, x n x_n xn,已知它们来自于高斯分布 N ( μ ∣ σ ) N(\mu|\sigma) N(μσ),也就是我们已知观察结果和模型,不知道参数 μ \mu μ σ \sigma σ,现在需要估算 μ \mu μ σ \sigma σ,首先我们写出高斯分布的概率密度函数:
f ( x ) = 1 2 π σ e ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^\frac{(x-\mu)^2}{2\sigma^2} f(x)=2π σ1e2σ2(xμ)2
同样的,我们写出似然函数(为了方便运算,我直接取了对数):
L ( x ) = log ⁡ ∏ i = 1 n 1 2 π σ e ( x i − μ ) 2 2 σ 2 = ∑ i = 1 n l o g 1 2 π σ e ( x i − μ ) 2 2 σ 2 = ∑ i = 1 n log ⁡ 1 2 π σ + ∑ i = 1 n − ( x i − μ ) 2 2 σ 2 = − n 2 log ⁡ 2 π σ 2 − 1 2 σ 2 ∑ i = 1 n ( x i − μ ) 2 \begin{aligned} L(x) &= \log \prod\limits_{i = 1}^n {\frac{1}{{\sqrt {2\pi } \sigma }}{e^{\frac{{{{({x_i} - \mu )}^2}}}{{2{\sigma ^2}}}}}} \\\\ &= \sum\limits_{i = 1}^n l og\frac{1}{{\sqrt {2\pi } \sigma }}{e^{\frac{{{{({x_i} - \mu )}^2}}}{{2{\sigma ^2}}}}}\\\\ &= \sum_{i=1}^{n}{\log{\frac{1}{\sqrt{2\pi}\sigma}}} + \sum_{i=1}^{n}-{\frac{(x_i - \mu)^2}{2{\sigma}^2}}\\ \\ &= -\frac{n}{2}\log{2\pi {\sigma}^2} - \frac{1}{2{\sigma}^2}{\sum_{i=1}^{n}(x_i - \mu)^2} \end{aligned} L(x)=logi=1n2π σ1e2σ2(xiμ)2=i=1nlog2π σ1e2σ2(xiμ)2=i=1nlog2π σ1+i=1n2σ2(xiμ)2=2nlog2πσ22σ21i=1n(xiμ)2
然后将目标函数对参数 μ \mu μ σ \sigma σ 求偏导,具体过程就不写了,很容易得到:
μ = 1 n ∑ i = 1 n x i \mu = \frac{1}{n}\sum_{i=1}^n x_i μ=n1i=1nxi
σ 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 {\sigma}^2 = \frac{1}{n}{\sum_{i=1}^n({x_i - \mu})^2} σ2=n1i=1n(xiμ)2
我们从式子中其实可以看出,所求得的均值 μ \mu μ 和方差 σ \sigma σ 也是符合我们的预想的,可以看出样本的均值也就是高斯分布的均值,样本的伪方差也是高斯分布的方差。敲了这么多公式来推正态分布的极大似然估计,是因为它很重要,后面别的博客还会用到它。

总结

总结起来就是:已知模型和观测数据X,对模型参数 θ \theta θ 做估计
θ M L E = a r g max ⁡ P ( X ∣ θ ) \theta_{MLE} = arg\max P(X|\theta) θMLE=argmaxP(Xθ)
更专业的说法是,最大似然是为了减少模型的概率分布 Q ( x ; θ ) Q(x; \theta) Q(x;θ) 与真实分布 P ( x ) P(x) P(x) 之间的差异:
θ M L E = a r g max ⁡ ∏ i = 1 m Q ( x i ; θ ) = a r g max ⁡ ∑ i = 1 m log ⁡ Q ( x i ; θ ) ≈ a r g max ⁡ E x ∼ P ( x ) [ log ⁡ Q ( x ; θ ) ] \begin{aligned} \theta_{MLE} &= arg\max \prod_{i=1}^m Q(x^i; \theta) \\\\ &= arg \max \sum_{i=1}^m \log Q(x^i; \theta) \\\\ &\approx arg\max E_{x \sim P(x)}[\log Q(x;\theta)] \end{aligned} θMLE=argmaxi=1mQ(xi;θ)=argmaxi=1mlogQ(xi;θ)argmaxExP(x)[logQ(x;θ)]

你可能感兴趣的:(机器学习系列)