[(机器学习)概率统计]极大似然估计MLE原理+python实现

在统计学中,最大似然估计,也称为最大概似估计,是用来估计一个概率模型的参数的一种方法。

预备知识

概率密度函数

简单讲,就是一个概率分布在某一取值下对应的概率值。用维基百科的话来讲就是【在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。】以大家最为常见的正态分布函数为例~其概率分布函数为:

f(x|u,σ2)=12πσ2exp((xu)22σ2)

标准正态分布为: x(0,1)
函数如图:
这里写图片描述
[(机器学习)概率统计]极大似然估计MLE原理+python实现_第1张图片

似然函数

在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。“似然性”与“或然性”或“概率”意思相近,都是指某种事件发生的可能性,但是在统计学中,“似然性”和“或然性”或“概率”又有明确的区分。概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。
例如在已知某个参数 θ 的情况下事件A会发生的概率写作:

p(A|θ)=p(A,θ)p(θ)

根据贝叶斯定理:
p(θ|A)=p(A|θ)p(θ)p(A)

因此,我们可以反过来构造表示似然性的方法:已知有事件A发生,运用似然函数 L(θ|A) 我们估计参数B的可能性。

极大似然估计原理

根据频率主义学派认为已知一个分布,虽然不知道分布的具体参数,但是却客观上存在固定的参数值。因此可以通过一些准则来确定参数值。这里介绍的极大似然估计就是一种根据采样来估计概率分布参数的经典方法。

最大似然估计会寻找关于 θ 的最可能的值(即,在所有可能的 θ 取值中,寻找一个值使这个采样的“可能性”最大化,相当于是价用概率密度函数参数去拟合采样的结果)。
现在我们的工作就是最大化似然函数:

p(θ|A)=p(A|θ)p(θ)p(A)

根据大数定律,当训练集包含充足的独立同分布 样本的时候, P(A) 可以通过各类和样本出现的频率来进行估计。在这里,已知样本之后,我们就可以估算出 P(A) 的值,并将其当做固定值处理。
现在我们需要根据所有可能 θ 的取值,选取一个让 p(θ|A) 最大化的值。这里还是以正态分布为例。为了简化运算,我们对似然函数取对数。最大化一个似然函数同最大化它的自然对数是等价的。因为自然对数log是一个连续且在似然函数的值域内严格递增的上凸函数。

[(机器学习)概率统计]极大似然估计MLE原理+python实现_第2张图片

分别对 θu 求导:
[(机器学习)概率统计]极大似然估计MLE原理+python实现_第3张图片

编程验证

下面通过python 3.5 + numpy 验证上述的证明过程,还是以正态分布为例。

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
mu = 30  # mean of distribution
sigma = 2  # standard deviation of distribution
x = mu + sigma * np.random.randn(10000)


def mle(x):
    """
    极大似然估计
    :param x:
    :return:
    """
    u = np.mean(x)
    return u, np.sqrt(np.dot(x - u, (x - u).T) / x.shape[0])


print(mle(x))
num_bins = 100
plt.hist(x, num_bins)
plt.show()

[(机器学习)概率统计]极大似然估计MLE原理+python实现_第4张图片

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