以色列理工暑期学习-MLE、MAP参数估计方法

2023-10-24 22:50

本文主要是介绍以色列理工暑期学习-MLE、MAP参数估计方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小编有幸参加到以色列理工的暑期交流项目中,并选择了《机器学习导论》这门经典课程,进行再次学习并回顾知识点查缺补漏;

既然是作为导论,国外的课程和国内的课程的区别在哪里?我觉得很重要的两点是:逻辑性和学习性。

很多在国外交流过的同学,或者看过国外大学视频的同学应该都有一些体会,逻辑性在于课程如何引入很重要;主要是通过一两句简单的概述,让学生明白这门课最基础的内容和最实用的应用,然后逐步递推,从example到general,再到general解决不了的special case,然后再次improved general,最后在apply;由逻辑性结合学习性在于,上课的不同环节上,会有lecture、tuitional material、homework和project,这中间穿插的TA环节很重要,会涉及到上课时间来不及讲解到的基础;比如老师上课讲到的贝叶斯分类器,TA会在后面的答疑课中讲到概率论的基础知识,甚至逐步推导公式。所以课程听起来还是很受用的。

老师讲述的逻辑是这样的:

每一个机器学习算法都应该有这样的过程:


基本的常用算法都会涉及到从贝叶斯、KNN、SVM以及一些聚类降维算法。

按照课程顺利来讲的话,这个逻辑对于我个人来讲略微有点逻辑问题,教授先讲解的是贝叶斯方法,然后直接引入MAP,最大后验估计,而在参数估计中引入MLE;对于我们中国学生来讲,应该最大似然的参数估计更为熟悉:

最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。

首先,假设为独立同分布的采样,θ为模型参数,f为我们所使用的模型,遵循我们上述的独立同分布假设。参数为θ的模型f产生上述采样可表示为

而根据似然函数的定义:在已有数据的基础上,并假定数据满足一定分布,去估计在参数θ下,使得模型产生出观测数据的概率最大;


对于连乘形式的函数我们取对数,并求导,使导数为0,求得最大的θ即可;

但我们都知道,采样数据只是反映了分布在一定范围内的特性。例如,我们在抛硬币的时候,如果根据一百次的数据采样得到的分布一定不会是0.5;但我们都知道抛一枚硬币得到正反面的概率是0.5,所以假设θ的先验分布为g,根据贝叶斯公式,可知:



即我们的MAP,最大后验概率估计。

MAP与MLE最大区别是MAP中加入了模型参数本身的概率分布,或者说。MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。

说到这里可以多了解一些关于参数估计的知识和数学历史:

从某一个角度来讲,机器学习的学习和“训练”就是把大量的数据归纳到少数的参数中,“训练”正是估计这些参数的过程。然而对于参数估计,一直存在两个学派的不同解决方案。一是频率学派解决方案:通过某些优化准则(比如似然函数)来选择特定参数值;二是贝叶斯学派解决方案:假定参数服从一个先验分布,通过观测到的数据,使用贝叶斯理论计算对应的后验分布。先验和后验的选择满足共轭,这些分布都是指数簇分布的例子。

所以在贝叶斯学派眼里,所有的参数都是分布形式,会从MAP继续扩展为贝叶斯估计:和MAP一样,也认为参数不是固定的,都假设参数服从一个先验分布。但是MAP是直接估计出参数的值,而贝叶斯估计是估计出参数的分布,这就是贝叶斯与MLE与MAP最大的不同。定义如下

所以我们需要求的就不再是后验概率,而是,观察到evidence(数据采样D)的概率。当新的数据被观察到时,后验概率可以自动随之调整。但是通常这个全概率的求法是贝叶斯估计比较有技巧性的地方。求得一个新的值出现的概率:

其中先验分布的参数我们称为超参数(hyperparameter);上面的公式也就是贝叶斯估计的核心了,它把类条件概率密度p(xˆ|θ)与未知参数的后验概率密度p(θ|D)联系起来了 。注意,此积分不再等于1,这也是贝叶斯估计与最大后验估计最大的区别了。再说简单点,就是贝叶斯估计使用贝叶斯定理去估计参数的后验概率密度:



上图为在硬币实验中,MLE、MAP与贝叶斯估计的参数值,可以看出越来越精确接近0.5。

继而是经验贝叶斯,主要是计算出超参数分布:


全贝叶斯是将所有参数都是服从一定的分布:


所以总结一下贝叶斯和经典估计方法的不同之处:

(a)关于参数的解释不同

经典估计方法认为待估参数具有确定值,它的估计量才是随机的,如果估计量是无偏的,该估计量的期望等于那个确定的参数;而贝叶斯方法认为待估参数是一个服从某种分布的随机变量。

(b)所利用的信息不同

经典方法只利用样本信息;贝叶斯方法要求事先提供一个参数的先验分布,即人们对有关参数的主观认识,被称为先验信息,是非样本信息,在参数估计过程中,这些非样本信息与样本信息一起被利用。

(c)对随机误差项的要求不同

经典方法,除了最大似然法,在参数估计过程中并不要求知道随机误差项的具体分布形式,但是在假设检验与区间估计时是需要的;贝叶斯方法需要知道随机误差项的具体分布形式。

(d)选择参数估计量的准则不同

经典估计方法或者以残差平方和最小,或者以似然函数值最大为准则,构造极值条件,求解参数估计量;贝叶斯方法则需要构造一个损失函数,并以损失函数最小化为准则求得参数估计量。

对于一般概率模型的应用范围在于:如果只有观察变量那么我们可以用最大似然法(或者贝叶斯)估计未知参数,但是如果还含有隐变量就不能如此简单解决了。这时候就需要EM算法。(参见之前的EM算法)

这里再提出一点参数估计方法的一个限制:是我们人为的假定了参数分布服从了某种指定形式的分布函数,这可能在某些特定情况下是不合适的。有一种可选的解决方案是:非参数密度估计,他只依赖于观测数据量的大小,这种方法其实也需要参数,但是这些参数只是控制了模型的复杂性而不是分布的函数形式。通常会有三种无参密度估计方法:直方图,最近邻,核函数。所以还有很多估计方法有待发现和学习,读者们也可以通过参考文献了解更多,里面会有更口语化知乎回答,便于大家理解;也有对于硬币实验的公式推导详情,便于深度研究!

参考文献:

【1】知乎回答:https://www.zhihu.com/question/19894595

【2】http://blog.csdn.net/lin360580306/article/details/51289543

【3】http://lijiwei19850620.blog.163.com/blog/static/978415382013655540438/

【4】http://blog.csdn.net/yangliuy/article/details/8296481

【5】http://www.cnblogs.com/GuoJiaSheng/p/3966812.html

【6】http://www.ramlinbird.com/%E5%8F%82%E6%95%B0%E4%BC%B0%E8%AE%A1%EF%BC%9Amle%E3%80%81em%E5%92%8Cmap/

这篇关于以色列理工暑期学习-MLE、MAP参数估计方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278290

相关文章

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

JavaScript DOM操作与事件处理方法

《JavaScriptDOM操作与事件处理方法》本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵... 目录前言1. 类名操作代码片段代码解析2. 属性操作代码片段代码解析3. 内容操作代码片段代码解析4.

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

python忽略warnings的几种方法

《python忽略warnings的几种方法》本文主要介绍了几种在Python忽略警告信息的方法,,可以使用Python内置的警告控制机制来抑制特定类型的警告,下面就来介绍一下,感兴趣的可以了解一下... 目录方法 1: 使用 warnings 模块过滤特定类型和消息内容的警告方法 2: 使用 warnin