最近看斯坦福大学的机器学习课程,空下来总结一下参数估计相关的算法知识。

一、极大似然估计:

大学概率论课程都有讲到参数估计的两种基本方法:极大似然估计矩估计。两种方法都是利用样本信息尽量准确的去描述总体信息,或者说给定模型(参数全部或者部分未知)和数据集(样本),让我们去估计模型的未知参数。

其中,矩估计依赖于辛钦大数定律:简单随机样本的原点矩依概率收敛到相应的总体原点矩,这就启发我们利用样本矩替换总体矩(最简单的是用一阶样本原点矩估计总体期望,而用二阶样本中心矩估计总体方差),其一大优点就是使用时不用知道总体的分布形式。这个当然很好理解,下面主要总结学习下极大似然估计法:

极大似然估计,又名最大似然估计,其基本思想是:当我们从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该是使得从模型中抽取的该n组样本观测值的概率最大(直观上也很容易理解,概率大的事件总是比概率小的事件更容易发生,反过来,既然事件A已经发生,我们就应当认为事件A发生的概率应该是最大的,否则它又有什么理由PK掉概率最大的事件B呢,个人理解咯)。

依然举个栗子:假设你学校有1000名帅哥并且其身高服从高斯分布N(u,∂),你想知道自己的身高在学校处于什么样的水平、身高分布的特点等信息,这样子你可能需要知道参数(u,∂)的具体值,但你没那么多时间去统计全体帅哥的身高信息,于是你随机抽取了100名帅哥并得到了他们的身高,这样子你就有了一个样本集X={x1,x2,…,xN},由于每个样本都独立的从p(x|θ)中抽取的,那么抽到这100个帅哥的概率是p(x1|θ)*
p(x1|θ)...* p(x100|θ)。表达成数学上通用的形式就是:

这个函数反应了在不同的参数θ取值下,取得当前这个样本集的可能性,因此称为参数θ相对于样本集X的似然函数(likehood
function),记为L(θ)。

PS:既然样本集X={x1,x2,…,xN}已经得到(发生),那么就让它发生的概率最大化的吧(这样子说好像有点逻辑错误);

由于L(θ)中各项是连乘形式的,通常为了便于处理/计算,我们进行取对数操作:

如何求取H(θ)的最大值,当然是对函数求导数了,多个参数时就是求函数的偏导数,然后让(偏)导数为0
,这样就得到了似然方程,然后解似然方程就可以计算得到参数θ的估计值啦。同样的方法,你也可以得到学校美女的身高分布信息,等等。

极大似然估计的基本过程总结下来:

1、抽取得到样本集;

2、假设模型(是服从高斯分布还是二项分布等等;

3、列出似然函数并求导得到似然方程;

4、求解似然方程得到参数θ的估计值

高大上的极大似然估计法经过层层分解就简单许多了。

二、EM算法

继续依赖上面帅哥美女的身高来总结该算法,在极大似然估计中,我们预先知道了某个身高是隶属于帅哥还是美女(因为你抽样的时候已经做了区分了)。但是,现在社会这么复杂,区分人的性别可不是一件容易的事情,这样你抽样得到了200个样本,其中一部分隶属于帅哥,剩下的隶属于美女,只是不知道具体哪个样本隶属于帅哥,在这么艰苦的条件下需要去估计帅哥的(身高)分布参数(u1,∂1)、美女的(身高)分布参数(u2,∂2),又该怎么做呢?

主要需要解决两个基本问题:1、样本类别(是帅哥还是美女)
,算法中描述的隐含变量z(i)  2、每个类别的分布参数是多少。

要解决问题1就需要先解决问题2,要解决问题2也需要先解决问题1,在两个问题的解都未知的情况下,不妨先假设一个解好了。由于样本往往比较多,对其类别做假设还是有点嫌麻烦,那不如假设分布参数值好了(即对u1,∂1、u2,∂2)设定一个初值)。现在好办多了,既然已经知道了分布参数值,那么对于一个样本比如身高170cm,那么将其代入分布1:N(u1,∂1)得到一个概率值:p1(x|θ1),同理,代入分布1:N(u1,∂1)得到一个概率值:p2(x|θ2),这样如果p1>p2,那我们就可以认为这个样本属于类别1(既帅哥了)。
  如此,对所有的样本都进行这样的计算、比较,那每个样本的类别信息就有了,这样就解决了第一个问题,那接下来就可以运用极大似然法重新估计分布参数了...如此迭代,直到收敛(比如分布参数的变化值已经低于某个限度了)。

EM算法(Expectation-maximization)算法的流程:

首先初始化分布参数θ;

迭代直到收敛:

E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐含变量的现估计值:

M步骤:将似然函数最大化以获得新的参数值:

将M步骤的公式还是有点高大上,分开写就更直观一点了:

收敛后就是我们需要的最有参数估计了。

边学边写的难免有不少错误,也引用了不少同行的公式:EM算法,在此表示感谢

从极大似然函数到EM算法的更多相关文章

  1. 从最大似然函数 到 EM算法详解

    极大似然算法 本来打算把别人讲的好的博文放在上面的,但是感觉那个适合看着玩,我看过之后感觉懂了,然后实际应用就不会了.... MLP其实就是用来求模型参数的,核心就是“模型已知,求取参数”,模型的意思 ...

  2. 从似然函数到EM算法(附代码实现)

    1. 什么是EM算法 最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型 ...

  3. 含隐变量模型求解——EM算法

    1 EM算法的引入1.1 EM算法1.2 EM算法的导出2 EM算法的收敛性3EM算法在高斯混合模型的应用3.1 高斯混合模型Gaussian misture model3.2 GMM中参数估计的EM ...

  4. EM算法及其应用(一)

    EM算法及其应用(一) EM算法及其应用(二): K-means 与 高斯混合模型 EM算法是期望最大化 (Expectation Maximization) 算法的简称,用于含有隐变量的情况下,概率 ...

  5. EM算法定义及推导

    EM算法是一种迭代算法,传说中的上帝算法,俗人可望不可及.用以含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计 EM算法定义 输入:观测变量数据X,隐变量数据Z,联合分布\(P(X,Z|\t ...

  6. EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了

    摘自:https://www.zhihu.com/question/27976634 简单说一下为什么要用EM算法 现在一个班里有50个男生,50个女生,且男生站左,女生站右.我们假定男生的身高服从正 ...

  7. 学习笔记——EM算法

    EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(expectation):M步,求 ...

  8. 极大似然估计、贝叶斯估计、EM算法

    参考文献:http://blog.csdn.net/zouxy09/article/details/8537620 极大似然估计 已知样本满足某种概率分布,但是其中具体的参数不清楚,极大似然估计估计就 ...

  9. 高斯混合模型参数估计的EM算法

    # coding:utf-8 import numpy as np def qq(y,alpha,mu,sigma,K,gama):#计算Q函数 gsum=[] n=len(y) for k in r ...

随机推荐

  1. canvas初学 半动态画太极图

    可直接复制粘贴运行 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head&g ...

  2. 再谈RunLoop

    RunLoop 一 概述: 一句话解释RunLoop:运行任务的循环. 为什么要有RunLoop:解决交互式UI设计中的一个问题,如何快速响应用户输入,如何快速将程序运行结果输出到屏幕? 计算机是个笨 ...

  3. Linux下常用的配置

    本文主要给出的都是一些常用的Linux配置,系统版本是基于CentOs6.3,供自己复习和新人学习,不当之处还请指正. vmware tools安装 虚拟机--->安装vmware tools ...

  4. Maven之(六)setting.xml配置文件详解

    setting.xml配置文件 maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用户的目录:${user.h ...

  5. Activity平移动画

    Activity平移动画 效果图 添加动画文件 在res下添加anim文件夹,在anim下添加几个动画文件,分别是进入和退出的动画时间和移动距离,属性很简单,一看就懂,不磨叽了. tran_next_ ...

  6. How Do I Declare A Block in Objective-C? [备忘]

    How Do I Declare A Block in Objective-C? As a local variable: returnType (^blockName)(parameterTypes ...

  7. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

  8. 适配器模式(adapter)

    适配器模式的定义: 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起的那些类可以一起工作. 主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式. ...

  9. Java: How to resolve Access Restriction error

    Issue: Access restriction: The constructor 'BASE64Decoder()' is not API (restriction on required lib ...

  10. J-Robot,能走、能跳舞的机器人

      最近一个月基本上没有更新博客了,主要是和朋友一起在捣鼓J-Robot这个机器人,现在基本是可以控制它了,也算是一点小小的成就感吧.   先来几张图片吧. 再来一张:   是否觉得呆呆的?来,Jim ...