前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小孩都看得懂的聚类

小孩都看得懂的聚类

作者头像
用户5753894
发布2019-09-25 10:16:26
8440
发布2019-09-25 10:16:26
举报
文章被收录于专栏:王的机器王的机器
全文共 1448 字,45 幅图,

预计阅读时间 8 分钟。

本文是「小孩都看得懂」系列的第四篇,本系列的特点是没有公式,没有代码,只有图画,只有故事。内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!

  1. 小孩都看得懂的神经网络
  2. 小孩都看得懂的推荐系统
  3. 小孩都看得懂的逐步提升
  4. 小孩都看得懂的聚类

本文所有思路都来自 Luis Serrano 的油管视屏「Clustering: K-means and Hierarchical」,纯纯的致敬!我只是加了点场景使得内容更通俗点。

聚类是无监督学习中的最常见的方法,本帖介绍两种聚类方法:

  1. K 均值聚类 (K-Means Clustering), 1-3 节
  2. 层次聚类 (Hierarchical Clustering), 4-6 节

1

新加坡唐人街 (Chinatown) 开了家王大爷烧烤,店里每天生意不错,而且还有很多人叫外卖。

今天,店里收到很多外卖单子,如下图灰点所示,那么王大爷应该派多少个外卖员去送货呢?

直观来说,应该派 3 名送外卖的,每个人负责一区,如下图红、蓝、黄区所示。

那么这三个区是怎么聚类出来的呢?

2

方法太简单了,首先随机选三个点作为簇心 (centroid),如下图色五角星。为什么选三个下节解释,先接受它。

对每个灰点,计算它们到三个簇心的距离,离什么颜色簇心最近,就涂成什么颜色。

第一次「聚类」过程完毕,如下图。

根据最新聚类结果重新计算它们的簇心,如下图。

问题来了,有三个蓝点明显离黄色簇心更近呢。怎么办呢?把它们变成黄色呗。

同理,对下图两个红点

根据最新聚类结果重新计算它们的簇心,如下图。

再继续更正聚类错误的点。

根据最新聚类结果重新计算它们的簇心,直到没有任何聚类错误的点,如下图。

聚类完毕,一个值得思考的问题是到底需要多少个簇 (cluster) 呢?用肘部法则 (elbow method)。

3

实现我们是不知道有多少个簇心的,那就试着穷举几个,比如 1 到 6 个。按照上节的思路,做 6 次聚类过程直到收敛,如下图。

  • 1 个簇心不需要任何聚类 ...
  • 3 个簇心是上节结果 ...
  • 6 个簇心聚成 6 组

极限情况,我们有 22 个点,如果设 22 个簇心,那么每个点都被涂成不同颜色,但这样毫无意义。

在每种情况下,计算同一簇内两点间距离最大值

距离值 (y) 和簇心个数 (x) 画图,连线,找到一个类似胳膊肘的点,就选对应的簇心个数,解释在图中写出了。

4

K 均值聚类讲完了,接下来看看层次聚类。这次数据用少点,因为画着太累

5

层次聚类的规则不要太简单,每次找到距离最近的两个点,聚成一组,再重复直到。。。

直到两点距离太远了!!!这都能聚成一组真有点说不过去了,停了!

层次聚类完毕,一个值得思考的问题是如何决定两点之间距离「过大」而停止继续聚类呢?用树形图 (dendrogram)。

6

将数据点编号,作为树形图的横轴刻度,而纵轴是距离值,如下图所示。

按照上节的规则,找到找到距离最近的两个点,聚成一组。记下这两点的标号,在树形图上画出其距离 (红色半圈)。

不停的这样做,知道把所有数据聚成一组

画完树形图后,我们可以根据「不希望两点距离超过 d」来对其裁剪,如下图。这样我们得到上节的结果,把数据聚成两类。

此外,我们还可以根据「希望聚成 4 类」来对其裁剪,如下图。

小结

K 均值聚类层级聚类都非常简单,而确定它们聚类的停止条件,分别是肘部法则树形图也很直观。不管数据有多少维,肘部法则树形图永远是二维图。

聚类方法的应用也特别多,比如多因子投资中聚类数目繁多的因子,胶囊网络里面也有 K 均值聚类的影子等等。

这次你看懂了么?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王的机器 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档