目录

1.最大似然估计的总体概念

2.基本概念与问题引出

3.最大似然估计原理

4.极大似然估计的公式[3]

5.极大似然估计的例子

参考文献


1.最大似然估计的总体概念

最大似然估计的功能:根据已有的数据(手中已经获取到的杂乱无章的数据,X的分布规律已知),估计模型的参数。其中这个参数可以是对应数据分布类型的均值、方差、协方差,也可以是系数向量

最大似然估计(Maximum Likelihood Estimate,MLE)似然也可以理解为可能性probability。

延伸一下,可以延伸至概率论(probabilty)和数理统计(statistics),两者是互逆的过程。概率论可以看成是由因推果,数理统计则是由果溯因[1]。

总结就是:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数[2]。

其中本文涉及到的基本概念有:似然函数,先验概率,后验概率,贝叶斯分类

2.基本概念与问题引出

在说最大似然函数的基本概念前,先看一个很不错的文献[3]中的例子。是最最基本的贝叶斯决策(Bayes Decision)的例子。为方便描述现搬运如下。

经典的贝叶斯公式为: 

其中:p(w)为先验概率,表示每种类别分布的概率;为类条件概率,表示在某种类别前提下,某事发生的概率;而为后验概率,表示某事发生了,并且它属于某一类别的概率,有了这个后验概率,我们就可以对样本进行分类。后验概率越大,说明某事物属于这个类别的可能性越大,我们越有理由把它归到这个类别下。

我们来看一个直观的例子:已知:在夏季,某公园男性穿凉鞋的概率为1/2,女性穿凉鞋的概率为2/3,并且该公园中男女比例通常为2:1,问题:若你在公园中随机遇到一个穿凉鞋的人,请问他的性别为男性或女性的概率分别为多少?从问题看,就是上面讲的,某事发生了,它属于某一类别的概率是多少?即后验概率。

设:

由已知可得:

男性和女性穿凉鞋相互独立,所以

(若只考虑分类问题,只需要比较后验概率的大小,的取值并不重要)。  由贝叶斯公式算出:

对应的图解为[5]:

其中:什么是先验概率,后验概率,似然函数?

通俗的讲,先验概率就是事情尚未发生前,我们对该事发生概率的估计,例如全概率公式中P(B)就是先验概率,求解方法有很多种,全概率公式是一种,也可以根据经验等,例如抛一枚硬币头向上的概率为0.5。

后验概率则是表示在事情已经发生的条件下,要求该事发生原因是有某个因素引起的可能性的大小。

先验概率是在缺乏某个事实的情况下描述一个变量;而后验概率(Probability of outcomes of an experiment after it has been performed and a certain event has occured.)是在考虑了一个事实之后的条件概率。

如《概率论与数理统计 第四版 浙江大学》P20的例子:根据统计得知机器的良好率为95%,当生产出产品后,更新机器良好率为97%,其中95%是未发生事件的概率,97%为发生事件后调整的概率。

通过贝叶斯公式,利用先验概率、似然函数可以计算出后验概率。

似然函数的在书本中的意思就是,可以当做联合分布来理解。

3.最大似然估计原理

但是在实际问题中并不都是这样幸运的,我们能获得的数据可能只有有限数目的样本数据,而先验概率和类条件概率(各类的总体分布)都是未知的。根据仅有的样本数据进行分类时,一种可行的办法是我们需要先对先验概率和类条件概率进行估计,然后再套用贝叶斯分类器。

先验概率的估计较简单,1、每个样本所属的自然状态都是已知的(有监督学习);2、依靠经验;3、用训练样本中各类出现的频率估计。

类条件概率的估计(非常难),原因包括:概率密度函数包含了一个随机变量的全部信息;样本数据可能不多;特征向量x的维度可能很大等等。总之要直接估计类条件概率的密度函数很难。解决的办法就是,把估计完全未知的概率密度转化为估计参数。这里就将概率密度估计问题转化为参数估计问题,极大似然估计就是一种参数估计方法。当然了,概率密度函数的选取很重要,模型正确,在样本区域无穷时,我们会得到较准确的估计值,如果模型都错了,那估计半天的参数,肯定也没啥意义了。

上面说到,参数估计问题只是实际问题求解过程中的一种简化方法(由于直接估计类条件概率密度函数很困难)。所以能够使用极大似然估计方法的样本必须需要满足一些前提假设。

重要前提:训练样本的分布能代表样本的真实分布。每个样本集中的样本都是所谓独立同分布的随机变量 (Independent Identical Distribution,iid条件),且有充分的训练样本。

极大似然估计的原理是[6]:概率大的事件在一次观测中更容易发生; 在一次观测中发生了的事件其概率应该大。 总结起来,最大似然估计的目的就是,利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值[3]。

极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

4.极大似然估计的公式[3]

由于样本集中的样本都是独立同分布,可以只考虑一类样本集D,来估计参数向量θ。记已知的样本集为:

似然函数(linkehood function):联合概率密度函数称为相对于的θ的似然函数。

如果是参数空间中能使似然函数最大的θ值,则应该是“最可能”的参数值,那么就是θ的极大似然估计量。它是样本集的函数,记作:

求解似然函数

ML估计:求使得出现该组样本的概率最大的θ值。

实际中为了便于分析,定义了对数似然函数:

4.1 未知参数只有一个(θ为标量)

在似然函数满足连续、可微的正则条件下,极大似然估计量是下面微分方程的解:

4.2 未知参数有多个(θ为向量)

则θ可表示为具有S个分量的未知向量:

记梯度算子:  

若似然函数满足连续可导的条件,则最大似然估计量就是如下方程的解。

方程的解只是一个估计值,只有在样本数趋于无限多的时候,它才会接近于真实值。

5.极大似然估计的例子

之前看过很棒的文章现在找不到了。。。难受。。。找到继续写

参考文献[2,3]中有详细的例子,不再赘述。

----------------------------分割线----------------------找到原来的那个文章[7]了------------------------------

文献[7]中表述如下:

一:频率学派和贝叶斯学派的区别? 
     首先讲下,在概率统计上,有两个学派,一个是频率学派,一个是贝叶斯学派,“最大”似然是频率学派提出的。为什么将最大用引号呢,因为似然函数是两个学派共有的。那频率学派和贝叶斯学派有什么根本的区别呢? 
     你从名字就可以看出来他们关心的就是我有多大把握去圈出那个“唯一”的真实参数。而贝叶斯学派恰恰相反,他们关心参数空间里的“每一个值”,因为他们觉得我们又没有上帝视角,怎么可能知道哪个值是正确的呢?所以参数空间里的每个值都有可能是真实模型使用的值,区别只是概率不同而已。最好诠释这种差别的例子就是想象如果你的后验分布是双峰的,频率学派的方法会去选这两个峰当中较高的那一个对应的值作为他们的最好猜测,而贝叶斯学派则会同时报告这两个值,并给出对应的概率。 
     在二十世纪之前,频率学派发展很迅速很快占据了概率统计半壁江山,现在很多本科教材大量的篇幅使用的都是频率学派的认识。而贝叶斯学派的东西只是一笔带过,很大程度上是因为在贝叶斯学派中很多推断都是基于概率分布,直到上世纪90年代依靠电子计算机的迅速发展,以及抽样算法的进步(GIBBS采样)使得对于任何模型任何先验分布都可以有效地求出后验分布,贝叶斯学派才重新回到人们的视线当中。
二:.什么叫似然函数,它从直觉意义上表示什么意思,为什么要进行“最大”似然估计?为什么在最优化的时候需要取log? 
2.1  什么叫似然函数?为什么进行最大似然估计? 
    似然的意思是可能性,它的意思和possibility的意思是一样的。 
给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率:

首先它表示的是所有样本同时发生的概率,而为什么需要最大的呢,因为当你样本已经拿到你手上了,即表示这个事件已经发生了,那么最大化,这个事件的概率,从而得到参数θ,在直觉上是有道理的。 
 2.2 为什么需要取log? 
     那么为什么在最优化的时候需要取log呢?有两点原因。 
     1.为了求解简单,在求导的时候。 
     2.为了避免数值的下溢。因为L(θ|x)是由很多概率相乘,而每个概率都是小于一的,如果样本量很大的时候,那么很容易导致L(θ|x)非常非常的小。 
2.3 一个例子 
    举个例子,在历史上有很多人比价有探(zhi)索(zhang)性,有很多数学家做过相关的实验,比如: 
德摩根: 实验次数:4092  正面次数:2048 
蒲丰:   实验次数:4040  正面次数:2048 
费勒:   实验次数:10000 正面次数:4979 
罗曼诺夫斯基 :实验次数:80640 正面次数:39699

上面几位老哥,当然要数罗曼诺夫斯基,这位老哥掷了80640次,很执着,为了探索冥冥之中操纵自然规律的上帝。
    下面我们用python求出,罗曼诺夫斯基掷了80640次,的似然函数,及相应的最大值!!!
求解:p:表示正面的概率,1-p:表示反面的概率。

对似然函数取log得到如下公式:

python代码为:

import math
import matplotlib.pyplot as pltdef iandfrange(start, *args):"""输入:函数可接收最多三个参数,依次分别是起始值,结束值和步长,可以做任意整数和小数的range功能输出:返回值为包含起始值的,以起始值迭代加步长,直到最后一个<=结束值的值为止的一个列表约定:1.如果只传入2个参数,自动匹配给起始值和结束值,步长默认为12.如果只传入1个参数,自动匹配给结束值,起始值默认为0,步长默认为1"""try:args[2]except Exception as e:passelse:raise Exception(ValueError, "The function receive three args!")# 保证传入的3个参数能正确匹配到start,end和step三个变量上try:end, step = args[0], args[1]except IndexError:try:end = args[0]except IndexError:end = startstart = 0finally:step = 1# 参数正确性校验,包括对step是否是int或float的校验,提示用户输出数据可能只有start的校验以及start>=end的情况try:try:a, b = str(step).split(".")roundstep = len(b)except Exception as e:if isinstance(step, int):roundstep = 0else:raise Exception(TypeError, "Sorry,the function not support the step type except integer or float!")if start + step >= end:print("The result list may include the 'start' value only!")if start >= end:raise Exception(ValueError,"Please check you 'start' and 'end' value,may the 'start' greater or equle the 'end'!")except TypeError as e:print(e)else:pass# 输出range序列lista = []while start < end:lista.append(start)start = round(start + step, roundstep)return lista# 最大似然函数
X = []
Y = []
def possibility():result = {}X = iandfrange(0.1, 1, 0.01)for i in X:y = 39640*math.log(i)+(80640-39640)*math.log(1-i) # 罗曼诺夫斯基投硬币,求其正面的概率Y.append(y)result[i] = Yprint(result)y_max = max(Y)x_max = X[Y.index(y_max)]print(x_max)print("正在画图:")# 衡坐标表示每一个工作,纵坐标表示real_runtime 与 pred_runtimeprint(len(X))print(len(Y))plt.scatter(X, Y, s=5, c="b")  # 蓝色实际runtime# plt.scatter(list(range(100, 200)), Y[100:200], s=5, c="m")  # 酒红色预测runtime# plt.plot(x, y_hat)plt.show()if __name__=="__main__":possibility()

运行结果为:

p=0.49

参考文献

[1] 伯努利分布的最大似然估计:https://www.cnblogs.com/canyangfeixue/p/9274141.html

[2] 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解:http://blog.csdn.net/u011508640/article/details/72815981

[3]极大似然估计详解:https://blog.csdn.net/zengxiantao1994/article/details/72787849

[4] 贝叶斯公式的直观理解(先验概率/后验概率):https://www.cnblogs.com/yemanxiaozu/p/7680761.html

[5] 先验概率、后验概率、条件概率:https://blog.csdn.net/cxroom/article/details/41452337

[6] 最大似然函数最大似然原理小结:最大似然估计法的一般步骤:例子:https://cloud.tencent.com/developer/article/1144944

[7] 全面理解似然函数与贝叶斯公式: https://blog.csdn.net/baidu_15238925/article/details/81291281

0基础看-最大似然函数,原理,基本概念,例子相关推荐

  1. 一篇解双链表(0基础看)(C语言)《数据结构与算法》

    目录 序言 带头双向循环链表 1. 概念 2. 效果展示图 3. 接口实现 3.01. 本文章要实现的接口 ​3.02. 双链表的实现 3.03. 双链表的初始化 3.04. 打印链表 3.05. 动 ...

  2. 一篇解单链表(0基础看)(C语言)《数据结构与算法》

    目录 链表 1. 链表的概念及结构 2. 链表的分类 2.1. 单向或者双向 ​2.2. 带头或者不带头 ​2.3. 循环或者非循环 2.4. 虽然有这么多的链表的结构,但是我们实际中最常用还是两种结 ...

  3. 0基础学python看什么书-0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  4. 四二拍用音符怎么表示_每个音符都是赞美歌拍子分析 0基础识简谱每日必看

    点击上方蓝字  关注我们 拍子状态分析是为了帮助0基础家人识谱用的,一首诗歌拿在手上只所以看起来复杂,是这些节奏让人眼花缭乱,其实真正理解了其中的含义,就会感觉豁然开朗,此种方法是掌握节奏型的捷径,不 ...

  5. STM32驱动开发(二)--USB Device RNDIS虚拟网卡(USB2.0 基础概念讲解)

    STM32驱动开发(二)–USB Device RNDIS虚拟网卡(USB2.0基础概念讲解) 一.简介   本文基于stm32 Rndis实例,github开源, 使用STM32F407单板.结合协 ...

  6. Hexo+GitHub Pages搭建个人博客( 0 基础、小白值得一看--实力软文!)- 初行ᵀᵀᴴ

    文章目录 **写在之前** 一.搭建前的准备工作 - 安装工具 1.1 附上工具链接 1.2 Git 1.3 Node.js 1.4 GitHub Desktop 1.5 Notepad++ 1.6 ...

  7. 0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  8. 学python就业要看哪些书-编程0基础自学Python,踩完这些坑,我才成功就业!

    " 0基础小白学Python的路程不易,但总有一些思路和方法值得借鉴,知道这些能让我们少走很多弯路. 今天我们就来分享2位前辈的学习经验和方法. 零基础学编程的方法 回忆一下我自己学习计算机 ...

  9. 0基础编程资源大全(先收藏~慢慢看~)

    本篇文章,要认真耐心的阅读!涵盖了0基础小白学编程的全部内容.先收藏好,后续慢慢看. 2022年新全学科学习路线图所含视频教程,均按照学科最新的技术方向精选而来,从0基础入门,到实战精通,及面试就业一 ...

  10. 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)

    1.冒泡排序 冒泡排序的基本原理 对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟.当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数 ...

最新文章

  1. 是谁卖了我的信息资料?
  2. Linux多用户、多任务的特性
  3. C# socket 解析http 协议
  4. iOS开发系列--网络开发(转)
  5. Python 微信机器人:调用电脑摄像头时时监控功能实现演示,调用电脑摄像头进行拍照并保存
  6. matlab 范德蒙德矩阵,Matlab中fft与fwelch有什么区别?如何用fft求功率谱?
  7. Intellij IDEA的java环境与安卓sdk配置实例教程
  8. NT下如何彻底删除Oracle?
  9. 家庭水族馆,智能加热棒解决方案
  10. Oracle 高效学习的方法论
  11. HCNE110个知识点
  12. STM32学习总结(二)
  13. 电脑不用下软件开wifi
  14. 小程序中时间计算(时、分、秒)
  15. 智能运维 | 我们不一样!告诉你百度云如何做智能流量异常检测
  16. CCNET的参考文件
  17. 51 单片机 程序 测量占空比 测量频率 频率计 占空比 proteus
  18. 车文化:1.BMW车型概览
  19. mysql 查手机尾数_Mysql条件查询2(根据手机尾号的后四位查询)
  20. 使用python的random()随机函数编写一个简单的双色球项目

热门文章

  1. 键盘轴体怎么选,HHKB键盘来告诉你
  2. 如何用matlab画超越方程组的图像,【求助】超越方程组的fsolve解法
  3. 网站链接被微信屏蔽拦截了怎么办?VJump帮你解除屏蔽
  4. python里面else什么意思_python中if else和if elif else有什么区别?
  5. Rust学习:3_变量绑定与解构
  6. Linux之常见面试题知识点批注(六)
  7. 网站排名不好的解决方法
  8. Javascript中的shift() 、unshift() 和 pop()、push()区别
  9. 实物补贴和货币补贴的权衡
  10. blastn 输出结果每列啥意思_本地blast的详细用法