以色列理工暑期学习-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

相关文章

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A