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

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat