什么是K-Modes(K众数)聚类法?

  统计/机器学习 无监督学习    浏览次数:18070        分享
6

最近听说了一个K-Modes聚类法,听说是基于K-Means在分类特征上改良的聚类算法。但是没有找到相关的资料,有知道算法的具体细节的吗?

谢谢!

 

机器小白   2017-04-07 11:07



   1个回答 
18

我对K-Modes Clustering(K众数聚类)还算熟悉。我可以讲一讲。


K-Modes和K-Means非常类似。

相同点:我们在算法开始前自己设定K,也就是聚类的个数;然后再自己设定K个初始中心点,所有样本点被聚类到离自己最近的那个中心点;根据每个聚类,重新计算中心点,所有样本点再重新被聚类。如此往复,直到每个样本点的归属不再改变或者达到某个预设的收敛条件。

不同点:K-Means是用每个聚类中的均值(mean)做中心点,K-Modes是用每个聚类中的众数(mode)做中心点。距离的定义也不同,通常K-Means较多使用欧式距离,K-Modes一般是汉明距离,也就是对于每个特征来说,如果不同记为1,相同则为0。



我可以举个例子。比如我们有10款手机需要聚类,我们关于这10款手机的数据都是分类数据(categorical)。

手机        国家        人群        颜色

1              中          青年           白

2              日          青年           黑

3              中          青年           蓝

4              中          青年           黑

5              日          青年           白

6              日          中年           黑

7              美          中年           蓝

8              美          中年           白

9              中          中年           黑

10            美          中年           黑 


假定我们选择聚类的数量K=2,初始点为手机1(中,青年,白)和手机6(日,中年,黑)。

下面开始计算距离。

手机        与手机1的距离        与手机6的距离

2                    2                                1

3                    1                                3

4                    1                                2

5                                                   2

7                    3                                2

8                    2                                2

9                    2                                1

10                  3                                1               

  

对于手机8来说,出现了打平,我们可以随机选择一个,假定手机8属于手机1的聚类。


聚类1:手机1, 3, 4, 5, 8

手机          国家          人群          颜色

1                中             青年          白

3                中             青年          蓝

4                中             青年          黑

5                日             青年          白

8                美             中年          白

 我们下面计算聚类1的新中心。

“国家”,中国三次,日本美国各一次,国家的众数是中国。

“人群”,青年四次,中年一次,众数是青年。

“颜色”,白色是众数。

所以聚类1的中心依然是(中,青年,白)。


聚类2:手机2, 6, 7, 9, 10

手机         国家         人群           颜色

2                        青年             黑 

6                         中年             黑 

7              美            中年             蓝

9              中            中年             黑

10            美            中年             黑 

同样地,我们可以计算这个聚类的中心点是(日,中年,黑)。


在这个例子中,比较巧合,经过一次迭代后,中心并没有改变,所以聚类就完成了。

也有时候,聚类的新的中心点不一定在数据集中出现,这个也是可能的,我们依旧会使用这个中心点。



SofaSofa数据科学社区DS面试题库 DS面经

高代兄   2017-04-16 05:20

如果我们把所有的categorical feature都先编码,然后再用KMeans,这样会有区别吗? - MeganC   2017-04-17 10:33
好问题!是的,有区别的。很多地方都有区别,OneHotEncoding之后,我们会有些binary的dummy variable,所以这些列的均值就是在0到1之间,然后这对dummy variable是没有意义的。此外,如果有个categorical feature有1000个level,有的categorical feature只有3个level,做了OneHotEncoding之后,这两个feature的权重就相当于变成了1000比3,严重失衡了。最重要的是,均值和众数本身也不一样。正如KMeans和KMedian的结果也会不同,一个道理。 - 高代兄   2017-04-19 14:28


  相关讨论

软聚类,硬聚类?

谱聚类中的相似矩阵是怎么定义的?

聚类问题可以用stacking model的方法吗?

层次聚类中的Ward's method是什么意思

dbscan 中的参数值如何确定?

层次聚类里的linkage是什么意思?

python中实现k-modes的包

HDBSCAN和DBSCAN这两种聚类方法有什么区别?

k均值有用到EM的思想吗?

一维的数据可以做聚类吗?

  随便看看

K-means怎么选K?

Pandas怎样对dataframe中的一个时间列进行排序?

把tf.Tensor转换为numpy array

python里清除已经定义过的变量

如何度量一个分布长尾的程度?