数据分析入门系列教程-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 算法的原理?

相关文章
|
6天前
|
SQL 数据挖掘 Python
R中单细胞RNA-seq数据分析教程 (1)
R中单细胞RNA-seq数据分析教程 (1)
23 5
R中单细胞RNA-seq数据分析教程 (1)
|
1月前
|
数据可视化 数据挖掘 大数据
Python 数据分析入门:从零开始处理数据集
Python 数据分析入门:从零开始处理数据集
|
21天前
|
数据采集 机器学习/深度学习 数据可视化
深入浅出:用Python进行数据分析的入门指南
【10月更文挑战第21天】 在信息爆炸的时代,掌握数据分析技能就像拥有一把钥匙,能够解锁隐藏在庞大数据集背后的秘密。本文将引导你通过Python语言,学习如何从零开始进行数据分析。我们将一起探索数据的收集、处理、分析和可视化等步骤,并最终学会如何利用数据讲故事。无论你是编程新手还是希望提升数据分析能力的专业人士,这篇文章都将为你提供一条清晰的学习路径。
|
30天前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--入门
Python数据分析篇--NumPy--入门
32 0
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python中的简单数据分析:入门指南
【10月更文挑战第2天】Python中的简单数据分析:入门指南
33 0
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
77 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
176 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
84 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
9天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
28 2