K-Means ++ 算法

简介: Kmeans算法的缺陷: • 聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适• Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决) K-Means ++ 算法: k-means++算法选择初始seeds的基本思想

Kmeans算法的缺陷:

• 聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适
• Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)


K-Means ++ 算法:


k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心
2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
4. 重复2和3直到k个聚类中心被选出来
5. 利用这k个初始的聚类中心来运行标准的k-means算法


从上面的算法描述上可以看到,算法的关键是第3步,如何将D(x)反映到点被选择的概率上,一种算法如下:

1. 先从我们的数据库随机挑个随机点当“种子点”
2. 对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。
3. 然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。
4. 重复2和3直到k个聚类中心被选出来
5. 利用这k个初始的聚类中心来运行标准的k-means算法

可以看到算法的第三步选取新中心的方法,这样就能保证距离D(x)较大的点,会被选出来作为聚类中心了。至于为什么原因比较简单,如下图所示: 


假设A、B、C、D的D(x)如上图所示,当算法取值Sum(D(x))*random时,该值会以较大的概率落入D(x)较大的区间内,所以对应的点会以较大的概率被选中作为新的聚类中心。

相关文章
|
4月前
|
算法 数据挖掘 计算机视觉
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
113 0
|
1月前
|
机器学习/深度学习 算法 数据可视化
请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
【2月更文挑战第29天】【2月更文挑战第104篇】请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】层次聚类AGNES、二分K-Means算法的讲解及实战演示(图文解释 附源码)
【Python机器学习】层次聚类AGNES、二分K-Means算法的讲解及实战演示(图文解释 附源码)
63 0
|
1月前
|
算法 数据挖掘
K-means聚类算法是如何实现的?
K-Means算法包括:随机选K个初始质心,将数据点分配到最近质心的簇,更新簇均值作为新质心,重复此过程直到质心变化足够小或达到最大迭代次数。对初始选择敏感,需多次运行取最优结果。
8 0
|
1月前
|
机器学习/深度学习 算法 数据可视化
探索Python中的聚类算法:K-means
探索Python中的聚类算法:K-means
67 4
|
1月前
|
机器学习/深度学习 算法 数据挖掘
使用phyon实现K-means聚类算法
使用phyon实现K-means聚类算法
|
1月前
|
机器学习/深度学习 运维 算法
从K-means到高斯混合模型:常用聚类算法的优缺点和使用范围?
从K-means到高斯混合模型:常用聚类算法的优缺点和使用范围?
193 0
|
4月前
|
算法 数据挖掘 数据库
K-Means、层次聚类算法讲解及对iris数据集聚类实战(附源码)
K-Means、层次聚类算法讲解及对iris数据集聚类实战(附源码)
57 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】K-Means、K-Means++、ISODATA算法详解及实战(图文解释 附源码)
【数据挖掘】K-Means、K-Means++、ISODATA算法详解及实战(图文解释 附源码)
85 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
107 0

热门文章

最新文章