机器学习算法总结--EM算法

参考自

  • 《统计学习方法》
  • 机器学习常见算法个人总结(面试用)
  • 从最大似然到EM算法浅解
  • (EM算法)The EM Algorithm

简介

EM算法,即期望极大算法,用于含有隐变量的概率模型的极大似然估计或极大后验概率估计,它一般分为两步:第一步求期望(E),第二步求极大(M)。

如果概率模型的变量都是观测变量,那么给定数据之后就可以直接使用极大似然法或者贝叶斯估计模型参数。
但是当模型含有隐含变量的时候就不能简单的用这些方法来估计,EM就是一种含有隐含变量的概率模型参数的极大似然估计法。

应用到的地方:混合高斯模型、混合朴素贝叶斯模型、因子分析模型。

算法推导

这里写图片描述

这里写图片描述

上述公式相当于决定了L(θ)的下界,而EM算法实际上就是通过不断求解下界的极大化来逼近对数似然函数极大化的算法。

这里写图片描述

算法流程

算法流程如下所示:

这里写图片描述

收敛性

收敛性部分可以主要看(EM算法)The EM Algorithm的推导,最终可以推导得到如下公式:

L(θ(t+1))iziQ(t)i(z(i))logp(x(i),z(i);θ(t+1))Q(t)i(z(i))iziQ(t)i(z(i))logp(x(i),z(i);θ(t))Q(t)i(z(i))=L(θ(t))

特点

  1. 最大优点是简单性和普适性
  2. EM算法不能保证找到全局最优点,在应用中,通常选取几个不同的初值进行迭代,然后对得到的几个估计值进行比较,从中选择最好的
  3. EM算法对初值是敏感的,不同初值会得到不同的参数估计值

使用例子

EM算法一个常见的例子就是GMM模型,即高斯混合模型。而高斯混合模型的定义如下:

高斯混合模型是指具有如下形式的概率分布模型:

>P(y|θ)=k=1Kαkϕ(y|θk)>αkαk0,k=1Kαk=1;ϕ(y|θk)θk=(μk,σ2k),>ϕ(y|θk)=12πσkexp((yμk)22σ2k)>

ϕ(y|θk)称为第k个分模型。

每个样本都有可能由k个高斯产生,只不过由每个高斯产生的概率不同而已,因此每个样本都有对应的高斯分布(k<script type="math/tex" id="MathJax-Element-31">k</script>个中的某一个),此时的隐含变量就是每个样本对应的某个高斯分布。

GMM的E步公式如下(计算每个样本对应每个高斯的概率):

这里写图片描述

更具体的计算公式为:

这里写图片描述

M步公式如下(计算每个高斯的比重,均值,方差这3个参数):

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPP第四版第四章:创建动态数组

数组类型的变量有三个重要限制&#xff1a; 数组长度固定不变 在编译时必须知道其长度 数组只在定义它的块语句内存在 每一个程序在执行时都占用一块可用的内存空间&#xff0c;用于存放动态分配的对象&#xff0c;此内存空间称为程序的自由存储区或堆…

(转)非极大抑制(Non-Maximum Suppression)

转载自非极大抑制&#xff08;Non-Maximum Suppression&#xff09;。 参考文章&#xff1a; 1. Non-Maximum Suppression for Object Detection in Python 2. NMS非极大值抑制 最近在做人脸识别的项目&#xff0c;其中在人脸检测算法中MTCNN算法是用到了NMS算法来筛选候选…

安装配置Eclipse开发PHP环境配置

文章结束给大家来个程序员笑话&#xff1a;[M] Eclipse发开PHP环境配置 首先准备好件软&#xff1a; 1. Apache,到这里找个最新本版 2. PHP&#xff0c;到这里下载 3. Eclipse IDE for Java EE Developers&#xff0c;到这里下载 4. DLTK Core Frameworks 1.0 Integration buil…

C++ 输入一行未知个数的整数

最近笔试的时候&#xff0c;编程题遇到这样要求的输入&#xff0c;需要输入一行整数&#xff0c;个数未知&#xff0c;然后整数之间用空格间隔&#xff0c;如下所示&#xff1a; 11 22 333 45 62 代码如下所示&#xff1a; int main() {vector<int> inputs;int n 0, …

[原]好玩的Linux,关于时间cal命令

我们都知道&#xff0c;在Linux中&#xff0c;可以通过cal命令来查看日历。Cal怎么用呢&#xff0c;我们可以man一下&#xff0c;可以看到如下结果&#xff1a; 我们可以看到cal命令的基本用法如下&#xff1a;cal [-smjy13] [[[day] month] year] 当然如果不加指定参数的话&a…

python appium自动化测试平台开发,Python+Appium实现自动化测试

一、环境准备1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm2.安装Java JDK 、Android SDK3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools4.安装Appium for windows&#xff0c;官网地址http://appium.io/点击下载按钮会到GitHub的下载…

基于CNN的增量学习论文的读后感

最近在阅读几篇基于CNN的增量学习的论文。 《INCREMENTAL LEARNING WITH PRE-TRAINED CONVOLUTIONAL NEURAL NETWORKS AND BINARY ASSOCIATIVE MEMORIES》 09-19 阅读 第一篇论文是《INCREMENTAL LEARNING WITH PRE-TRAINED CONVOLUTIONAL NEURAL NETWORKS AND BINARY ASSOC…

卷积神经网络(CNN)介绍

简单介绍和总结卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;的基本组成网络层和常用的网络结构。 参考文章/书籍&#xff1a; An Intuitive Explanation of Convolutional Neural Networks对CNN中pooling的理解《深度学习轻松学&#xff1a;核心算法与…

CC2540低功耗的内幕

一、概述 1、BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分&#xff1a;控制器和主机。对于4.0以前的蓝牙&#xff0c;这两部分是分开的。所有profile&#xff08;姑且称为剧本吧&#xff0c;用来定义设备或组件的角色&#xff09;和应用都建构在GAP或GATT之上。下面…

前端开发怎么用php,做web前端开发怎么样?

前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色。从狭义上讲&#xff0c;前端工程师使用 HTML、CSS、JavaScript 等专业技能和工具将产品UI设计稿实现成网站产品&#xff0c;涵盖用户PC端、移动端网页&#xff0c;处理视觉和交互问题。从广义上来讲&#xff…

机器学习入门系列(1)--机器学习概览(上)

最近打算系统学习和整理机器学习方面的知识&#xff0c;会将之前看的 Andrew Ng 在 course 课程笔记以及最近看的书籍《hands-on-ml-with-sklearn-and-tf》结合起来&#xff0c;简单总结下机器学习的常用算法&#xff0c;由于数学功底有限&#xff0c;所以可能不会也暂时不能过…

oracle 安装display,Linux安装Oracle 11时报错DISPLAY解决方案

在Linux上安装Oracle时&#xff0c;经常会报以下错误&#xff1a;无法使用命令 /usr/X11R6/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了DISPLA在Linux上安装Oracle时&#xff0c;经常会报以下错误&#xff1a;无法使用命令 /usr/X11R6/bin/xdpyinfo 自动检查显示器颜色…

机器学习入门系列(2)--机器学习概览(下)

这是本系列的第二篇&#xff0c;也是机器学习概览的下半部分&#xff0c;主要内容如下所示&#xff1a; 文章目录1. 机器学习的主要挑战1.1 训练数据量不足1.2 没有代表性的训练数据1.3 低质量的数据1.4 不相关的特征1.5 过拟合1.6 欠拟合2. 测试和评估3. 小结1. 机器学习的主要…