数据分析实战45讲
陈旸
清华大学计算机博士
立即订阅
17314 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你为什么需要数据分析能力?
免费
第一模块:数据分析基础篇 (16讲)
01丨数据分析全景图及修炼指南
02丨学习数据挖掘的最佳路径是什么?
03丨Python基础语法:开始你的Python之旅
04丨Python科学计算:用NumPy快速处理数据
05丨Python科学计算:Pandas
06 | 学数据分析要掌握哪些基本概念?
07 | 用户画像:标签化就是数据的抽象能力
08 | 数据采集:如何自动化采集数据?
09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论
10丨Python爬虫:如何自动化下载王祖贤海报?
11 | 数据科学家80%时间都花费在了这些清洗任务上?
免费
12 | 数据集成:这些大号一共20亿粉丝?
13 | 数据变换:考试成绩要求正态分布合理么?
14丨数据可视化:掌握数据领域的万金油技能
15丨一次学会Python数据可视化的10种技能
16丨数据分析基础篇答疑
第二模块:数据分析算法篇 (20讲)
17 丨决策树(上):要不要去打篮球?决策树来告诉你
18丨决策树(中):CART,一棵是回归树,另一棵是分类树
19丨决策树(下):泰坦尼克乘客生存预测
20丨朴素贝叶斯分类(上):如何让机器判断男女?
21丨朴素贝叶斯分类(下):如何对文档进行分类?
22丨SVM(上):如何用一根棍子将蓝红两色球分开?
23丨SVM(下):如何进行乳腺癌检测?
24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?
25丨KNN(下):如何对手写数字进行识别?
26丨K-Means(上):如何给20支亚洲球队做聚类?
27丨K-Means(下):如何使用K-Means对图像进行分割?
28丨EM聚类(上):如何将一份菜等分给两个人?
29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分
30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
31丨关联规则挖掘(下):导演如何选择演员?
32丨PageRank(上):搞懂Google的PageRank算法
33丨PageRank(下):分析希拉里邮件中的人物关系
34丨AdaBoost(上):如何使用AdaBoost提升分类器性能?
35丨AdaBoost(下):如何使用AdaBoost对房价进行预测?
36丨数据分析算法篇答疑
第三模块:数据分析实战篇 (7讲)
37丨数据采集实战:如何自动化运营微博?
38丨数据可视化实战:如何给毛不易的歌曲做词云展示?
39丨数据挖掘实战(1):信用卡违约率分析
40丨数据挖掘实战(2):信用卡诈骗分析
41丨数据挖掘实战(3):如何对比特币走势进行预测?
42丨当我们谈深度学习的时候,我们都在谈什么?
43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
第四模块:数据分析工作篇 (2讲)
44丨如何培养你的数据分析思维?
45丨求职简历中没有相关项目经验,怎么办?
加餐 (1讲)
加餐丨在社交网络上刷粉刷量,技术上是如何实现的?
结束语 (1讲)
结束语丨当大家都在讲知识和工具的时候,我更希望你重视思维和实战
数据分析实战45讲
登录|注册

28丨EM聚类(上):如何将一份菜等分给两个人?

陈旸 2019-02-15
今天我来带你学习 EM 聚类。EM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法。
我们先看一个简单的场景:假设你炒了一份菜,想要把它平均分到两个碟子里,该怎么分?
很少有人用称对菜进行称重,再计算一半的分量进行平分。大部分人的方法是先分一部分到碟子 A 中,然后再把剩余的分到碟子 B 中,再来观察碟子 A 和 B 里的菜是否一样多,哪个多就匀一些到少的那个碟子里,然后再观察碟子 A 和 B 里的是否一样多……整个过程一直重复下去,直到份量不发生变化为止。
你能从这个例子中看到三个主要的步骤:初始化参数、观察预期、重新估计。首先是先给每个碟子初始化一些菜量,然后再观察预期,这两个步骤实际上就是期望步骤(Expectation)。如果结果存在偏差就需要重新估计参数,这个就是最大化步骤(Maximization)。这两个步骤加起来也就是 EM 算法的过程。

EM 算法的工作原理

说到 EM 算法,我们先来看一个概念“最大似然”,英文是 Maximum Likelihood,Likelihood 代表可能性,所以最大似然也就是最大可能性的意思。
什么是最大似然呢?举个例子,有一男一女两个同学,现在要对他俩进行身高的比较,谁会更高呢?根据我们的经验,相同年龄下男性的平均身高比女性的高一些,所以男同学高的可能性会很大。这里运用的就是最大似然的概念。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据分析实战45讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(22)

  • third
    想起了一个故事,摘叶子
    要找到最大的叶子
    1.先心里大概有一个叶子大小的概念(初始化模型)
    2.在三分之一的的路程上,观察叶子大小,并修改对大小的评估(观察预期,并修改参数)
    3.在三分之二的路程上,验证自己对叶子大小模型的的评估(重复1,2过程)
    4.在最后的路程上,选择最大的叶子(重复1.2,直到参数不再改变)

    相同点
    1.EM,KMEANS,都是随机生成预期值,然后经过反复调整,获得最佳结果
    2.聚类个数清晰

    不同点
    1.EM是计算概率,KMeans是计算距离。
    计算概率,概率只要不为0,都有可能即样本是每一个类别都有可能
    计算距离,只有近的的票高,才有可能,即样本只能属于一个类别

    编辑回复: 例子举的不错,相同和不同之处理解也很到位,大家都可以看看。

    2019-02-19
    20
  • FORWARD―MOUNT
    请问:

    通过猜测的结果{A, A, B, B, A}来完善初始化的参数θA 和θB。
    然后一直重复第二步和第三步,直到参数不再发生变化。


    怎么完善初始化参数?,急需解答。
    2019-03-28
    2
    7
  • 黄楚门的世界
    “”通过猜测的结果{A, A, B, B, A}来完善初始化的θA 和θB“” 这个步骤是怎样的?

    A 5
    A 7
    B 8
    B 9
    A 4
    θA=(5+7+4)/(10+10+10)
    θB=(8+9)/(10+10)
    2019-02-24
    6
  • mickey
    文中抛硬币的例子,应该还要说明“5组实验,每组实验投掷10次,每组中只能抛同一枚硬币”。
    2019-02-28
    5
  • Python
    em聚类和K均值的区别就是一个软一个硬,软的输出概率,硬的要给出答案。我理解的em聚类的过程是一个翻来覆去决策的过程,这种聚类方式是先确定一个初始化的参数,再反过来推算结果,看和自己期望的差距,又在翻回去调整。好就好在,你想要一个什么样的结果他都能慢慢给你调整出来

    编辑回复: 一软一硬这个说的很恰当!一个输出概率,一个输出明确的答案。

    2019-02-15
    4
  • 滨滨
    em算法是假定一个样本分布概率,然后根据最大似然估计进行聚类,然后根据聚类结果修正参数,直到结果不在变化,而kmeans算法则是根据随机确定初始点,根据欧式距离等算法来计算和初始点的距离,完成初始聚类,然后迭代直到聚类结果不发生变化。kmeans是计算硬聚类,em是软聚类。
    2019-04-05
    3
  • 松花皮蛋me
    有同学说:核心是初始参数啊。如果一开始就错那就完了。这完全是错的,只不过增加了更新次数而已。

    编辑回复: EM有自我更新的机制,就像K-Means一样,所以不用担心初始化参数,即使初始化参数不正确也会逐渐迭代出来结果。区别是在于迭代的次数,也就是运行的时间。这就好比把菜分到两个盘子中,一开始A盘很少,B盘非常多。这时候初始化参数并不理想,但是没有关系,EM机制通过参数估计,最终通过迭代会让两个盘子的分量一样多。只是迭代次数会略多一些。

    2019-02-18
    3
  • 滨滨
    说的通俗一点啊,最大似然估计,就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
    例如:一个麻袋里有白球与黑球,但是我不知道它们之间的比例,那我就有放回的抽取10次,结果我发现我抽到了8次黑球2次白球,我要求最有可能的黑白球之间的比例时,就采取最大似然估计法: 我假设我抽到黑球的概率为p,那得出8次黑球2次白球这个结果的概率为:
    P(黑=8)=p^8*(1-p)^2,现在我想要得出p是多少啊,很简单,使得P(黑=8)最大的p就是我要求的结果,接下来求导的的过程就是求极值的过程啦。
    可能你会有疑问,为什么要ln一下呢,这是因为ln把乘法变成加法了,且不会改变极值的位置(单调性保持一致嘛)这样求导会方便很多~
    2019-04-05
    2
  • 梁林松
    EM 就好像炒菜,做汤,盐多了放水,味淡了再放盐,直到合适为止。然后,就能得出放盐和水的比例(参数)
    2019-02-15
    2
  • 白夜
    EM,聚类的个数是已知的,首先,预设初始化的参数,然后获得对应的结果,再通过结果计算参数,不断循环以上两步,直到收敛。属于软分类,每个样本有一定概率和一个聚类相关。
    K-Means,聚类的个数也是已知的,首先选定一个中心点,然后计算距离,获得新的中心点,重复,直到结果收敛。属于硬分类,每个样本都只有一个分类。
    2019-02-15
    2
  • mickey
    to third:

    吴军老师说过,这种找最大叶子的问题,最优解最大概率会在37%的时候,而不是最后。
    2019-02-28
    1
  • 老师 冯
    “”通过猜测的结果{A, A, B, B, A}来完善初始化的θA 和θB“” 这个步骤是怎样的?跪求解答



    2019-02-19
    1
  • 追梦
    想起了一个故事,摘叶子
    要找到最大的叶子
    1.先心里大概有一个叶子大小的概念(初始化模型)
    2.在三分之一的的路程上,观察叶子大小,并修改对大小的评估(观察预期,并修改参数)
    3.在三分之二的路程上,验证自己对叶子大小模型的的评估(重复1,2过程)
    4.在最后的路程上,选择最大的叶子(重复1.2,直到参数不再改变)

    相同点
    1.EM,KMEANS,都是随机生成预期值,然后经过反复调整,获得最佳结果
    2.聚类个数清晰

    不同点
    1.EM是计算概率,KMeans是计算距离。
    计算概率,概率只要不为0,都有可能即样本是每一个类别都有可能
    计算距离,只有近的的票高,才有可能,即样本只能属于一个类别


    “”通过猜测的结果{A, A, B, B, A}来完善初始化的θA 和θB“” 这个步骤是怎样的?

    A 5
    A 7
    B 8
    B 9
    A 4
    θA=(5+7+4)/(10+10+10)
    θB=(8+9)/(10+10)

    以留言方式暂时记录一下
    2019-10-22
  • FeiFei
    EM聚类算法,通过假定参数值,来推断未知隐含变量。再不断重复这个过程,至到隐含变量恒定不变时,得出假定参数的值。也就是实际的聚类分类的结果。
    K-Means:非黑即白
    EM:黑白通吃
    2019-08-13
  • 对三要不起
    TO FORWARD―MOUNT
    【通过猜测的结果{A, A, B, B, A}来完善初始化的参数θA 和θB。
    然后一直重复第二步和第三步,直到参数不再发生变化。】

    这个步骤就是通过第一次随机,我们一直知道了顺序了可能是{A A B B A},然后就可以算出A和B投正面的概率,再通过算出来的这个新概率(之前是随即指定的),再去模拟一遍五组硬币,可能这次模拟出来的就不是{A A B B A}了,重复这个步骤直到模拟出来的五枚硬币不再改变。此时的概率就是A和B 投正面的概率。
    2019-05-19
  • 奔跑的徐胖子
    原理的话就拿老师的这个抛掷硬币的例子来看:
    1、初始的时候,我们并不知道1~5次试验抛掷的分别是A硬币还是B硬币,我们就先假设一下A、B正面向上的概率。
    2、通过我们假设的概率,我们根据1~5次实验中每次正面向上的频率,使用我们1中假设的A、B正面的概率来分别计算期望值。两个期望值比较哪个大,我们就觉得这次试验抛掷的是哪个硬币。
    3、我们通过2,就第一次将本来没有分类的试验(该次实验抛掷的是哪一个硬币)给分类了,但是这个结果是我们初始化一个随机的正面向上的概率来算出来的,不准确。
    4、我们把1、2、3的出来的初始的分类结果当做已知,通过全体数据来算一下此时A、B正面向上的概率(全体数据的频率),这样,我们就得到了类似2步骤中的正面向上的概率,这里就优化了A、B这面向上的概率(完善参数)。
    5、就这样一直重复2、3的过程,直到稳定为止
    2019-04-26
  • 奔跑的徐胖子
    EM的原理,其实就拿这个老师给的硬币的例子来看。初始的时候,我们只有一堆数据,并不知道试验1~5分别抛掷的是哪一个硬币。这样,我们先随机一下A、B两枚硬币的正面出现的概率。
    2019-04-26
  • 王彬成
    1、 EM 算法的原理?
    当我们需要从样本观察数据中,找出样本的模型参数。 但是问题含有未观察到的隐含数据,这时采用EM算法。
    在EM算法的Expectation步,先猜想隐含数据,接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数。(EM算法的Maximization步)。
    我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
    2、EM 聚类和 K-Means 聚类的相同和不同之处又有哪些?
    k-means 计算过程:
    1)随机选择k个类簇的中心
    2)计算每一个样本点到所有类簇中心的距离,选择最小距离作为该样本的类簇
    3)重新计算所有类簇的中心坐标,直到达到某种停止条件(迭代次数/簇中心收敛/最小平方误差)
    2019-02-23
  • 李沛欣
    今天的看完了。我理解的EM算法,是先估计一个大概率的可能参数,然后再根据数据不断进行调整,直到找到最终的确认参数。

    它主要有高斯模型和隐马尔科夫模型,前者在自然语言处理领域有很多应用。

    它和K-means都属于聚类算法,但是,EM属于软聚类,同一样本可能属于多个类别;而后者则属于硬聚类,一个样本只能属于一个类别。所以前者能够发现一些隐藏的数据。
    2019-02-20
  • 深白浅黑
    原理哪里都有,还是需要结合实战!
    个人觉得,如果从数学定义角度出发,会更容易对算法原理进行理解。
    EM算法是求解隐含参数的算法,依据算法推导过程,可以视为求局部最优解的方法,可以归属为求解凸函数的问题。
    https://www.cnblogs.com/bigmoyan/p/4550375.html
    2019-02-19
收起评论
22
返回
顶部