混合模型的MAP期望最大化算法

我正在尝试为伯努利分布混合情况下的EM算法编写MAP更新公式。

我知道对于最大似然估计,我们有以下步骤:

E-step: 计算P(Z|X,p,t)M-Step: (p,t)<-argmax sum(over Z): p(Z|X,p,t)log p(X,Z|p,t)

其中p是每个类别的向量参数(共有K个,每个大小为D,其中K是类别数,D是特征数),t是每个类别的多项式参数。

但是,如何获得MAP估计呢?p(X)会是什么…?


回答:

根据Kevin P. Murphy的《机器学习 – 概率视角》第350页:

在M步,我们针对theta优化Q函数(辅助函数):

theta^t = argmax_theta Q(theta,theta^{t-1})

这是最大似然估计,而为了执行MAP估计,我们修改M步如下:

theta^t = argmax_theta Q(theta,theta^{t-1})+log(p(theta))

theta是参数,theta^{t-1}是参数的前一次近似值,theta^t是当前值。

其中Q是

Q(theta,theta^{t-1}) = E[logL(theta)|Data,theta^{t-1}]

E步保持不变

因此,ML和MAP之间的主要区别在于argmax中加入了log(p(theta)),即参数的对数先验。

对于一个特定的例子,其中先验p(theta)服从beta(alpha,beta)分布,我可以参考这里的最后一个作业答案:作业

使用你的先验或保持一般先验应该很简单。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注