K-Means 聚类原理

前言

K-Means 是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。

原理

假设有一些点分散在直线上,现在需要对这些点进行聚类分析。

1

聚类过程

第一步,想一下我们希望最终将这些点聚为多少类?

假设我们希望聚为3类

提前指定分类数,即K-means中K的含义

第二步,在这些点中随机选择3个点,作为初始簇(initial cluster)

2

第三步,计算第一个点f分别到这3个initial cluster的距离

3

第四步,将第一个点归属为距离最近的那个cluster

4

重复第三/四步

5

一一判断所有点的归属

6

第五步,计算每一个cluster的均值

7

然后像之前一样,通过计算每个点到这些均值的距离,重新判断每个点归属于哪个cluster

8

判断完每个点的归属之后,重新计算均值……判断归属……计算均值……判断归属……直到聚出来的cluster不再变化

9

在这个案例中,我们第一次随机的3个initial cluster就不再变化了,这是个巧合。一般而言,需要多轮均值计算后,cluster才会稳定。下面的案例便是。

判断聚类的好坏

很明显,上面的聚类效果很差,还不如我们肉眼聚类出来的效果。是否有办法判断不同聚类结果的好坏呢?

10

第一步,计算每一个cluster的总变差(total variation)

11

第二步,重新选择3个initial cluster,并且多次迭代判断cluster,计算total variation

12

第三步,多次重复上一步的内容,选择total variation最小的聚类结果

13

重复聚类的次数可以选择遍历所有点的组合,也可以设置固定数字

例如R中kmeans()函数中nclust参数代表尝试不同initial cluster的次数

选择最优K值

在本文的案例中,我们通过肉眼可以判断出K选择3比较好。但是如果我们自己无法判断时,如何处理?

一种方法是直接尝试不同的K值进行聚类

K=1是最差的一种结果,total variation此时最大

14

K=2的效果会稍微好些

15

随着K值增大,total variation也逐渐减小;当K=N(样本数)时,total variation降至0。

绘制total variation随K值变化的elbow plot

16

可以看出,K>3时,variation的降低速率明显降低。所以K=3是较好的选择。

多维数据K-means

二维平面上的点,可以通过欧式距离来判断聚类

17

然后同之前一般,计算平面上同一cluster的中心,重新判断点的归属,寻找中心……判断归属……

18

欧式距离的详细说明,可以参考Hierarchical Clustering

Heatmap K-means

对于热图相关数据,也可以通过欧式距离来判断样本的聚类

19

详细过程请参考Hierarchical Clustering

Reference

https://blog.csdn.net/huangfei711/article/details/78480078

https://www.biaodianfu.com/k-means-choose-k.html

https://www.youtube.com/watch?v=4b5d3muPQmA&feature=youtu.be

申明

本文是根据StatQuest系列视频整理而来
已获得Josh Starmer授权说明
感谢久久琼殷不辞辛苦将视频转载至B站

Permmsion

你可能感兴趣的:(K-Means 聚类原理)