在统计学中,最大似然估计,也称为最大概似估计,是用来估计一个概率模型的参数的一种方法。
预备知识
概率密度函数
简单讲,就是一个概率分布在某一取值下对应的概率值。用维基百科的话来讲就是【在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。】以大家最为常见的正态分布函数为例~其概率分布函数为:
标准正态分布为:
函数如图:
这里写图片描述
似然函数
在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。“似然性”与“或然性”或“概率”意思相近,都是指某种事件发生的可能性,但是在统计学中,“似然性”和“或然性”或“概率”又有明确的区分。概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。
例如在已知某个参数
根据贝叶斯定理:
因此,我们可以反过来构造表示似然性的方法:已知有事件A发生,运用似然函数
极大似然估计原理
根据频率主义学派认为已知一个分布,虽然不知道分布的具体参数,但是却客观上存在固定的参数值。因此可以通过一些准则来确定参数值。这里介绍的极大似然估计就是一种根据采样来估计概率分布参数的经典方法。
最大似然估计会寻找关于
现在我们的工作就是最大化似然函数:
根据大数定律,当训练集包含充足的独立同分布 样本的时候,
现在我们需要根据所有可能
分别对
编程验证
下面通过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()