草庐IT

【数学基础】你还不理解最大似然估计吗?一篇文章带你快速了解掌握

生鱼同学 2023-04-12 原文

📚引言

🙋‍♂️作者简介:生鱼同学,大数据科学与技术专业硕士在读👨‍🎓,曾获得华为杯数学建模国家二等奖🏆,MathorCup 数学建模竞赛国家二等奖🏅,亚太数学建模国家二等奖🏅。

✍️研究方向:复杂网络科学

🏆兴趣方向:利用python进行数据分析与机器学习,数学建模竞赛经验交流,网络爬虫等。

在机器学习的过程中我们经常会见到最大似然估计,最大似然估计可以说是应用非常广泛的一种参数估计的方法。下面我们就从头开始介绍最大似然估计的理论,一文带你读懂最大似然估计。

📖概率与似然

我们首先来看概率和似然的定义:

概率(Probability):描述给定了模型以及参数后,描述结果的可能性,并不关于观察到的任何数据。
似然(Likelihood):描述已知随机变量输出结果时,未知参数的可能取值,倾向于从观察到的数据描述参数是否合理。

  • 抛一枚均匀的硬币10次,6次拋得正面的可能性有多大?这里我们提到的可能性就是概率,因为我们预先假定硬币是均匀的,所以我们求得概率
  • 抛一枚硬币10次,我们观察到6次是正面向上的,问这个硬币是否为均匀质地的可能性(即正反面的概率都为0.5)?这时,我们从观察到的结果出发去估计这个正反面的概率,这就是似然

📖最大似然估计的定义

最大似然估计:一种统计方法,它用来求一个样本集的相关概率密度函数的参数。

给定一个概率分布 D D D,假定其概率密度函数(连续分布)或概率聚集函数(离散分布)为 f D f_D fD,以及一个分布参数 θ \theta θ,我们可以从这个分布中抽出一个具有 n n n个值的采样 X 1 , X 2 , . . . X n X_1,X_2,...X_n X1,X2,...Xn,通过利用 f D f_D fD,我们就可以计算出概率: P ( x 1 , x 2 , . . . x n ) = f D ( x 1 , x 2 , . . . , x n ∣ θ ) P(x_1,x_2,...x_n)=f_D(x_1,x_2,...,x_n|\theta) P(x1,x2,...xn)=fD(x1,x2,...,xnθ)
但是当我们并不知道这个参数的值的时候,我们希望从这个分布中抽出一个具有 n n n个值的采样 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1,X2,...,Xn,然后用这些采样数据来估计 θ \theta θ

要实现最大似然估计法,我们首先要定义可能性:
lik ⁡ ( θ ) = f D ( x 1 , x 2 , … , x n ∣ θ ) \operatorname{lik}(\theta)=f_{D}\left(x_{1}, x_{2}, \ldots, x_{n} \mid \theta\right) lik(θ)=fD(x1,x2,,xnθ)
并且在 θ \theta θ的所有取值上,使得这个可能性最大。这就被称为 θ \theta θ最大似然估计

📖最大似然估计的原理

为了更好的理解最大似然估计的原理,我们来看一个例子。

假设有一个盒子里边有很多很多红色和蓝色的小球,而我们想估计抽到红色和蓝色小球的概率。

这里我们设抽到红色小球的概率为 θ \theta θ,而我们抽到蓝色小球的概率即为 1 − θ 1-\theta 1θ。如下表格所示:

红色蓝色
θ \theta θ 1 − θ 1-\theta 1θ

我们分别从盒子中抽出了五个球,得到了以下的结果:

我们就能够得到这组样本的概率 θ 3 ( 1 − θ ) 2 \theta^3(1-\theta)^2 θ3(1θ)2,这就是似然函数 L ( θ ) = θ 3 ( 1 − θ ) 2 L(\theta)=\theta^3(1-\theta)^2 L(θ)=θ3(1θ)2

最大似然估计基于这样一个假设,即目前我们观测到的样本所呈现的状态已经是其最大可能出现的状态。

所以我们只需要看似然函数什么时候能达到最大,其取得最大值的时候的 θ \theta θ就是我们希望得到的 θ \theta θ

因此,我们的问题就转换为了对 L ( θ ) = θ 3 ( 1 − θ ) 2 L(\theta)=\theta^3(1-\theta)^2 L(θ)=θ3(1θ)2求最大值的问题。

相信大家通过这个例子已经大概了解了最大似然估计的原理。

📍总结

本文从浅入深介绍了最大似然估计的原理并举了相关例子,旨在于对最大似然估计进行全面的介绍和了解。

在我们学习机器学习的过程中,会遇到很多数学相关的问题,而这决定了我们扎实的基础,还需要不断学习和实践。

今天就是这样,如果你感觉本文对你有帮助,请帮我点个赞或者收藏一下,我们下次再见。

有关【数学基础】你还不理解最大似然估计吗?一篇文章带你快速了解掌握的更多相关文章

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

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

  2. 软件测试基础 - 2

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

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  5. 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

  6. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  7. ruby - 无法理解 `puts{}.class` 和 `puts({}.class)` 之间的区别 - 2

    由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A

  8. ruby - 如何理解 Ruby 中的发送者和接收者? - 2

    我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo

  9. ruby-on-rails - Rails - 理解 application.js 和 application.css - 2

    rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:

  10. ruby - 我可以在 Ruby 中动态调用数学运算符吗? - 2

    ruby中有这样的东西吗?send(+,1,2)我想让这段代码看起来不那么冗余ifop=="+"returnarg1+arg2elsifop=="-"returnarg1-arg2elsifop=="*"returnarg1*arg2elsifop=="/"returnarg1/arg2 最佳答案 是的,只需像这样使用send(或者更好的是public_send):arg1.public_send(op,arg2)这是可行的,因为Ruby中的大多数运算符(包括+、-、*、/、andmore)只需调用方法。所以1+2与1.+(2)相同

随机推荐