精选 | K-means++ 聚类算法和它的16种实现方式

Posted 七月在线实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精选 | K-means++ 聚类算法和它的16种实现方式相关的知识,希望对你有一定的参考价值。

在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。


先来看一个问题


K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?于是就出现了我们的K-Means算法。


(图片来自网络)


K-Means的演示


如果你以”K Means Demo“为关键字到Google里查你可以查到很多演示。这里推荐一个演示:http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html(需要墙)

操作是,鼠标左键是初始化点,右键初始化“种子点”,然后勾选“Show History”可以看到一步一步的迭代。这里提供一个不错的---->K Means Tutorial


K-Means++算法


K-Means主要有两个最重大的缺陷——都和初始值有关:


K是事先给定的,这个K值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。


K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。



K-Means++算法步骤



  1. 先从我们的数据库随机挑个随机点当“种子点”。

  2. 对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。

  3. 然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。

  4. 重复第(2)和第(3)步直到所有的K个种子点都被选出来。

  5. 进行K-Means算法。


关于这个算法的16种语言实现,可以在这里找到 “implement the K-means++ algorithm”(墙)---->

http://rosettacode.org/wiki/K-means%2B%2B_clustering




机器学习集训营

50人小班即满

最后 6 个名额疯抢中

7.10

>>即将开课<<



猛戳 阅读原文,了解更多集训营细节!

以上是关于精选 | K-means++ 聚类算法和它的16种实现方式的主要内容,如果未能解决你的问题,请参考以下文章

聚类算法K-means

K-Means算法:基于聚类的无监督机器学习算法

[聚类算法] K-means 算法

一种差分隐私K-means聚类算法的隐私预算分配方案

K-means聚类算法的三种改进(K-means++,ISODATA,Kernel K-means)介绍与对比

机器学习--聚类系列--K-means算法