机器学习算法——EM算法

EM算法是一种迭代算法,分为E、M两步。他就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法  (将求已知量P(Y|θ)转换为求隐变量P(Y|Z,θP(Z|θ的过程)

       E步:利用当前估计的参数值,求出在该参数下隐含变量的条件概率值(计算对数似然的期望值)

      M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数的最大值(寻找能使E步产生的似然期望最大化的参数     值。)然后,新得到的参数值重新被用于E步.....直到收敛到局部最优解。(note:每次迭代实际在求Q函数及其极大,即每次迭代使似然函数增大或达到局部极值。)

优点:简单性和普适性,可看作是一种非梯度优化方法(解决梯度下降等优化方法的缺陷:求和的项数将随  着隐变量的数目以指数级上升,会给梯度计算带来麻烦)

缺点:对初始值敏感,不同的初值可能得到不同的参数估计值;不能保证找到全局最优值。


一、Jensen 不等式

        在EM算法的推导过程中,用到了数学上的Jensen不等式,这里先来介绍一下。 

其中

  

二、EM算法推导

    面对一个含有隐含变量Z的概率模型,目标是极大化观测数据Y关于参数   θ  的对数似然函数,即极大化: 


 

事实上,EM算法是通过迭代逐步极大化L(θ)L(θ)的。假设在第ii次迭代后θθ的估计值是θ(i)θ(i)。我们希望新的估计值θθ能使L(θ)L(θ)增加,即L(θ)>L(θ(i))L(θ)>L(θ(i)),并逐步达到极大值。为此考虑两者的差: 


   上式利用了Jensen不等式, 且zP(Z|Y;θ(i))=1∑zP(Z|Y;θ(i))=1,则可得上述推导。注意loglog为凹函数,不等号要改变方向




EM算法并不能保证全局最优值,直观解释如图所示。好好理解这个图 
这里写图片描述

三、EM算法在高斯混合模型中的应用:

高斯混合模型:


步骤:(1)明确隐变量,写出完全数据的对数似然函数。

    (2)EM算法的E步:确定Q函数(即:完全数据的对数似然函数关于在给定观测数据和参数的条件下对隐变量的条件概率的期望):  

    (3)M步:求Q函数对theta的极大值,即求新一轮迭代的模型参数。

四、采用EM算法求解的模型有哪些?为什么不用牛顿法或者梯度下降法?

一般有混合高斯、协同过滤、k-means。算法一定会收敛,但是可能会收敛到局部最优。求和的项数会随着隐变量的数目指数上升,会给梯度计算带来麻烦。EM算法是一种非梯度优化算法。

五、用EM算法推导解释K-means:

k-means算法是高斯混合聚类在混合成分方差相等,且每个样本仅指派一个混合成分时候的特例。k-means算法与EM算法的关系是这样的:

     注意k-means在运行之前需要进行归一化处理,不然可能会因为样本在某些维度上过大导致距离计算失效。

     k-means中每个样本所属的类就可以看成是一个隐变量,在E步中,我们固定每个类的中心,通过对每一个样 本选择最近的类优化目标函数,在M步,重新更新每个类的中心点,该步骤可以通过对目标函数求导实现,最终可得新的类中心就是类中样本的均值。

·1k-means是两个步骤交替进行:确定中心点,对每个样本选择最近中心点--> E步和M步。

· 2E步中将每个点选择最近的类优化目标函数,分给中心距它最近的类(硬分配),可以看成是EM算法中E(软分配)的近似。

·3 M步中更新每个类的中心点,可以认为是在「各类分布均为单位方差的高斯分布」的假设下,最大化似然值; 


  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pytorch是一个开源的机器学习框架,它提供了丰富的工具和函数来实现机器学习算法。它支持多种机器学习算法的实现,包括但不限于线性回归、逻辑回归、支持向量机、决策树、随机森林、神经网络等。你可以使用pytorch的内置计算函数或基本的运算符号来进行计算操作,同时pytorch还提供了优化器和损失函数来帮助优化模型的训练过程。 在pytorch中,你可以使用tensor类型的数据进行机器学习算法的实现。如果有批处理的需求,你可以使用dataloader来加载和处理数据。你可以建立模型并完成训练过程,包括前向传播、损失反向传播和参数优化。你还可以使用matplotlib等库进行数据可视化,以便更好地理解和分析模型的结果。 总结起来,pytorch提供了丰富的工具和函数,使得机器学习算法的实现变得简单而高效。你可以根据自己的需求选择合适的算法,并使用pytorch来进行模型的训练和优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习学习源码包含几乎所有机器学习算法pytorch实现源码.zip](https://download.csdn.net/download/DeepLearning_/88195974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [机器学习PyTorch——1.基本运算](https://blog.csdn.net/qq_52914337/article/details/122377696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Pytorch机器学习经典算法——线性回归](https://blog.csdn.net/qq_42887663/article/details/125667340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值