02 EM算法 - K-means算法回顾、EM概述

简介:

01 EM算法 - 大纲 - 最大似然估计(MLE)、贝叶斯算法估计、最大后验概率估计(MAP)

__K-means算法回顾__:03 聚类算法 - K-means聚类
__K-means算法__,也称为k-均值聚类算法,是一种非常广泛使用的聚类算法之一。

假定输入样本为S=x1,x2,x3,...,xm,则算法步骤为:
1、选择初始的k个簇中心点μ12,...,μk
2、将样本Xi标记为距离簇中心最近的簇: labeli;

3、迭代处理所有样本数据,计算出各个样本点所属的对应簇。
4、更新簇中心点坐标:μi
5、重复上述三个操作(2~4),直到算法收敛。

算法收敛条件:迭代次数/簇中心变化率/MSE/MAE。

几何意义

猜测有k个分类,每个分类对应的坐标是¼。使以此标准分类出来的 预测结果 和 真实分类 的误差最小

回到这个损失函数J(k,μ) ,我们的目的是将样本分成k个类,即样本中有k个隐藏的类别,而这k个类别是什么我不知道。我想找到这k个分类的坐标,利用这些坐标将样本集X进行划分。

EM的思想是,首先我先假定几个目标分类,但如何知道这些假定的分类是否正确?

我们使用样本的极大似然估计进行度量,如果找到的分类坐标能够让 P(预测结果=真实结果 | k) ,如果能够找到 k=y 让__P(预测结果=真实结果)__最大,那么说明y就是我们的最佳类别。而事实上我们知道,P(预测结果=真实结果)不仅仅依赖于分类的个数k=y,还依赖于分类点的初始值μ或等等其他因素。

我们就可以先固定k=y,然后调整μ的参数。在调整μ的过程中,我们可以获得一个更好的k值的选择。

最后重新指定k=ynew的作为初始值,再反复迭代计算 __P(预测结果=真实结果 | k)__的最大值,选择更好的y值。即我调整的是每一次K-means算法的初始聚类中心点,然后来找到最优的分类结果。

上述过程有几个难点:
第一,如何指定k=y? 是每种分类的划分都取相同的概率,还是不同分类结果有不同的概率?这种度量方式我们不知道。
第二,如何调正参数才能让最终的P(预测结果=真实结果|k,....)最大?

EM算法分为两步:
1、E - expectation 期望:估计出隐藏类别y的期望值。
2、M - Maximization 最大化:调整其他参数,使得在隐藏类别y的情况下能够达到最大值(极大似然估计),然后在其他参数确定的情况下,重新估计隐藏类别y的期望值。$color{red}{M步就是先算极大似然估计,然后更新期望值。}$
....


四、EM算法引入

EM算法举例:

公司有男同事=[A,B,C],同时有很多漂亮的女职员=[小甲,小章,小乙]。(请勿对号入座)你迫切的怀疑这些男同事跟这些女职员有“问题”。为了科学的验证你的猜想,你进行了细致的观察。于是:

观察数据:
1、A,小甲、小乙一起出门了;
2、B,小甲、小章一起出门了;
3、B,小章、小乙一起出门了;
4、C,小乙一起出门了;

收集到了数据,你开始了神秘的EM计算。


__初始化:__你觉得三个同事一样帅,一样有钱,三个美女一样漂亮,每个人都可能跟每个人有关系。所以,每个男同事跟每个女职员“有问题”的概率都是1/3;

EM算法中的__E步骤__:
1、A跟小甲出去过了 1/2 * 1/3 = 1/6 次,跟小乙也出去了1/6次;
2、B跟小甲,小章也都出去了1/6次;
3、B跟小乙,小章又出去了1/6次;
4、C跟小乙出去了1/3次;

总计:
A跟小甲出去了1/6次,跟小乙也出去了1/6次 ;
B跟小甲,小乙出去了1/6次,跟小章出去了1/3次;
C跟小乙出去了1/3。


EM算法中的__M步骤__ - 你开始__更新__你的八卦:
A跟小甲,小乙有问题的概率都是1/6 / (1/6 + 1/6) = 1/2;
B跟小甲,小乙有问题的概率是1/6 / (1/6+1/6+1/6+1/6) = 1/4;
B跟小章有问题的概率是(1/6+1/6)/(1/6 * 4) = 1/2;
C跟小乙有问题的概率是1。


EM算法中的__E步骤__ - 然后你又开始根据最新的概率计算了。
1、A跟小甲出去了 1/2 * 1/2 = 1/4 次,跟小乙也出去 1/4 次;
2、B跟小甲出去了1/2 1/4 = 1/8 次, 跟小章出去了 1/2 1/2 = 1/4 次;
3、B跟小乙出去了1/2 1/4 = 1/8 次, 跟小章又出去了 1/2 1/2 = 1/4 次;
4、C跟小乙出去了1次;

EM算法中的__M步骤__ - 重新反思你的八卦:
A跟小甲,小乙有问题的概率都是1/4/ (1/4 + 1/4) = 1/2;
B跟小甲,小乙是 1/8 / (1/8 + 1/4 + 1/4 + 1/8) = 1/6 ;
B跟小章是 2/3 ;
C跟小乙的概率是1。

你继续计算,反思,总之,最后,你得到了真相。


通过上面的计算我们可以得知,EM算法实际上是一个不停迭代计算的过程,根据我们事先估计的先验概率A,得出一个结果B,再根据结果B,再计算得到结果A,然后反复直到这个过程收敛。

可以想象饭店的后方大厨,炒了两盘一样的菜,现在,菜炒好后从锅中倒入盘,不可能一下子就分配均匀,所以先往两盘中倒入,然后发现B盘菜少了,就从A中匀出一些,A少了,从B匀.....


五、EM算法概述

EM算法(Expectation Maximization Algorithm, 最大期望算法)是一种迭代类型的算法,是一种在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量。

1、EM算法流程:

1、初始化分布参数。
2、重复下列两个操作直到收敛:
__E步骤:__估计隐藏变量的概率分布期望函数;
__M步骤:__根据期望函数重新估计分布参数。


2、EM算法原理

给定的m个训练样本{x(1),x(2),...,x(m)},样本间独立,找出样本的模型参数θ,极大化模型分布的对数似然函数如下:

假定样本数据中存在隐含数据z={z(1),z(2),...,z(k)},此时极大化模型分布的对数似然函数如下:


期望回顾

对于离散型随机变量X,我们定义X的数学期望为:
X有i个取值x1~xi,分别乘以i个变量发生的概率pi,加和之后就得到了随机变量的期望EX;

若X是一个随机变量,g(X)是任意实函数,那么g(X)的数学期望Eg(X)为:
同理,函数乘以函数发生的概率,最后得到了整个函数集合的期望Eg(X);

证明:令Y=g(X),则Y仍然是一个离散型随机变量,设其可能的取值为yj,j=1,2,3……。于是:

根据期望的定义:

结论:复合函数g(x)的期望,就等同于每个xi取值出现的概率pi,乘以这个xi的在g(x)中的映射值g(xi);


补充知识:Jensen不等式

如果函数f为凸函数,那么存在下列公式:

几何意义

拓展一下更多的点: 若θ1,...,θk≥0,θ1+....+θk=1;则

PS:如果我不是一个凸函数,是凹函数怎么办?

结论正好反一反即可。

凹函数时,结论的几何意义


2、EM算法原理(继续)

总结了__期望__和__Jensen不等式__的知识后,我们回过头继续推导EM算法原理。

Q(z) - 随机变量的分布。每一个取值对应的概率密度之和等于1;

令z的分布为Q(z;θ) ,并且Q(z;θ)≥0;那么有如下公式:
l(θ) 是我们一开始写到的极大似然估计的__最大化__的函数。

求l(¸)最大值,函数图像是凹函数

辅助理解 2~3行公式的推导

i辅助理解 3~4行公式的推导

1~4的公式推导理解后,有这样一个问题:回到下面这个公式,即 f(E(X))和 E(f(x)) 分别怎么求?

这里是凸函数的情况,我们求的是凹函数的极大值,所以符号相反

辅助理解3~5行公式的推导

一般情况下,z是隐含变量,我们不知道应该取多少合适。但有可能可以通过最后得到的这个公式对z进去求解。如果最后两步相等的话,我们就用公式的最后一步去替代l(θ),来求这个新公式的最大值。

问题来了,什么时候最后两步的公式相等?


根据不等式的性质,当下面式子中log内的随机变量为常数的时候,l(θ)和右边的式子取等号。

公式推导:

令z的分布为Q(z;¸) ,并且Q(z;¸)e0;那么有此公式

根据Jensen不等式的特性,当下列式子的值为常数的时候,l(θ)函数才能取等号。

纠正一个错误,所有z上面都有小i。最后一行第2个式子,对zi求和等于1,求联合概率的时候不影响,所以可以消掉

最后结论:如果__Q(z;θ) = p(z|x;θ)__ , l(θ)函数取得等号。

03 EM算法 - EM算法流程和直观案例

相关文章
|
6月前
|
数据采集 机器学习/深度学习 算法
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
192 6
|
5天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
6月前
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
211 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
6月前
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
201 1
|
4月前
|
机器学习/深度学习 算法 API
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
机器学习入门(五):KNN概述 | K 近邻算法 API,K值选择问题
|
4月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
56 0
|
6月前
|
人工智能 自然语言处理 算法
【人工智能】TF-IDF算法概述
TF-IDF算法,全称Term Frequency-Inverse Document Frequency(词频-逆文档频率),是一种在信息检索和文本挖掘领域广泛应用的加权技术。它通过评估一个词语在文档中的重要程度,来挖掘文章中的关键词,进而用于文本分析、搜索引擎优化等场景。其核心思想是:如果某个词或短语在一篇文章中出现的频率高(TF高),且在其他文章中很少出现(IDF也高),则认为这个词或短语具有很好的类别区分能力,适合用来代表这篇文章的内容。 具体而言,TF-IDF由两部分组成,即词频(TF)和逆文档频率(IDF)。词频(TF)指的是某一个给定的词在该文件中出现的频率。这个数值通常会被归一化
148 3
|
6月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
222 2
|
6月前
|
数据采集 资源调度 算法
【数据挖掘】十大算法之K-Means K均值聚类算法
K-Means聚类算法的基本介绍,包括算法步骤、损失函数、优缺点分析以及如何优化和改进算法的方法,还提到了几种改进的K-Means算法,如K-Means++和ISODATA算法。
323 4

热门文章

最新文章