机器学习基础知识笔记(一)-- 极大似然估计、高斯混合模型与EM算法
似然函数
常说的概率是指给定参数后,预测即将发生的事件的可能性。拿硬币这个例子来说,我们已知一枚均匀硬币的正反面概率分别是0.5,要预测抛两次硬币,硬币都朝上的概率:
H代表Head,表示头朝上
p(HH | pH = 0.5) = 0.5*0.5 = 0.25.
这种写法其实有点误导,后面的这个p其实是作为参数存在的,而不是一个随机变量,因此不能算作是条件概率,更靠谱的写法应该是 p(HH;p=0.5)。
而似然概率正好与这个过程相反,我们关注的量不再是事件的发生概率,而是已知发生了某些事件,我们希望知道参数应该是多少。
现在我们已经抛了两次硬币,并且知道了结果是两次头朝上,这时候,我希望知道这枚硬币抛出去正面朝上的概率为0.5的概率是多少?正面朝上的概率为0.8的概率是多少?
如果我们希望知道正面朝上概率为0.5的概率,这个东西就叫做似然函数,可以说成是对某一个参数的猜想(p=0.5)的概率,这样表示成(条件)概率就是
L(pH=0.5|HH) = P(HH|pH=0.5) = (另一种写法)P(HH;pH=0.5).
为什么可以写成这样?我觉得可以这样来想:
似然函数本身也是一种概率,我们可以把L(pH=0.5|HH)写成P(pH=0.5|HH); 而根据贝叶斯公式,P(pH=0.5|HH) = P(pH=0.5,HH)/P(HH);既然HH是已经发生的事件,理所当然P(HH) = 1,所以:
P(pH=0.5|HH) = P(pH=0.5,HH) = P(HH;pH=0.5).
右边的这个计算我们很熟悉了,就是已知头朝上概率为0.5,求抛两次都是H的概率,即0.5*0.5=0.25。
所以,我们可以safely得到:
L(pH=0.5|HH) = P(HH|pH=0.5) = 0.25.
这个0.25的意思是,在已知抛出两个正面的情况下,pH = 0.5的概率等于0.25。
如果考虑pH = 0.6,那么似然函数的值也会改变。
注意到似然函数的值变大了。这说明,如果参数pH 的取值变成0.6的话,结果观测到连续两次正面朝上的概率要比假设pH = 0.5时更大。也就是说,参数pH 取成0.6 要比取成0.5 更有说服力,更为“合理”。总之,似然函数的重要性不是它的具体取值,而是当参数变化时函数到底变小还是变大。对同一个似然函数,如果存在一个参数值,使得它的函数值达到最大的话,那么这个值就是最为“合理”的参数值。
在这个例子中,似然函数实际上等于:
- , 其中。
如果取pH = 1,那么似然函数达到最大值1。也就是说,当连续观测到两次正面朝上时,假设硬币投掷时正面朝上的概率为1是最合理的。
类似地,如果观测到的是三次投掷硬币,头两次正面朝上,第三次反面朝上,那么似然函数将会是:
- , 其中T表示反面朝上,。
这时候,似然函数的最大值将会在的时候取到。也就是说,当观测到三次投掷中前两次正面朝上而后一次反面朝上时,估计硬币投掷时正面朝上的概率是最合理的。
那么最大似然概率的问题也就好理解了。
最大似然概率,就是在已知观测的数据的前提下,找到使得似然概率最大的参数值。
极大似然估计
如果总体X为离散型
假设分布率为P=p(x;θ)P=p(x;θ),x是发生的样本,θθ是代估计的参数,p(x;θ)p(x;θ)表示估计参数为θθ时,发生x的的概率。
那么当我们的样本值为:x1,x2,...,xnx1,x2,...,xn时,
其中L(θ)L(θ)成为样本的似然函数。
假设
有 θ̂ θ^ 使得 L(θ)L(θ) 的取值最大,那么 θ̂ θ^就叫做参数 θθ 的极大似然估计值。
如果总体X为连续型
基本和上面类似,只是概率密度为f(x;θ)f(x;θ),替代p。
解法
- 构造似然函数L(θ)L(θ)
- 取对数:lnL(θ)lnL(θ)
- 求导,计算极值
- 解方程,得到θ
解释一下,其他的步骤很好理解,第二步取对数是为什么呢?
因为根据前面你的似然函数公式,是一堆的数字相乘,这种算法求导会非常麻烦,而取对数是一种很方便的手段:
- 由于ln对数属于单调递增函数,因此不会改变极值点
- 由于对数的计算法则:lnab=blnalnab=blna、lnab=lna+lnblnab=lna+lnb ,求导就很方便了
EM算法
https://blog.csdn.net/zouxy09/article/details/8537620 (讲得很详细)
参考资料:
[1] https://en.wikipedia.org/wiki/Likelihood_function
[2] https://www.cnblogs.com/zhsuiy/p/4822020.html(似然函数)
[3] https://blog.csdn.net/fangbingxiao/article/details/78878141(似然函数)
[4] https://blog.csdn.net/expleeve/article/details/50466602(似然函数)
[5] https://www.cnblogs.com/xing901022/p/8418894.html(极大似然估计法)
[6] https://blog.csdn.net/zouxy09/article/details/8537620(从最大似然到EM算法浅解) 非常好!!!
[7] http://www.cnblogs.com/wjy-lulu/p/7010258.html
[8] http://www.ituring.com.cn/article/497545 (一文详解高斯混合模型原理)
[9] https://blog.csdn.net/jinping_shi/article/details/59613054 (高斯混合模型(GMM)及其EM算法的理解)
[10] http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html (混合高斯模型(Mixtures of Gaussians)和EM算法)
[11] https://blog.csdn.net/jasonzhoujx/article/details/81947663 (高斯混合模型(GMM)应用:分类、密度估计、生成模型)
机器学习基础知识笔记(一)-- 极大似然估计、高斯混合模型与EM算法的更多相关文章
- SIGAI机器学习第二十三集 高斯混合模型与EM算法
讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...
- 机器学习之高斯混合模型及EM算法
第一部分: 这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类 ...
- 机器学习 : 高斯混合模型及EM算法
Mixtures of Gaussian 这一讲,我们讨论利用EM (Expectation-Maximization)做概率密度的估计.假设我们有一组训练样本x(1),x(2),...x(m),因为 ...
- 【ML数学知识】极大似然估计
它是建立在极大似然原理的基础上的一个统计方法,极大似然原理的直观想法是,一个随机试验如有若干个可能的结果A,B,C,... ,若在一次试验中,结果A出现了,那么可以认为实验条件对A的出现有利,也即出现 ...
- B-概率论-极大似然估计
[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ ...
- LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计,为什么呢?可 ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- Java多线程基础知识笔记(持续更新)
多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...
- javascript基础知识笔记-自用
笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...
随机推荐
- Mit6.824 Lab1-MapReduce
前言 Mit6.824 是我在学习一些分布式系统方面的知识的时候偶然看到的,然后就开始尝试跟课.不得不说,国外的课程难度是真的大,一周的时间居然要学一门 Go 语言,然后还要读论文,进而做MapRed ...
- ASP.NET Web用户控件
用户控件可用来实现页面中可重用的代码,是可以一次编写就多处方便使用的功能块.它们是 ASP.NET控件封装最简单的形式.由于它们最简单,因此创建和使用它们也是最简单的.用户控件实际上是把已有的服务器控 ...
- ubuntu如何设置Python的版本
Ubuntu默认已经安装了Python的版本了,不过是Python2的版本. 我们安装好Python3想把他切换为系统默认的版本. sudo update-alternatives --config ...
- Laravel -- 模型
模型文件 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model { / ...
- elasticsearch 5.x 系列之四(索引模板的使用,详细得不要不要的)
1,首先看一下下面这个索引模板 curl -XPUT "master:9200/_template/template_1?pretty" -H 'Content-Type: app ...
- Linux 内核之api_man 手册安装
开发环境:Ubuntu18.04,虚拟机virtual box 1.安装XML格式转换 sudo apt install xmlto 2.在内核目录执行 make mandocs 大概持续了半小时 ...
- 基于pygame的打砖块游戏,做到一半,不带做了
跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...
- 网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议
thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件以及第三 ...
- python2.7入门--- 日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能.我们今天就来看一下这方面,首先得知道,Python 提供了一个 time 和 calendar 模块可以用于格式化日 ...
- java程序——从命令行接收多个数字,求和之后输出结果
命令行参数都是字符串,必须先将其转化为数字,才能相加.以下是流程图,源代码和输出结果. 流程图: 源代码: import java.util.Scanner; public class Test { ...