一、机器学习中的参数估计问题

二、EM算法简介

在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法。EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization)步骤。

三、EM算法推导的准备

(图片来自参考文章1)

注:若函数

是凹函数,上述的符号相反。

3、数学期望

四、EM算法的求解过程

五、EM算法的收敛性保证

六、利用EM算法参数求解实例

Python代码

#coding:UTF-8
'''
Created on 2015年6月7日@author: zhaozhiyong
'''
from __future__ import division
from numpy import *
import math as mt
#首先生成一些用于测试的样本
#指定两个高斯分布的参数,这两个高斯分布的方差相同
sigma = 6
miu_1 = 40
miu_2 = 20#随机均匀选择两个高斯分布,用于生成样本值
N = 1000
X = zeros((1, N))
for i in xrange(N):if random.random() > 0.5:#使用的是numpy模块中的randomX[0, i] = random.randn() * sigma + miu_1else:X[0, i] = random.randn() * sigma + miu_2#上述步骤已经生成样本
#对生成的样本,使用EM算法计算其均值miu#取miu的初始值
k = 2
miu = random.random((1, k))
#miu = mat([40.0, 20.0])
Expectations = zeros((N, k))for step in xrange(1000):#设置迭代次数#步骤1,计算期望for i in xrange(N):#计算分母denominator = 0for j in xrange(k):denominator = denominator + mt.exp(-1 / (2 * sigma ** 2) * (X[0, i] - miu[0, j]) ** 2)#计算分子for j in xrange(k):numerator = mt.exp(-1 / (2 * sigma ** 2) * (X[0, i] - miu[0, j]) ** 2)Expectations[i, j] = numerator / denominator#步骤2,求期望的最大#oldMiu = miuoldMiu = zeros((1, k))for j in xrange(k):oldMiu[0, j] = miu[0, j]numerator = 0denominator = 0for i in xrange(N):numerator = numerator + Expectations[i, j] * X[0, i]denominator = denominator + Expectations[i, j]miu[0, j] = numerator / denominator#判断是否满足要求epsilon = 0.0001if sum(abs(miu - oldMiu)) < epsilon:breakprint stepprint miuprint miu

最终结果

[[ 40.49487592  19.96497512]]

参考文章:

1、(EM算法)The EM Algorithm (http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html)

2、数学期望(http://wenku.baidu.com/view/915a9c1ec5da50e2524d7f08.html?re=view)

史上简单易学的机器学习算法——EM算法 缘木求鱼相关推荐

  1. 简单易学的机器学习算法——梯度提升决策树GBDT

    梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越 ...

  2. 简单易学的机器学习算法——Metropolis-Hastings算法

    在简单易学的机器学习算法--马尔可夫链蒙特卡罗方法MCMC中简单介绍了马尔可夫链蒙特卡罗MCMC方法的基本原理,介绍了Metropolis采样算法的基本过程,这一部分,主要介绍Metropolis-H ...

  3. 史上最全的机器学习深度学习面经总结

    史上最全的机器学习深度学习面经总结 提示:19年之后的面经,扩大了范围包括了cv,推荐,语音等面经中的知识点, 同时增加了那三本面经书的内容一些github上一些比较火的项目,大部分问题是重复的,去重 ...

  4. em算法怎么对应原有分类_机器学习基础-EM算法

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等.本文就对 ...

  5. 机器学习基础 EM算法

    文章目录 一.初识EM算法 二.EM算法介绍 1. 极大似然估计 1.1 问题描述 1.2 用数学知识解决现实问题 1.3 最大似然函数估计值的求解步骤 2. EM算法实例描述 3. EM算法流程 三 ...

  6. 机器学习算法_机器学习之EM算法和概率图模型

    [晓白]今天我准备更新Machine Learning系列文章希望对机器学习复习和准备面试的同学有帮助!之前更新了感知机和SVM,决策树&代码实战,关注我的专栏可以的文章哦!今天继续更新EM算 ...

  7. 机器学习(十)——期望值最大算法(EM算法)

    10.期望值最大算法(EM算法) 1.Jensen不等式 设 fff 为一个函数,其定义域(domain)为整个实数域(set of real numbers).这里要回忆一下,如果函数 fff 的二 ...

  8. 机器学习 之 EM算法

    EM(Expectation-Maximum)算法也称期望最大化算法 EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture m ...

  9. 期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用

    期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用 EM的应用 EM算法有很多的应用,最广泛的就是GMM混合高斯模型.聚类.HMM等等.具体可以参考Jerry ...

最新文章

  1. 电脑记事本_带日历的电脑桌面记事本?
  2. Java程序执行Linux命令
  3. GT-----FAQ整理
  4. python控制步进电机驱动器_树莓派操作案例1-使用python GPIO+TB6612驱动步进电机
  5. python爬虫:读取PDF
  6. 租车信息系统数据库设计(2)
  7. 第十一次课:Python函数(二)
  8. 基于SSM+Layui图书借阅管理系统设计
  9. 不知道怎么把英文文档翻译成中文?手把手教你怎么操作
  10. Office2016专业版打开超链接时提示“您的组织策略阻止我们为您完成此操作。...”问题解决
  11. 人物-胡玮炜:胡玮炜
  12. Qcon演讲纪实:详解如何在实时视频通话中实现AR功能
  13. 微信小程序简介账号注册流程(简)
  14. 快手“老”矣,尚能饭否?
  15. 新浪微博 ios/android 你所访问的站点在新浪微博的认证失败 解决方法
  16. window10新版本登录无限注销问题解决
  17. 安装tensorflow报错
  18. 苹果保修期查询_查询iPhone的保修日期和激活日期
  19. com.googlecode.genericdao
  20. WebServer应用示例:不到100行代码玩转Siri语音控制 | ESP32轻松学(Arduino版)

热门文章

  1. bootstrap-loader使用过程中遇到的几个坑爹问题
  2. 浅析Google的Gson解析
  3. 最新极光推送在ios模拟器上无法运行
  4. logrotate 日志切割 原理
  5. 工厂模式,设计电话卡类,具有属性姓名,具有动作计费,电话卡片分成 联通和移动,要求在控制台中输入联通 就能通过工厂生成一个联通的联通卡的对象,输入移动生成移动卡的对象,然后分别调用各自的计费方式打印出
  6. C语言中返回数组长度
  7. Python将某一文件夹下的Coursera课程字幕.vtt格式全部转换为.srt格式
  8. 哦耶,总算把博客皮肤做好咯。峰之博纹转地复活!满血满状态!
  9. 2010-10-12 VOA special English 01
  10. html打开网页过场动画_音视频格式转换神器与html视频元素加字幕——零基础自学网页制作