草庐IT

最大似然估计基础介绍

拍呀拍皮球 2023-03-28 原文

一、两个简单的栗子

第一颗栗子

有两个外形完全相同且不透明的黑箱子,甲箱子里装有99个白球和1个黑球,乙箱子里装有1个白球和99个黑球。一次试验里随机选中一个箱子,然后从中取出一个球发现是黑球。请问,这个箱子最有可能是哪个箱子?

很显然,人们最直观的感觉是这个黑球最有可能是从甲箱子里取出来的,因为甲箱子里的黑球多呀。这个推断符合人们的日常经验,这里的最有可能就是“最大似然(maximum-likelihood)”的意思,而这个问题答案背后的原理就是“最大似然原理”。

第二颗栗子

我们来看下用于决策的经典公式之一贝叶斯公式:

\[p( w | x ) = \frac{p( x | w ) \cdot p( w ) }{ p( x ) } \]

在机器学习当中,其中\(p(w)\)称为先验概率,\(p(x|w)\)称为类条件概率,\(p(w|x)\)称为后验概率,后验概率表示的某事发生了那该事件属于某一类的概率,这个概率越大我们越有理由把该事件划分到这一类中。

以上的表述比较抽象,我们用一个相对实际的例子说明下。夏天到了,我们想调查一下附近一个广场上穿凉鞋遛弯的情况。已知这个广场上男女比例大约在2:1,然后男生穿凉鞋出门的概率大约在1/2,而女生穿凉鞋出门的概率大约在2/3,这就是先验概率。我们看见前方有一个人脚上光溜溜的似乎是一双凉鞋,那么这个人是男生的概率是多少?是女生的概率是多少?

记广场上出现男生的概率\(p(w_1)=2/3\),出现女生的概率\(p(w_1)=1/3\)。记男生穿凉鞋的概率为\(p(x|w_1)=1/2\),女生穿穿凉鞋的概率为\(p(x|w_2)=2/3\),这就是条件概率。现在需要求解的概率实际上是后验概率\(p(w_1|x)\)\(p(w_2|x)\)

我们首先计算广场上有人穿凉鞋的概率:

\[p(x) =p(x|w_1)p(w_1) + p(x|w_2)p(w_2) = \frac{5}{9} \]

根据贝叶斯公式可得:

\[p(w_1|x) = \frac{p(x|w_1) \cdot p(w_1)}{p(x)} = \frac{3}{5} \\ p(w_2|x) = \frac{p(x|w_2) \cdot p(w_2)}{p(x)} = \frac{2}{5} \]

二、问题引出

以上的举例都比较简单,在实际问题并不都是这么幸运的,往往先验概率和条件概率都是未知的。根据仅有的样本数据进行分类时,一种可行的办法是我们需要先对先验概率和条件概率进行估计,然后再套用贝叶斯公式。像穿不穿凉鞋、是男是女这类离散有限随机变量的分布似乎还能通过统计来估计。如果是连续型随机变量,我们就要对它的概率密度进行估计。然而困难还不止于此,像卷积神经网络等机器学习算法中随机变量几乎都是多维的,也有可能出现样本数量有限的问题。

问题似乎有点棘手,但解决办法总会有的。既然估计随机变量的分布在某些情况下较难,我们不妨先假设随机变量服从某种分布,然后对分布参数进行估计,最后通过样本校验估计出的分布是否合适。在这种思路下,最大似然估计就是其中一种可行的方法。总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

三、最大似然估计的原理

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

对于随机变量\(X\),我们想要对它的分布进行估计。为此我们对X进行了n次观察获取了样本集\(D = \{x_1, x_2, ..., x_n \}\),其中每个样本都是独立同分布的。我们假设X服从参数为$ \theta$的某种分布并给出似然函数的定义:

定义1 (似然函数,likelihood function) 联合概率密度函数\(f(D| \theta)\)称为相对于样本集\(D = \{x_1, x_2, ..., x_n \}\)的$ \theta\(的似然函数,记为\)l( \theta)$:

\[l( \theta) = f(D| \theta) = \prod_{i=1}^n{f(x_i | \theta)} \]

如果\(\hat{\theta}\)是使似然函数$ l( \theta)\(最大的\) \theta\(值,则\)\hat{ \theta}\(是参数\) \theta\(的最大似然估计值,它最终应该是样本集的某个函数,即\)\theta(D)$。

四、求解最大似然函数

最大似然估计的过程就是求解参数$ \theta$为何值时似然函数取得最大值的过程,这个过程用以下公式来表示:

\[\hat{ \theta} = \mathop{\rm{arg}} \ \mathop{\rm{max}}\limits_{\theta} l(\theta) = \mathop{\rm{arg}} \ \mathop{\rm{max}}\limits_{\theta} \prod_{i=1}^n{f(x_i | \theta)} \]

为了便于分析,在实际分析过程中往往构造一种似然函数的对数形式(对数似然函数):

\[H(\theta) = ln(l(\theta)) \]

这样一来,求解过程可以转化为:

\[\hat{ \theta} = \mathop{\rm{arg}} \ \mathop{\rm{max}}\limits_{\theta} H(\theta) = \mathop{\rm{arg}} \ \mathop{\rm{max}}\limits_{\theta} \sum_{i=1}^n{ln(f(x_i | \theta))} \]

以下分两种情况讨论:

第一种: 当似然函数只有一个参数时,我们可以求导对数似然函数。在对数似然函数满足连续、可微的正则条件下,最大似然估计量是下面微分方程的解:

\[\frac{\mathrm{d} H(\theta)}{\mathrm{d} \theta} = \frac{\mathrm{d} lnl(\theta)}{\mathrm{d} \theta} = 0 \]

第二种: 当似然函数有多个参数时,则\(\theta\)可以表示为具有\(n\)个分量的未知向量:

\[\vec{\theta} = (\theta_1, \theta_2, ..., \theta_n)^\top \]

记梯度算子:

\[\nabla_\theta = (\frac{\partial}{\partial \theta_1}, \frac{\partial}{\partial \theta_2}, ..., \frac{\partial}{\partial \theta_n})^\top \]

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

\[\nabla_\theta H(\theta) = \sum_{i=1}^n \nabla_\theta ln(f(x_i | \theta)) \]

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

五、实例演示

4.1 似然函数连续可导

设样本服从正太分布\(N(\mu,\sigma^2)\),则似然函数为:

\[L(\mu,\sigma^2) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi} \sigma} e^{- \frac{(x_i - \mu)^2}{2 \sigma^2}} = (2 \pi \sigma^2)^{- \frac{n}{2}} e^{-\frac{1}{2\sigma^2} \sum_{i=1}^n (x_i-\mu)^2} \]

其对数形式为:

\[H(\mu,\sigma^2) = -\frac{n}{2}ln(2\pi)-\frac{n}{2}ln(\sigma^2)-\frac{1}{2\sigma^2} \sum_{i=1}^n (x_i-\mu)^2 \]

求其偏导数,得到方程组:

\[\frac{\partial H}{\partial \mu} = \frac{1}{\sigma^2}\sum_{i=1}^n(x_i-\mu) = 0 \]

\[\frac{\partial H}{\partial \sigma^2} = -\frac{n}{2\sigma^2}+\frac{1}{2\sigma^4}\sum_{i=1}^n(x_i-\mu)^2 = 0 \]

最终解得:

\[\hat{\mu} = \bar{x} = \frac{1}{n}\sum_{i=1}^n x_i \]

\[\hat{\sigma^2} = \frac{1}{n}\sum_{i=1}^n(x_i-\bar{x}) \]

不难通过似然函数极其偏导数的单调性可知,此处的似然函数值就是最大值。

4.2 似然函数连续不可导

设样本服从均匀分布\([a,b]\),则随机变量X的概率密度函数为:

\[f(x) = \begin{cases} \frac{1}{b-a},&a \leq x \leq b \\ 0,&other \end{cases} \]

对于样本\(D=\{x_1,x_2,...,x_n \}\),其似然函数为:

\[L(a,b)= \begin{cases} \frac{1}{(b-a)^n}, &a \leq x \leq b \\ 0, &other \end{cases} \]

很显然该似然函数不是连续可导函数,所以必须从似然函数的出发求似然函数的最大值。当\(x \in [a,b]\)时显然似然函数大于0,所以最大值一定在\(x \in [a,b]\)时达到。为了使似然函数函数达到最大值,那么就要使\(b-a\)尽可能地小,但是又必须满足\(b \leq \mathrm{max} \{x_1,x_2,...,x_n\}\)\(a \geq \mathrm{min} \{x_1,x_2,...,x_n\}\)。因此\(a\)\(b\)的最大似然估计值为:

\[\hat{a} = \mathrm{min} \{x_1,x_2,...,x_n\} \\ \hat{b} = \mathrm{max} \{x_1,x_2,...,x_n\} \]

总结

现在我们理一下本文的思路,首先我们通过两个简单的例子粗浅地解释了最大似然估计的意义,然后利用最大似然原理推导了最大似然估计的方法,最后我们又求解了正太分布和均匀分布参数的最大似然估计值。

总而言之,最大似然估计具备以下几个特点:

  1. 比其他估计方法更加简单;
  2. 收敛性:无偏或者渐近无偏,当样本数目增加时,收敛性质会更好;
  3. 如果假设的类条件概率模型正确,则通常能获得较好的结果。但如果假设模型出现偏差,将导致非常差的估计结果。

那么最后的最后,我们总结下最大似然估计的方法流程吧:

  1. 预估随机变量的分布,给出其概率密度函数;
  2. 写出对于样本的似然函数,判断似然函数的连续性和可导性;
  3. 如果似然函数连续可导,求解似然函数导数为0时时参数的取值,并根据似然函数及其导数的单调性,判断此处的似然函数值是否是否为最大值;
  4. 如果似然函数不是连续可导的,则视情况判断是否存在最大值。

有关最大似然估计基础介绍的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby-on-rails - 需要帮助最大化多个相似对象中的 3 个因素并适当排序 - 2

    我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night

  6. ruby - 获取数组中值的最大连续出现次数 - 2

    下面有没有更优雅的方法来实现这个:输入:array=[1,1,1,0,0,1,1,1,1,0]输出:4我的算法:streak=0max_streak=0arr.eachdo|n|ifn==1streak+=1elsemax_streak=streakifstreak>max_streakstreak=0endendputsmax_streak 最佳答案 类似于w0lf'sanswer,但通过从chunk返回nil来跳过元素:array.chunk{|x|x==1||nil}.map{|_,x|x.size}.max

  7. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  8. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. c++基础-运算符 - 2

    目录1关系运算符2运算符优先级3关系表达式的书写代码实例:下面是面试中可能遇到的问题:1关系运算符C++中有6个关系运算符,用于比较两个值的大小关系,它们分别是:运算符描述==等于!=不等于小于>大于小于等于>=大于等于这些运算符返回一个布尔值,即true或false。例如,当x等于y时,x==y的结果为true,否则结果为false。2运算符优先级在C++中,关系运算符的优先级高于赋值运算符,但低于算术运算符。以下是关系运算符的优先级,从高到低排列:运算符描述>,,>=,关系运算符==,!=相等性运算符&&逻辑与`如果在表达式中有多个运算符,则按照优先级顺序依次进行运算。3关系表达式的书写在

随机推荐