EM算法真正理解

我们不仅要看专业书,还要多看看别人的经验,专业书虽然专业,但是很多时候对于入门的小白很不友好,我们也是学得一头雾水,好像是学会了,但又好像什么都没明白,仅仅记住它的公式,做了一两道例题,还是需要参考别人的经验理解的更快。

很感谢那些有想法的,也愿意用自己的语言帮助入门的小白更快理解的大神们,因为看到了很多半吊子学习的人,所以更加觉得大神的难得。

本文转自:https://zhuanlan.zhihu.com/p/36331115

本文我们将解决这些疑惑:EM算法到底是个什么玩意?它能做什么?它的应用场景是什么?

本文思路:

  • 一、 先讲解极大似然估计,然后过渡到 EM 算法,讲解EM算法到底是个啥以及它的核心。
  • 二、 讲解EM算法的推导公式,

极大似然和EM算法,与其说是一种算法,不如说是一个种解决问题的思想,解决一类问题的框架, 和线性回归,逻辑回归, 决策树等一些具体的算法不同, 极大似然和EM算法更加抽象,是很多具体算法的基础。

从极大似然到EM

极大似然

  • 1、 问题描述

假设我们需要调查我们学校学生的身高分布

我们先假设学校所有学生的身高服从正态分布 。(注意:极大似然估计的前提一定是要假设数据总体的分布,如果不知道数据分布,是无法使用极大似然估计的),这个分布的 均值方差 未知,如果我们估计出这两个参数,那我们就得到了最终的结果。那么怎样估计这两个参数呢?

学校的学生这么多,我们不可能挨个统计吧?这时候我们需要用到概率统计的思想,也就是抽样,根据样本估算总体。假设我们随机抽到了 200 个人(也就是 200 个身高的样本数据,为了方便表示,下面“人”的意思就是对应的身高)。然后统计抽样这 200 个人的身高。根据这 200 个人的身高估计均值 和 方差 。在这里插入图片描述
那么问题来了怎样估算参数 θ 呢?

  • 2、 估算参数

我们先回答几个小问题:

问题一:抽到这 200 个人的概率是多少呢?
在这里插入图片描述

这里就引入了 似然函数 的概念, 这里的因变量是 在不同的参数 θ 取值下, 取得当前这个样本集的可能性,它与常见的函数还是有区别的。 为了方便计算(很常见的转化很多时候都是这个原因)。 将它转化为 对数似然函数

取对数的另一个优点:

概率累积会出现数值非常小的情况,(很典型的情况)由于计算机的精度是有限的, 无法识别这一数据,取对数之后,更易于计算机的识别(数值变大之类)。

问题二:学校那么多学生,为什么就恰好抽到了这 200 个人 ( 身高) 呢?在这里插入图片描述
我们抽到了这 200 个学生,就默认他们的身高出现的概率极大(是这个意思吗?)

问题三:那么怎么求极大似然函数?
在这里插入图片描述

  • 3、 极大似然估计总结

极大似然估计你可以把它看作是一个反推。多数情况下我们是根据已知条件来推算结果,而极大似然估计是已经知道了结果,然后寻求使该结果出现的可能性极大的条件,以此作为估计值。

比如说,

  • 假如一个学校的学生男女比例为 9:1 (条件),那么你可以推出,你在这个学校里更大可能性遇到的是男生 (结果);
  • 假如你不知道男女比例,你走在路上,碰到100个人,发现男生就有90个 (结果),这时候你可以推断这个学校的男女比例更有可能为 9:1 (条件),这就是极大似然估计。

极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,通过若干次试验,观察其结果,利用结果推出参数的大概值。

极大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率极大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。

  • 4、 求极大似然函数估计值的一般步骤:

(1)写出似然函数;
(2)对似然函数取对数,并整理;
(3)求导数,令导数为 0,得到似然方程;
(4)解似然方程,得到的参数。

  • 5、 极大似然函数的应用

应用一: 回归问题中的极小化平方和(极小化代价函数)在这里插入图片描述
第一种方法:使用最小二乘法。
在这里插入图片描述
第二种方法: 使用极大似然法。
在这里插入图片描述

应用二:分类问题中极小化交叉熵 (极小化代价函数)
在这里插入图片描述

EM算法

“我不知道你是谁,但我可以猜”

  • 1 、 问题描述

在这里插入图片描述
简单啊,我们可以随便抽 100 个男生和 100 个女生,将男生和女生分开,对他们单独进行极大似然估计。分别求出男生和女生的分布。

假如某些男生和某些女生好上了,纠缠起来了。咱们也不想那么残忍,硬把他们拉扯开。这时候,你从这 200 个人(的身高)里面随便给我指一个人(的身高),我都无法确定这个人(的身高)是男生(的身高)还是女生(的身高)。用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布来的。那怎么办呢?

这是什么情况?即无法确定其对应哪个分布,以及它的分布值

  • 2、 EM算法

这个时候,对于每一个样本或者你抽取到的人,就有两个问题需要估计了,一是这个人是男的还是女的,二是男生和女生对应的身高的正态分布的参数是多少。这两个问题是相互依赖的(解决前者才能进一步解决后者):在这里插入图片描述
但是现在我们既不知道每个学生是男生还是女生,也不知道男生和女生的身高分布。这就成了一个先有鸡还是先有蛋的问题了。鸡说,没有我,谁把你生出来的啊。蛋不服,说,没有我,你从哪蹦出来啊。为了解决这个你依赖我,我依赖你的循环依赖问题,总得有一方要先打破僵局,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终就会收敛到一个解(草原上的狼和羊,相生相克)。这就是EM算法的基本思想了。

EM算法与极大似然估计的区别: 无法通过极大化概率来求得模型参数, 即参数不是常量,而是根据不同的隐变量拥有不同的值,相当于极大似然估计是在求相同分布的样本,而EM算法是在求不同分布的样本的组合,各个子样本的分布尚未确定(我们就是为了求参数来确定样本), 并且不同分布的子样本我们也没有分开。所以EM不仅要求参,还要划分开各个不同分布的样本,是两个步骤。
EM算法基本思想: 产生一个初值,然后根据初值的不断变化调整参数,进行迭代互相推导。 E Expectation 第一步, 负责划分开不同样本, M Maximization 负责估计参数。 我们都只到,一开始呢服了一个初值参数, 即 θ1 , 现在划分了不同样本 {z1, z2} 后再估计参数, 就有了 θ2, θ2 和 θ1 不一样,所以模型划分男女的标准不一样,有一部分人本来是男生,又被划分为女生,有一部分女生,又被划分为男生,所以样本再次被划分, {z1’ ,z2’} , 然后再估计参数, 就有了 θ3, 这样不断迭代,最终会得到一个满意解使得参数不会改变, 而且样本也不会再次划分。或满足条件。

思维拓展: 为什么这样迭代下去, 最终会趋于一个满意解?

EM的具体方法为:
在这里插入图片描述
先设置分布参数, 然后进行分类,然后再调整参数,然后再进行分类,如此循环,直到参数不发生变化或满足条件为止。

  • 3、 上面的学生属于男生还是女生我们称之为隐含参数,女生和男生的身高分布参数称为模型参数

EM 算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含参数(EM 算法的 E 步),接着基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐含参数是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。我们基于当前得到的模型参数,继续猜测隐含参数(EM算法的 E 步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

一个最直观了解 EM 算法思路的是 K-Means 算法。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的 E 步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。

EM 算法推导

  • 1、 基础知识

(1) 凸函数
设是定义在实数域上的函数,如果对于任意的实数,都有:
在这里插入图片描述

那么是凸函数。若不是单个实数,而是由实数组成的向量,此时,如果函数的 Hesse 矩阵是半正定的,即在这里插入图片描述
在这里插入图片描述

(2)Jensen不等式

如下图,如果函数 f 是凸函数,x 是随机变量,有 0.5 的概率是 a,有 0.5 的概率是 b, x 的期望值就是 a 和 b 的中值了那么:在这里插入图片描述在这里插入图片描述
特别地,如果函数 f 是严格凸函数,当且仅当:p(x = E(x)) = 1 (即随机变量是常量) 时等号成立。在这里插入图片描述
注:若函数 f 是凹函数,Jensen不等式符号相反。

(3) 期望在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值