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

一、极大似然估计:

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

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

极大似然估计,又名最大似然估计,其基本思想是:当我们从模型总体随机抽取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. pip: unsupported locale setting

    在终端里输入 $ export LC_ALL=C 可解决 http://stackoverflow.com/questions/36394101/pip-install-locale-error-un ...

  2. java中的final和volatile详解

    相比synchronized,final和volatile也是经常使用的关键字,下面聊一聊这两个关键字的使用和实现 1.使用 final使用: 修饰类表示该类为终态类,无法被继承 修饰方法表示该方法无 ...

  3. 推荐几种PHP实现页面跳转的方法

    1.PHP实现页面跳转第一种方法 <?php header("Location:http://www.baidu.com"); ?> header()是php内置函数, ...

  4. Docker快速配置指南

    下面是一个跟 Docker 网络相关的命令列表. 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效. -b BRIDGE or --bridge=BRIDGE --指定容 ...

  5. Oracle中rownum的说明及使用技巧

    一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...

  6. Linux系统网络性能实例分析

    由于TCP/IP是使用最普遍的Internet协议,下面只集中讨论TCP/IP 栈和以太网(Ethernet).术语 LinuxTCP/IP栈和 Linux网络栈可互换使用,因为 TCP/IP栈是 L ...

  7. Dynamics CRM2016 Web API之删除单个查找字段值

    之前的博文中有介绍过,Web Api中的一个删除单个属性的Api但没提供查找字段的删除方法,本篇补充上,这里给出的示例代码是C#的(主要看url的拼接),看下url中最后的/$ref,这个标示表明了当 ...

  8. 【Android应用开发】RecycleView API 翻译 (文档翻译)

    . RecyclerView extends ViewGroupimplements ScrollingView NestedScrollingChild java.lang.Object    ↳ ...

  9. SQLite AND/OR 运算符(http://www.w3cschool.cc/sqlite/sqlite-and-or-clauses.html)

    SQLite AND/OR 运算符 SQLite 的 AND 和 OR 运算符用于编译多个条件来缩小在 SQLite 语句中所选的数据.这两个运算符被称为连接运算符. 这些运算符为同一个 SQLite ...

  10. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率. 1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4 ...