当前位置: 首页 > news >正文

底层逻辑之:极大似然方法(Maximum Likelihood Estimation, MLE)

简介:

极大似然方法(Maximum Likelihood Estimation, MLE)是一种用于估计统计模型参数的方法。其核心思想是基于观测数据来寻找最可能产生这些数据的模型参数。

早在1821年,德国数学家高斯(C. F. Gauss)就利用极大似然方法MLE取估算误差概率分布(正态分布)的概率密度函数。(高斯这老哥的思想领先了100年)

但这一概念则由罗纳德·费希尔(R. A. Fisher)在1922年的论文《On the mathematical foundations of theoretical statistics, reprinted in Contributions to Mathematical Statistics》进行了系统阐述,并且首先探讨了这种方法的一些性质。极大似然估计这一名称也是出自费希尔。

极大似然估计法MLE

描述函数和似然函数

极大似然方法很简单,就是利用观测值去推测数学描述模型的参数。

没错,利用极大似然估计法时,我们需要提前知道观测数值的分布的描述函数(一般为概率密度分布式),或者自己去进行假设结构,只有得到描述函数,将它带入似然函数(Likelihood Function)后,我们才能基于MLE的框架利用偏导求解。

因此,在讲 MLE前,我们要明确两个概念:描述函数似然函数。这两个概念在MLE中是不同层次的,很多初学者会将两者弄混。

描述函数:描述“发生概率\beta”(或者称为密度)与对象变量x之间的映射关系,这是一个理想化的概率,写为\theta =f(x), 常见的的描述函数如正态分布概率密度函数:

f(x)=\frac{1}{\sqrt{2 \pi \sigma }}e^{-\frac{(x-\mu )^2}{2\sigma ^2}}

似然函数 :描述描述函数参数变化时,当前抽样结果对应发生概率\beta的函数。写作:

\beta =L(\theta ;X)=\prod f(x_i |\theta ) (x_i \epsilon X)

其中,L(\theta ;X)意味,描述函数参数为\theta组合下,集合X(抽样结果)发生的概率,其值为\beta(取值0~1),f(x_i |\theta )是单次抽样中,描述函数参数为\theta组合下,结果为x_i的概率,这些概率的交集(即连乘)就是最终概率\beta

注意:

根据似然函数的结构特质,抽样的各类事件或数值相互独立,无不影响。

在构建似然函数时,抽样结果是既定发生的(也就是固定的),否者无法进行MLE。

似然函数中,描述函数的可变参数为自变量,抽样结果发生的概率\beta是应变量因此MLE的本质就是找到一组最佳可变参数,使得既定发生的抽样结果对应发生的概率最大,故称作为最大似然估计。

MLE:基于似然函数对描述函数的参数进行反推

从数学思想的角度来说,MLE就是基于现实得到的数据,基于概率学对描述函数的参数进行反推。

假设神明以80为均值,方差为40以正态分布随机地赋予人类寿命,对于寿命的分布,理想的描述函数为:

f(x)=\frac{1}{\sqrt{2 \pi}\cdot \sigma }e^{-\frac{(x-\mu )^2}{2\cdot \sigma ^2}}=\frac{1}{\sqrt{2 \pi\cdot 40} }e^{-\frac{(x-80 )^2}{2*40}}

对于身为人类的我而言,关于寿命,我什么都不知道,只能借助抽样调查和最大似然估计反向推测神明的设计,于是我做了一项3个单位调查(我们有请MATLAB来帮忙模拟一下):

% 设置均值和方差
mu = 80;
sigma_squared = 40;
sigma = sqrt(sigma_squared); % 标准差是方差的平方根% 随机生成3个样本
num_samples = 3;
samples = normrnd(mu, sigma, [num_samples, 1]);% 显示生成的样本
disp(samples);%%83.400591.598565.7138

人们不能总是直接猜到上帝的想法,在这个问题中,假如我是一个不知道正态分布概率密度函数的白痴,要不这个问题就太简单了,没办法体现MLE的用法

得到抽样数据后,我认为神明关于寿命的安排应该是长这个样吧:一个以e为底的对数函数,满足以x=c点中心对称,且其在定义域的积为1。(当然,以2、3、4其他自数为底也是可以的,但是对数求导过程会复杂一些,有兴趣的读者可以自己去尝试一下)

f(x)=a\cdot e ^{b(x-c)^2+d}

其中,定义域的积必须为1,否则其参数的偏导=0会无解

即:

\int_{-\infty }^{+\infty } a\cdot e^{b(x-c)^2}\cdot e^d dx=1

u=x-c

\int_{-\infty }^{+\infty } a\cdot e^{b(x-c)}\cdot e^d dx=\int_{-\infty }^{+\infty } a\cdot e^{b\cdot u^2}\cdot e^d du=1

根据高斯积分定义

\int_{-\infty }^{+\infty } e^{b\cdot u^2}\cdot du=\sqrt{\frac{\pi}{-b}} 且 b<0

原式:

\int_{-\infty }^{+\infty } a\cdot e^{b(x-c)}\cdot e^d dx=a\cdot e^d\cdot \sqrt{\frac{\pi}{-b}}=1

故a、d、b应满足:

a\cdot e^d\cdot =\sqrt{\frac{-b}{\pi}}

既然如此,我们就用d和b表示a吧,于是:

f(x)=a\cdot e ^{b(x-c)^2+d}= e^{-d}\cdot \sqrt{\frac{-b}{\pi}}\cdot e ^{b(x-c)^2+d}= \sqrt{\frac{-b}{\pi}}\cdot e ^{b(x-c)^2}

d被消掉了 令新b=-b变化一下:

f(x)= \sqrt{\frac{b}{\pi}}\cdot e ^{-b(x-c)^2}

看来不需要上帝,我凭实力构建了一个类正态概率密度函数(笑)

继续!

根据MLE,似然函数:

\beta =L(\theta ;X)=\prod f(x_i |\theta ) (x_i \epsilon X) ,其中f(x|\theta )=\sqrt{\frac{b}{\pi}}\cdot e ^{-b(x-c)^2}\theta_k =(a_k,b_k,c_k)

似然函数两边取对数,方便求导

        ln\left(\prod \sqrt{\frac{b}{\pi}}\cdot e ^{-b(x_i-c)^2}\right) = \sum ln\left(\sqrt{\frac{b}{\pi}}\cdot e ^{-b(x-c)^2}\right)

展开:

= \sum \left[ \ln\left(\sqrt{\frac{b}{\pi}}\right) + \ln\left(e^{-b(x-c)^2}\right) \right] = \sum \left[ \frac{1}{2} \ln\left(\frac{b}{\pi}\right) - b(x-c)^2 \right]

= \frac{n}{2} \ln\left(\frac{b}{\pi}\right) - b \sum (x-c)^2

在对似然函数中对参数b求偏导

\frac{\partial f}{\partial b} = \frac{n}{2b} - \sum (x-c)^2

在对似然函数中对参数c求偏导

\frac{\partial f}{\partial c} = -b \cdot \frac{\partial}{\partial c} \sum (x-c)^2

= -b \cdot \frac{\partial}{\partial c} \sum (x^2 - 2xc + c^2)

= -b \cdot (-2x \cdot n + 2nc)= 2nb(x - c)

其中,对于c的偏导数为0最好解,将抽样结果   83.4005,91.5985和65.7138带入(很明显,就是取抽样均值时,c的偏导为0):

0=2\cdot 3\cdot b \sum \left(x_i-c\right)=83.4005+91.5985+65.7138-3c

c=80.2376

将c=80.2376带入,再令b的偏导数为0,有

0=\frac{3}{2b}-\sum (x_i-c)^2=\frac{3}{2b}-(83.4005-80.2376)^2-(91.5985-80.2376)^2+(65.7138-80.2376)^2=-350.0148+\frac{3}{2b}

解得:b=0.0043

因此利用在3样本采样下,利用MLE,我们推测出概率密度函数最有可能的样子,即最大似然估计的概率密度函数为:

f(x )=\sqrt{\frac{0.0043}{\pi}}\cdot e ^{-0.0043(x-80.2376)^2}=0.0369\cdot e ^{-0.0043(x-80.2376)^2}

上帝给的真实概率密度函数为:

f(x)=\frac{1}{\sqrt{2 \pi\cdot 40} }e^{-\frac{(x-80 )^2}{2*40}}=0.631\cdot e^{-0.0125(x-80 )^2}

这差距还挺大啊,哈哈哈,因为要手算,所以我只抽样了三个样本啊,接下来让MATLAB秘书帮我们自动化地计算采样100、1000、和10000下的基于MLE的概率密度函数。


%% 设置均值和方差
mu = 80;
sigma_squared = 40;
sigma = sqrt(sigma_squared); % 标准差是方差的平方根% 随机生成100个样本
num_samples = 100;
samples = normrnd(mu, sigma, [num_samples, 1]);%%将计算的偏导数,进行自动化计算%1。求解c的偏导
c=mean(samples);
%2.求解b的偏导,利用了自定义的函数
b = solve_for_b_explicit(samples, c);disp([num2str((b/pi)^(1/2)),'*e^(',num2str(-b),'(x-',num2str(c),'))'])function b = solve_for_b_explicit(x, c)% 输入:% x - 输入数组% c - 已知常数%% 输出:% b - 求解的值% 计算输入数组的元素个数n = length(x);% 计算求和部分sum_xi_minus_c_squared = sum((x - c).^2);% 计算b的显式解b = n / (2 * sum_xi_minus_c_squared);
end

采样数量为10时:0.044206*e^(-0.0061392(x-76.8192)^2)

采样数量为50时:0.072282*e^(-0.016414(x-80.4277)^2)

采样数量为100时:0.05551*e^(-0.0096803(x-80.1956)^2)

采样数量为500时:0.064705*e^(-0.013153(x-80.2877)^2)

采样数量为1000时:0.062513*e^(-0.012277(x-79.9881)^2)

采样数量为10000时:0.06283*e^(-0.012402(x-80.0022)^2)

真实概率密度分布函数:0.631*e^(-0.0125(x-80 )^2)

可以发现,随着采样数量的增加,最大似然估计的分布函数越来越准确!

总结:

通过详细的推导过程和问题的实践,我们可以很好的掌握MLE的基本思想和基础理论。在本篇文章中,我们在不知道正太分布概率密度分布函数的背景下,仍利用MLE拟合出了具体的数值表达式,可见MLE对数据分布的强大拟合能力。

MLE是信息论和机器学习的重要方法,比如:在隐马尔可夫模型(HMM)等序列数据建模中,MLE通过Baum-Welch算法(一种特殊的期望最大化EM算法)来迭代地优化模型参数。

相关文章:

底层逻辑之:极大似然方法(Maximum Likelihood Estimation, MLE)

简介&#xff1a; 极大似然方法&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是一种用于估计统计模型参数的方法。其核心思想是基于观测数据来寻找最可能产生这些数据的模型参数。 早在1821年&#xff0c;德国数学家高斯&#xff08;C. F. Gauss&#xff09;就…...

笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署

远程工具 ToDesk Nginx 解压 tar zxvf nginx-1.20.2.tar.gz进入Nginx 文件夹 cd nginx-1.20.2报错解决 ./configure: error: C compiler cc is not found yum -y install gcc gcc-c autoconf automake make./configure: error: the HTTP rewrite module requires the PC…...

【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践

深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践 在并发编程的世界里,Go语言以其独特的并发模型和简洁的语法赢得了广泛的关注。在Go语言的并发控制工具箱中,sync.Mutex和sync.RWMutex是两个至关重要的工具,它们帮助开发者保护共享资源,避免竞态条件,确保…...

15.postgresql--jsonb 数组进行打平,过滤

用jsonb_array_elements函数先展开数组&#xff0c;再用jsonb_each函数遍历元素中的键值对 例如&#xff1a; SELECT * FROM data_table, LATERAL jsonb_array_elements(json_column) WITH ORDINALITY as elem(element, idx) JOIN LATERAL jsonb_each(elem.element) as kv(ke…...

linux下i2c开发与框架源码分析

目录 1 概述 2 I2c子系统框架 3 I2C的使用流程 3.1 在驱动里使用 3.2 在应用层使用 3.3 I2ctool的使用 4 为硬件i2c注册一个适配器 5 i2c子系统源码流程分析 5.1 i2c device与driver绑定过程 5.1.1 Driver的注册与处理 5.1.2 Client device的生成 5.2 I2c的发送与接…...

[ruby on rails] 安装docker

1. docker安装 ubuntu14.04后自带docker安装包&#xff0c;可以直接安装docker.io sudo apt-get updatesudo apt-get install -y docker.io # 安装后启动sudo service docker start最新版本docker 安装docker-ce # 官方源 curl -fsSL https://download.docker.com/linux/ubun…...

I2C学习

详情学习 12. I2C通讯 — [野火]Linux基础与应用开发实战指南——基于LubanCat-RK系列板卡 文档 (embedfire.com) 问题 i2c总线中scl和sda两条线的作用以及区别 在 I2C 总线&#xff08;Inter-Integrated Circuit&#xff09;中&#xff0c;SCL 和 SDA 是两条核心信号线&am…...

VUE:基于MVVN的前端js框架

文章目录 vue框架v-show vue框架 注意是 先写函数名&#xff0c;再写function。 handle:function (){}下面是错误的 function:handle(){}3 v-show 本质上等于号后面还是判断条件&#xff0c;所以不能写赋值语句&#xff0c;下面是正确的 下面是错误的 v-show " ge…...

06、Spring AOP

在我们接下来聊Spring AOP之前我们先了解一下设计模式中的代理模式。 一、代理模式 代理模式是23种设计模式中的一种,它属于结构型设计模式。 对于代理模式的理解: 程序中对象A与对象B无法直接交互,如:有人要找某个公司的老总得先打前台登记传达程序中某个功能需要在原基…...

c语言学习26字符串的应用

字符串在stm32串口中的应用 串口控制流水灯 pc通过串口发送字符串命令控制流水灯 open 流水灯打开 close 流水灯关闭 speed 1~9速度控制 if(strcmp((char *)usart1_rec_buff,"open")0) { led_flag 1; } else if(strcmp((char *)usart1_rec_buff,"close&qu…...

法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校

以下是一些实用的法语旅游常用口语&#xff0c;帮助你在法国旅行时能够进行基本的交流&#xff1a; 问候与道别 Bonjour: 用于日常问候。Au revoir: 用于告别。 请求帮助 S’il vous plat: 用于请求帮助&#xff0c;例如在需要寻找某个地点或服务时。 询问信息 Excusez-moi: 用…...

Kafka 生产者优化与数据处理经验

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

MySQL 主从复制之多线程复制

一、MySQL 多线程复制的背景 MySQL 的主从复制延迟一直是受开发者最为关注的问题之一&#xff0c;MySQL 从 5.6 版本开始追加了并行复制功能&#xff0c;目的就是为了改善复制延迟问题&#xff0c;并行复制称为enhanced multi-threaded slave&#xff08;简称MTS&#xff09;。…...

Linux2.6内核进程调度队列

文章目录 前言运行队列 runqueue优先级活动队列过期队列活跃队列 VS 过期队列active指针和expired指针O(1)调度算法 前言 在前面学习并认识了进程之后&#xff0c;我们会发出一个疑问&#xff1a;Linux内核是如何调度进程的呢&#xff1f; 接下来我们就以Linux2.6内核为例深入探…...

Infineon(英飞凌) TLE985xQX 芯片电机工作电流、电压AD采样

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 单片机芯片合集 文章目录 其他系列文章导航 文章目录 前言 一、选取合适的端口 1.通过 OP1、OP2 电流采集运放输入端口进行H桥驱动的电流采集。 2.通过 O_D_VBAT_AD_EN、I_A_VBAT_A…...

Sparrow系列拓展篇:对信号量应用问题的深入讨论

前言 笔者之前已经介绍过了Sparrow信号量的源码&#xff0c;但是对于信号量的使用&#xff0c;并没有讲得非常详细&#xff0c;仅仅讲了同步与互斥的概念。 本章让笔者介绍如何使用Sparrow的信号量&#xff0c;深入探讨一下信号量在同步、计数与互斥中的应用。 使用信号量解…...

图文详解Docker下配置、测试Redis

文章目录 前言实测环境&#xff1a;实验思路&#xff1a; 正文1.准备工作2. 配置、运行 Redis 容器3. 配置测试 总结 前言 配置、测试redis数据库服务器&#xff0c;首先确保正确安装docker&#xff0c;并且已启动运行&#xff0c;具体安装docker方法见笔者前面的博文《OpenEu…...

Python编程艺术:优雅与实用的完美平衡(推导式)

在Python这门优雅的编程语言中&#xff0c;处处体现着"简洁即是美"的设计哲学。今天我们深入探讨Python中那些让代码更优雅、更高效的编程技巧&#xff0c;这些技巧不仅能提升代码的可读性&#xff0c;还能让编程过程充满乐趣。 列表推导式的魔力 Python的列表推导…...

Spring Boot框架Starter组件整理

在Spring Boot框架中&#xff0c;starter是一种预定义的依赖集合&#xff0c;旨在简化Maven或Gradle等构建工具中的依赖管理。每个starter都包含了实现特定功能所需的库和组件&#xff0c;以及相应的配置文件。开发者只需在项目中引入相应的starter依赖&#xff0c;即可快速搭建…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...