数据分析入门系列教程-EM原理

简介: 数据分析入门系列教程-EM原理

EM 算法又叫做最大期望算法,英文名称为 Expectation Maximization,也是一种聚类算法。是一种迭代算法,通过寻找最大似然估计值,来确定聚类。

什么是最大似然呢,假设我们有 A 和 B 两个参数,虽然我们不知道他们的具体值,但是如果给定了 A,就可以得出 B,反之亦然。那么我们就可以先赋予 A 一个初始值,然后得出一个 B 的估计值,然后再用 B 的当前值估计 A,再比较是否有误差,再反复迭代该过程,知道数据收敛为止。

由此,我们可以得出 EM 算法的过程

EM 算法

EM 算法主要分为三步:初始化参数,观察预期,重新估计。

首先给出每个参数的初始化值,然后再观察预期结果,这两步就是期望步骤,即 Expectation。如果结果存在误差,那么就需要重新估计预期参数,就是最大化步骤,即 Maximization。

而通常情况下,我们的 EM 聚类大多是基于高斯混合模型(GMM)的,即假设数据点是符合高斯分布的。这样,我们就拥有了两个参数来描述一组数据点,均值和方差!

其聚类过程如下


1.首先选择簇的数量(和 K-Means 所做的一样),并随机初始化每个簇的高斯分布参数。

2.给定每个簇的高斯分布,计算每个数据点属于一个特定簇的概率。一个点越靠近高斯的中心,它就越可能属于该簇。

3.基于这些概率,我们计算一组新的高斯分布参数使得簇内的数据点的概率最大化。

4.重复步骤 2 和 3 直到收敛,其中分布在迭代中的变化不大。

举个栗子

假设我们从一所高中里随机抽取了500个同学的鞋码数据,现在我们要在不知道任何信息的情况下对这500个数据进行分类,哪个是来自男生,哪个是来自女生;我们可以通过高斯分布来拟合数据,假设男生女生的鞋码都是符合高斯分布的。给定一个初始的参数值(均值和方差),根据这个已知参数的高斯分布可以粗略地将每一个数据都划分到指定类(属于男生或女生),这样我们就得到了500个鞋码的初始分类情况;接着利用这些属于男生分类的鞋码数据重新估计男生鞋码的高斯分布的参数,同样的方法重新估计出女生鞋码的高斯分布的参数;接着在男生和女生的鞋码分布被重新估计之后,归属于这两个分布的概率也随之会发生变化,那么我们就继续更新,这样多次迭代,直到两类的分布参数变化很小时停止迭代更新。

下面我们再通过一个简单的例子,来深入的理解下 EM 算法。

硬币实验

假设我们有 A 和 B 两种硬币,我们分别做了5组实验,每组实验投掷10次硬币,并统计出现正面的次数:

实验轮次 正面次数
1 5
2 7
3 8
4 9
5 4

同时,在投掷的过程中还有一个隐含数据,就是我们并不知道每次投掷的硬币是 A 还是 B,现在再次假设我们知道每次投掷的硬币种类,如下:

实验轮次 投掷的硬币种类 正面次数
1 A 5
2 B 7
3 B 8
4 B 9
5 A 4

现在我们可以求出每种硬币出现正面的次数

P(A) = (5+4)/(10+10) = 0.45,P(B) = (7+8+9)/(10+10+10) = 0.8

但是在实际情况中,我们是不知道正面的概率的,那么下面该如何使用 EM 的思想来求出正面概率呢?

运用 EM 算法

1.初始化参数。

假设硬币 A 和 B 的正面概率分别为 P(A) = 0.5 和 P(B) = 0.9

2.计算预期。

假设实验轮次1投掷的是硬币 A,因为实验1为正面,那么此时的概率为:


C(10,5)代表的是排列组合,意思为在10组中任意取出5组的组合方式,0.5的5次方乘以0.5的5次方意味5次为正面,5次为反面的概率

再假设实验轮次1投掷的是硬币 B,那么此时正面为5的概率为:


可以看出,这种假设下,实验1投掷硬币 A 的概率更大。

3.使用新的概率迭代

接下来我们再依次计算实验2-5,可以得出此时硬币的顺序为(A,A,B,B,A)。

现在就可以再根据当前得出的硬币顺序,来计算每种硬币正面的概率。然后再使用当前新的概率计算1,2步骤,直到硬币顺序不再改变为止。

与 K-Means 的异同

与 K-Means 算法相比,其最大的不同之处就是聚类的方式,K-Means 是通过距离来判断聚类的,而 EM 是通过概率。

对于 K-Means 算法,由于是通过距离来区分样本直接的差别,且每个样本再计算的时候只能属于一个分类,所以称之为硬聚类算法。而对于 EM 算法,每个样本都有一定的概率和每个聚类相关,所以称之为软聚类。

总结

其实对于 EM 算法来说,当前只要掌握其核心步骤即可。即 E 步骤,就是通过初始化参数值来估计隐含变量,M 步骤就是通过该该估计值来推导出新值并比较,观察差异。最后再迭代 E、M 两步,直到数据不再变化为止。


练习题

请用自己的话,总结下 EM 算法的原理?

相关文章
|
3月前
|
数据采集 存储 数据可视化
Python数据分析从入门到实践
Python数据分析从入门到实践
|
25天前
|
机器学习/深度学习 数据可视化 数据挖掘
利用Python进行数据分析与可视化:从入门到精通
本文将介绍如何使用Python语言进行数据分析与可视化,从基础概念到高级技巧一应俱全。通过学习本文,读者将掌握Python在数据处理、分析和可视化方面的核心技能,为实际项目应用打下坚实基础。
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python数据分析:从入门到实践
Python数据分析:从入门到实践
|
4月前
|
存储 数据挖掘 索引
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
27 0
Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
|
5月前
|
存储 机器学习/深度学习 数据挖掘
提升数据分析效率:Amazon S3 Express One Zone数据湖实战教程
提升数据分析效率:Amazon S3 Express One Zone数据湖实战教程
78 1
|
5月前
|
存储 数据挖掘 Python
借助 PyPDF2 库把数据分析系列教程文章制作成了PDF电子书,欢迎来领取!
借助 PyPDF2 库把数据分析系列教程文章制作成了PDF电子书,欢迎来领取!
|
5月前
|
数据采集 算法 数据可视化
数据分析入门系列教程-EM实战-划分LOL英雄
数据分析入门系列教程-EM实战-划分LOL英雄
|
4天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
13 1
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】金融数据分析中的机器学习应用
【4月更文挑战第30天】本文探讨了机器学习在金融数据分析中的应用,如股价预测、信用评分、欺诈检测、算法交易和风险管理,并以Python为例展示了如何进行股价预测。通过使用机器学习模型,金融机构能更准确地评估风险、识别欺诈行为并优化交易策略。Python结合scikit-learn库简化了数据分析过程,助力金融从业者提高决策效率。随着技术发展,机器学习在金融领域的影响力将持续增强。
|
3天前
|
数据采集 SQL 数据挖掘
Python数据分析中的Pandas库应用指南
在数据科学和分析领域,Python语言已经成为了一种非常流行的工具。本文将介绍Python中的Pandas库,该库提供了强大的数据结构和数据分析工具,使得数据处理变得更加简单高效。通过详细的示例和应用指南,读者将了解到如何使用Pandas库进行数据加载、清洗、转换和分析,从而提升数据处理的效率和准确性。