极大似然估计是概率论中一个很常用的估计方法,在机器学习中的逻辑回归中就是基于它计算的损失函数,因此还是很有必要复习一下它的相关概念的。
背景
先来看看几个小例子:
- 猎人师傅和徒弟一同去打猎,遇到一只兔子,师傅和徒弟同时放枪,兔子被击中一枪,那么是师傅打中的,还是徒弟打中的?
- 一个袋子中总共有黑白两种颜色100个球,其中一种颜色90个,随机取出一个球,发现是黑球。那么是黑色球90个?还是白色球90个?
看着两个小故事,不知道有没有发现什么规律...由于师傅的枪法一般都高于徒弟,因此我们猜测兔子是被师傅打中的。随机抽取一个球,是黑色的,说明黑色抽中的概率最大,因此猜测90个的是黑色球。
他们有一个共同点,就是我们的猜测(估计),都是基于一个理论:概率最大的事件,最可能发生
其实我们生活中无时无刻不在使用这种方法,只是不知道它在数学中是如何确定或者推导的。而在数理统计中,它有一个专业的名词:
极大似然估计(maximum likelihood estimation, MLE),通俗的说就是 —— 最像估计法(最可能估计法)
数学过程
极大似然原理与数学表示
官方一点描述上面的过程,即:有n个实验结果,\({ A }_{ i }\)到\({ A }_{ n }\),如果\({ A }_{ j }\)发生了,则意味着\({ A }_{ j }\)发生的概率最大。
即,一次试验就发生的事件,这个事件本身发生概率最大
PS
举个例子,我们在学校衡量学习成绩的标准就是考试成绩,高考更是一考定终身的感觉。高考成绩的好坏,则可以当做一个学生能力的体现,虽然有的人考试紧张考砸了,有的人超常发挥了,但是从概率上来说,高考的成绩基本可以判断这个人的(学习)能力。基于极大似然的解释就是,我们高考的成绩很大程度上反应了平时的学习能力,因此考得好的(当前发生的事件),可以认为是学习好的(所有事件发生概率最大的)。
再抽象一点,如果事件发生是关于 \(\theta\) 参数的,那么一次事件放生时,样本为\({x}_{1},...{x}_{k}\),那么\(\hat { \theta } ({x}_{1},...{x}_{k})\)就是\(\theta\)的估计值。当\(\theta=\hat { \theta } ({x}_{1},...{x}_{k})\)时,当前样本发生的概率最大。
PS
再举个射箭的例子,在《权力的游戏》中有个场景,老徒利死的时候,尸体放在穿上,需要弓箭手在岸边发射火箭引燃。但是当时的艾德慕·徒利公爵射了三箭都没中,布林登·徒利实在看不下去了,通过旗帜判断风向,一箭命中!
因此箭能否射中靶心,不仅跟弓箭手的瞄准能力有关,还跟外界的风向有关系。假设不考虑人的因素,但看风向...同样的瞄准和力度,风太大不行、太小也不行....那我们给风的大小设置一个值为\(\theta\)。假设一名弓箭手射出了三只箭,分别是8环、6环、7环(即\({x}_{1}=8\),\({x}_{2}=6\),\({x}_{3}=7\)),当天风的大小为88。那么我们认为只有\(\theta=88\),发生上面事件的概率最大。
极大似然估计法
如果总体X为离散型
假设分布率为\(P=p(x;\theta )\),x是发生的样本,\(\theta\)是代估计的参数,\(p(x;\theta)\)表示估计参数为\(\theta\)时,发生x的的概率。
那么当我们的样本值为:\({x}_{1},{x}_{2},...,{x}_{n}\)时,
\[
L(\theta )=L({ x }_{ 1 },{ x }_{ 2 },...,{ x }_{ n };\theta )=\prod _{ i=1 }^{ n }{ p({ x }_{ i };\theta ) }
\]
其中\(L(\theta)\)成为样本的似然函数。
假设
\[
L({ x }_{ 1 },{ x }_{ 2 },...,{ x }_{ n };\hat { \theta } )=\underset { \theta \in \Theta }{ max } L({ x }_{ 1 },{ x }_{ 2 },...,{ x }_{ n };\theta )
\]
有 \(\hat{\theta}\) 使得 \(L(\theta)\) 的取值最大,那么 \(\hat {\theta}\)就叫做参数 \(\theta\) 的极大似然估计值。
如果总体X为连续型
基本和上面类似,只是概率密度为\(f(x;\theta)\),替代p。
解法
- 构造似然函数\(L(\theta)\)
- 取对数:\(lnL(\theta)\)
- 求导,计算极值
- 解方程,得到\(\theta\)
解释一下,其他的步骤很好理解,第二步取对数是为什么呢?
因为根据前面你的似然函数公式,是一堆的数字相乘,这种算法求导会非常麻烦,而取对数是一种很方便的手段:
- 由于ln对数属于单调递增函数,因此不会改变极值点
- 由于对数的计算法则:\(ln{ a }^{ b }=blna\)、\(lnab=lna+lnb\) ,求导就很方便了
例子这里就不举了,感兴趣的话,可以看看参考的第二篇里面有好几个求解极大似然估计的例子。