K-means++算法思想
来源:互联网 发布:拉尼娅王后知乎 编辑:程序博客网 时间:2024/06/06 02:41
转自:http://www.cnblogs.com/yixuan-xu/p/6272208.htmlK-
说在前面:
在网上找了很多关于k-means++的中文文章,基本上就两个版本。这篇文章算一个(这个版本也就只有一篇);另外一个版本应该来自同一人所写(其他几乎都是复制粘贴),但总觉得不怎么对劲。还好本文原博客贴出了一篇k-means作者的论文,以及笔者参考了维基百科。这个版本应该更让人信服一点。
一、概述
measn++算法同原始的K-means算法的区别就在于初始中心点的选择。
原始K-means算法在开始随机选取数据集中K个点作为聚类中心,这样做的缺点就是,如果初始点的位置选择不当(例如都在一个簇里面),那么其最终的聚类结果将是非常糟糕的。
K-means++则按照如下思路选择K个初始中心点:假设已经选取了n个初始聚类中心(0< n < K,同Kmeans一样,其K值都是已知的),则在选取第n+1个聚类中心时:距离当前**已有的**n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。在选取第一个聚类中心(n=1)时同样通过随机的方法。当然这也非常符合我们直觉:聚类中心当然是相互离得越远越好
综述:k-means++与原始K-means的却别就在于初始点的处理上,确定好初始点之后,其余步骤都同Kmeans一样
二、算法步骤
Step 1:从数据集中随机选取一个样本点作为初始聚类中心
Step 2:首先计算每个样本与当前已有聚类中心之间的最短距离(即最近的聚类中心的距离),用
Step 3:重复第2步知道选择出K个聚类中心;
之后的步骤同原始K-means聚类算法相同;
2.1计算第二个中心点
下面结合一个简单的例子说明K-means++是如何选取初始聚类中心的。数据集中共有12个样本,分布以及对应序号如下图所示:
由上图可知,样本点一共有3个簇, 假设经过步骤一后6号点被选择为第一个初始聚类中心,那在进行步骤二时每个样本的D(x)和被选择为第二个聚类中心的概率如下表所示:
从表1我们可以看出,下一个聚类中心点落在1-4这四个点的概率区间为
此时,只要随机生成一个0-1之间的数(如matlab中的rand函数),就能确定好下一个聚类中心。假设下一个中心为第10个点,如下图,我们开始第三个中心点的计算。
2.2计算第三个中心点
此时我们同样需要计算所有点到其对应最近中心点的距离(也就是算出每个点到所有中心点的距离,然后选择最小的距离作为
同样我们可以看到,1-4这四个点的概率区间为
此时,三个初始中心点就已经选择好了。后面的步骤同原始K-means算法一样。
- K-means++算法思想
- K-Means算法(思想)
- K-means聚类算法背后的EM思想
- K-means hadoop实现思想
- K-means算法补充:K-means++
- k-means算法
- K-MEANS算法
- K-MEANS算法
- K-means算法
- k-means算法
- K-Means 算法
- K-Means 算法
- 深入浅出K-Means算法
- 聚类:K-means算法
- K-Means 算法
- k-means 算法
- 深入浅出K-Means算法
- K-Means 算法
- ORA-01541: system tablespace cannot be brought offline; shut down if necessary
- 单线程,多线程,线程池方法大文件指定单词数量统计
- 数据库基本命令
- Android LockSupport 分析
- BZOJ 1051 [HAOI2006]受欢迎的牛
- K-means++算法思想
- TP5上传图片Call to a member function move() on null
- GoldenGate(4)_问题答疑与部署中的错误记录
- SSL2776 2017年10月19日提高组 整除(容斥+dfs)
- C++实现string类
- bzoj 3173: [Tjoi2013]最长上升子序列
- JavaScript综述
- 2017-10-19-Mysql 常用函数
- idea中关闭当前文件快捷键