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

  统计/机器学习 无监督学习
5

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

谢谢!

 

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



   1个回答 
11

我对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            美            中年             黑 

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


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

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



高代兄   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


相关问题

关于小批量K均值(mini-batch K Means)的问题   2回答

K-MEANS初始点选择的问题   1回答

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

软聚类,硬聚类?   1回答

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

二分法K Means的算法是什么?和普通的K Means有什么区别?   2回答

K-means怎么选K?   2回答

怎么评价一个聚类算法?   1回答

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

sklearn.cluster.KMeans用的哪种距离?   1回答

进行K-Means聚类前,需要对数据做怎样的预处理?   1回答

可视化K Means的时候怎么把聚类的中心点和样本点连起来?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!