首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >简单易学的机器学习算法——EM算法

简单易学的机器学习算法——EM算法

作者头像
felixzhao
发布于 2018-03-19 08:44:38
发布于 2018-03-19 08:44:38
3.1K12
代码可运行
举报
文章被收录于专栏:null的专栏null的专栏
运行总次数:2
代码可运行

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

二、EM算法简介

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

三、EM算法推导的准备

(图片来自参考文章1)
(图片来自参考文章1)

注:若函数

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

3、数学期望

四、EM算法的求解过程   

五、EM算法的收敛性保证

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

   

Python代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:UTF-8
'''
Created on 201567日

@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模块中的random
        X[0, i] = random.randn() * sigma + miu_1
    else:
        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 = 0
        for 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 = miu
    oldMiu = zeros((1, k))
    for j in xrange(k):
        oldMiu[0, j] = miu[0, j]
        numerator = 0
        denominator = 0
        for i in xrange(N):
            numerator = numerator + Expectations[i, j] * X[0, i]
            denominator = denominator + Expectations[i, j]
        miu[0, j] = numerator / denominator
        
    
    #判断是否满足要求
    epsilon = 0.0001
    if sum(abs(miu - oldMiu)) < epsilon:
        break
    
    print step
    print miu
    
print 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)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
老铁, 有几个公式,显示不出来?
老铁, 有几个公式,显示不出来?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
简单易学的机器学习算法——EM算法
    在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系列样本
felixzhao
2019/02/13
5310
Python AI 教学 | EM算法(Expectation Maximization Algorithm)及应用
假设目前有100个男生和100个女生的身高,共200个数据,但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高。假设男生、女生的身高分别服从正态分布,但每个样本从哪个分布抽取的,我们目前是不知道的。这个时候,对于每一个样本,就有两个方面需要猜测或者估计: 这个身高数据是来自于男生还是来自于女生?男生、女生身高的正态分布的参数分别是多少?EM算法要解决的问题正是这两个问题。
用户1621951
2019/10/18
2.1K0
Python AI 教学 | EM算法(Expectation Maximization Algorithm)及应用
【机器学习】--EM算法从初识到应用
EM算法是一种解决存在隐含变量优化问题的有效方法。EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization)步骤。
LhWorld哥陪你聊算法
2018/09/13
6130
【机器学习】--EM算法从初识到应用
简单易学的机器学习算法——Gibbs采样
一、Gibbs采样概述 前面介绍的Metropolis-Hastings采样为从指定分布中进行采样提供了一个统一的框架,但是采样的效率依赖于指定的分布的选择,若是选择的不好,会使得接受率比较低,大量的采样被拒绝,影响到整体的收敛速度。 Gibbs采样是Metropolis-Hastings采样算法的特殊形式,即找到一个已知的分布,使得接受率α=1\alpha =1。这样,每次的采样都会被接受,可以提高MCMC的收敛速度。 二、Gibbs采样算法的流程 image.png 三、上述过程满足细致平稳条件 ima
felixzhao
2018/03/20
1K0
简单易学的机器学习算法——Gibbs采样
高斯混合模型 GMM 的详细解释
来源:机器学习杂货店本文约3500字,建议阅读10+分钟本文为你介绍 KMeans 的一个替代方案之一,高斯混合模型。 高斯混合模型(后面本文中将使用他的缩写 GMM)听起来很复杂,其实他的工作原理和 KMeans 非常相似,你甚至可以认为它是 KMeans 的概率版本。这种概率特征使 GMM 可以应用于 KMeans 无法解决的许多复杂问题。 因为KMeans的限制很多,比如:它假设簇是球形的并且大小相同,这在大多数现实世界的场景中是无效的。并且它是硬聚类方法,这意味着每个数据点都分配给一个集群,这也是不
数据派THU
2023/05/11
1.1K0
高斯混合模型 GMM 的详细解释
简单易学的机器学习算法——Mean Shift聚类算法
一、Mean Shift算法概述 Mean Shift算法,又称为均值漂移算法,Mean Shift的概念最早是由Fukunage在1975年提出的,在后来由Yizong Cheng对其进行扩充,主要提出了两点的改进: 定义了核函数; 增加了权重系数。 核函数的定义使得偏移值对偏移向量的贡献随之样本与被偏移点的距离的不同而不同。权重系数使得不同样本的权重不同。Mean Shift算法在聚类,图像平滑、分割以及视频跟踪等方面有广泛的应用。 二、Mean Shift算法的核心原理 2.1、核函数 image.p
felixzhao
2018/03/20
2.3K0
简单易学的机器学习算法——Mean Shift聚类算法
机器学习22:概率图--EM算法与GMM(高斯混合模型)
EM算法(Expectation Maximization Algorithm, 最大期望算法)是一种迭代类型的算法,是一种在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量。
用户5473628
2019/08/08
2.6K0
机器学习22:概率图--EM算法与GMM(高斯混合模型)
简单易学的机器学习算法——谱聚类(Spectal Clustering)
一、复杂网络中的一些基本概念 1、复杂网络的表示 image.png 2、网络簇结构     网络簇结构(network cluster structure)也称为网络社团结构(network community structure),是复杂网络中最普遍和最重要的拓扑属性之一。网络簇是整个网络中的稠密连接分支,具有同簇内部节点之间相互连接密集,不同簇的节点之间相互连接稀疏的特征。 3、复杂网络的分类     复杂网络主要分为:随机网络,小世界网络和无标度网络。 二、谱方法介绍 1、谱方法的思想     在
felixzhao
2018/03/20
2.6K0
简单易学的机器学习算法——谱聚类(Spectal Clustering)
高斯混合模型与EM算法的数学原理及应用实例
http://www.tensorinfinity.com/paper_171.html
SIGAI学习与实践平台
2019/06/18
2K0
高斯混合模型与EM算法的数学原理及应用实例
【算法】Python实现机器学习算法
小编邀请您,先思考: 1 您使用Python做过什么? 2 如何用Python实现决策树系列算法? 人生苦短,就用 Python。 在 Kaggle 最新发布的全球数据科学/机器学习现状报告中,来自
陆勤_数据人网
2018/04/18
1.9K0
【算法】Python实现机器学习算法
机器学习(16)——EM算法示例
算法思想:含有隐变量的极大似然估计 我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。 但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。那么先复习一下极大似然估计。 极大似然估计(MLE) 直接举个例子: 某位同学与一位猎人一起外出打猎,一只野兔从前方窜过。只听一声枪响,野兔应声到下,如果要你推测,这一发命中的子弹是谁打
DC童生
2018/04/27
1.7K0
机器学习(16)——EM算法示例
数据分析入门系列教程-EM原理
EM 算法又叫做最大期望算法,英文名称为 Expectation Maximization,也是一种聚类算法。是一种迭代算法,通过寻找最大似然估计值,来确定聚类。
周萝卜
2020/12/15
7080
EM算法原理和应用
EM算法是带隐变量概率模型的推断算法。今天我们介绍 EM 算法的原理和应用。我们先介绍推导出 EM 算法的一般方法,再介绍另一种 EM 算法推导方法,最后将 EM 算法应用于高斯混合模型。
AlgorithmDog
2018/01/08
1.5K0
EM算法原理和应用
简单易学的机器学习算法——受限玻尔兹曼机RBM
受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种基于能量模型的神经网络模型,在Hinton提出针对其的训练算法(对比分歧算法)后,RBM得到了更多的关注,利用
felixzhao
2018/03/20
1.7K0
简单易学的机器学习算法——受限玻尔兹曼机RBM
简单易学的机器学习算法——AdaBoost
一、集成方法(Ensemble Method)     集成方法主要包括Bagging和Boosting两种方法,随机森林算法是基于Bagging思想的机器学习算法,在Bagging方法中,主要通过对训练数据集进行随机采样,以重新组合成不同的数据集,利用弱学习算法对不同的新数据集进行学习,得到一系列的预测结果,对这些预测结果做平均或者投票做出最终的预测。AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法。在
felixzhao
2018/03/19
9080
简单易学的机器学习算法——AdaBoost
简单易学的机器学习算法——非线性支持向量机
一、回顾 二、非线性问题的处理方法     在处理非线性问题时,可以通过将分线性问题转化成线性问题,并通过已经构建的线性支持向量机来处理。如下图所示: (非线性转成线性问题) (图片摘自:http:/
felixzhao
2018/03/16
8280
简单易学的机器学习算法——非线性支持向量机
简单易学的机器学习算法——谱聚类(Spectal Clustering)
    网络簇结构(network cluster structure)也称为网络社团结构(network community structure),是复杂网络中最普遍和最重要的拓扑属性之一。网络簇是整个网络中的稠密连接分支,具有同簇内部节点之间相互连接密集,不同簇的节点之间相互连接稀疏的特征。
felixzhao
2019/02/13
2.2K0
手把手教你理解EM算法原理
作者:Rachel Zhang 百度深度学习实验室RD,关注计算机视觉,机器学习,算法研究,人工智能, 移动互联网等学科和产业. 在聚类中我们经常用到EM算法(i.e. Expectation - Maximization)进行参数估计, 在该算法中我们通过函数的凹/凸性,在expectation 和maximization两步中迭代地进行参数估计,并保证可以算法收敛,达到局部最优解。 由于公式实在太多,这里我就手写了……主要讲了以下几个部分: 1. 凸集,凸函数,凹集,凹函数的概念 2.
机器学习AI算法工程
2018/03/12
1.4K0
手把手教你理解EM算法原理
EM Algorithm
EM算法和之前学的都不太一样,EM算法更多的是一种思想,所以后面用几个例子讲解,同时也会重点讲解GMM高斯混合模型。
西红柿炒鸡蛋
2018/09/07
1.2K0
简单易学的机器学习算法——K-Means++算法
一、K-Means算法存在的问题 由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指
felixzhao
2018/03/14
1.9K1
简单易学的机器学习算法——K-Means++算法
相关推荐
简单易学的机器学习算法——EM算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档