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

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

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

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

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


EM 算法


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

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

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

其聚类过程如下

微信图片_20220520182823.gif

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为正面,那么此时的概率为:

微信图片_20220520182932.png

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

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

微信图片_20220520182935.png

可以看出,这种假设下,实验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 两步,直到数据不再变化为止。


微信图片_20220520183047.png

练习题


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

相关文章
|
30天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【8月更文挑战第29天】在数据驱动的时代,掌握数据分析技能变得尤为重要。本文将引导您了解如何使用Python这一强大工具来进行数据分析,从设置开发环境到实际操作案例,逐步深入,帮助您建立起数据分析的基本框架和思维模式。通过阅读本文,您将学会如何利用Python处理、分析和可视化数据,为进一步深入学习奠定坚实的基础。
|
17天前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。
|
1月前
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。
|
29天前
|
数据采集 机器学习/深度学习 数据可视化
使用Python进行数据分析的入门指南
【8月更文挑战第30天】本文将引领读者进入Python在数据分析领域的应用,通过实际案例和代码示例,帮助初学者理解并掌握数据处理、可视化以及模型构建的基本技能。我们将从数据探索开始,逐步深入到数据清洗、分析和预测建模,最后以一个综合案例结束,旨在让读者能够独立完成一个数据分析项目。
|
1月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
46 2
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
103 4
|
1月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
54 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
27天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
48 5
|
1月前
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
76 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
本文提供了第十一届泰迪杯数据挖掘挑战赛B题问题二的详细解题步骤,包括时间序列预测模型的建立、多元输入时间预测问题的分析、时间序列预测的建模步骤、改进模型的方法,以及使用Python进行SARIMA模型拟合和预测的具体实现过程。
52 1

热门文章

最新文章