KMeans算法是最常用的聚类算法,基本思想是:在给定K值和K个初始类簇中心点的情况下,把每个样本点分到离其最近的簇中,然后重新计算每个簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。

KMeans算法本身思想比较简单,但是确定一个合适的K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。

K值的确定

1、样本聚类误差平方和,核心指标是SSE(sum of the squared errors,误差平方和)
S S E = ∑ k = 1 K ∑ p ∈ C k ∣ p − m k ∣ 2 SSE=\sum_{k=1}^K\sum_{p \in C_k}|p-m_k|^2 SSE=k=1∑K​p∈Ck​∑​∣p−mk​∣2
其中,K是聚类数量,p是样本, m k m_k mk​是第k个聚类的中心点。K越大,SSE越小,说明样本聚合程度越高。
当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,这个最先趋于平缓的点就是合适的K值。

2、轮廓系数法
某个样本点 X i X_i Xi​的轮廓系数定义如下:
S = b − a m a x ( a , b ) S=\frac{b-a}{max(a,b)} S=max(a,b)b−a​
其中,a是 X i X_i Xi​与同簇的其他样本的平均距离,称为凝聚度,b是 X i X_i Xi​与最近簇中所有样本的平均距离,称为分离度。而最近簇的定义是

其中p是某个簇 C k C_k Ck​中的样本。就是用 X i X_i Xi​到某个簇所有样本平均距离作为衡量该点到该簇的距离后,选择离 X i X_i Xi​最近的一个簇作为最近簇。
求出所有样本的轮廓系数后再求平均值就得到了平均轮廓系数。平均轮廓系数的取值范围为[-1,1],且簇内样本的距离越近,簇间样本距离越远,平均轮廓系数越大,聚类效果越好。

初始类簇中心点的确定

1、选择批次距离尽可能远的K个点
首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。
2、 选用层次聚类或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。

KMeans聚类 K值的确定以及初始类簇中心点的选取相关推荐

  1. kmeans python自定义初始聚类中心_机器学习-KMeans聚类 K值以及初始类簇中心点的选取...

    本文主要基于Anand Rajaraman和Jeffrey David Ullman合著,王斌翻译的<大数据-互联网大规模数据挖掘与分布式处理>一书. KMeans算法是最常用的聚类算法, ...

  2. 机器学习-KMeans聚类 K值以及初始类簇中心点的选取

    本文主要基于Anand Rajaraman和Jeffrey David Ullman合著,王斌翻译的<大数据-互联网大规模数据挖掘与分布式处理>一书. KMeans算法是最常用的聚类算法, ...

  3. KMeans算法的K值以及初始类簇中心点的选取

    KMeans算法是最常用的聚类算法,主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计 ...

  4. K-means聚类K值的选择、Calinski-Harabasz准则

    K-means聚类K值的选择.Calinski-Harabasz准则 目录 K-means聚类K值的选择.Calinski-Harabasz准则 K-means聚类K值的选择 Calinski-Har ...

  5. Kmeans聚类K值选择Parametric Bootstrap方法,以及数据重抽样方法Bootstrapping

    常用的K值选择方法是通过寻找"拐点"确认,或者下游业务需求确定.下文介绍了另一种选择方法. 评论:原始该K值选择法只有在数据为"gaussian-like"时才 ...

  6. Kmeans聚类K值的确定

    通过手肘法确定Kmeans聚类的最优K值 SSE = [] # 存放每次结果的误差平方和 for k in range(5,50):estimator = KMeans(n_clusters=k,ma ...

  7. python 机器学习——Kmeans之K值的选取原理

    Kmeans之K值的选取 参考 一般而言,没有所谓最好的选择聚类数的方法,通常情况下是需要根据不同的问题,人工进行选择的.选择的时候思考我们运用 K-means 算法聚类的动机是什么,然后选择能最好服 ...

  8. R语言Kmeans聚类、抽取聚类簇:fpc包的kmeansruns函数通过Calinski-Harabasz准则和平均轮廓系数(ASW)为Kmeans选择最优的聚类K值、并与层次聚类的最优K值进行比较

    R语言Kmeans聚类.抽取Kmeans聚类找到的聚类簇:fpc包的kmeansruns函数通过Calinski-Harabasz准则和平均轮廓系数(Average average silhouett ...

  9. kmeans 的k值确定方法

    用聚类算法分好类后如何判断分的效果呢?方法就是轮廓系数(Silhouette). Silhouette系数是对聚类结果有效性的解释和验证,由PeterJ. Rousseeuw于1986提出.      ...

最新文章

  1. NeurIPS 2020 :ReID任务大幅领先,港中文开源自步对比学习框架,充分挖掘无监督学习样本...
  2. 【对比分析六】JavaScript中GET和POST的区别及使用场景
  3. 自学python接单_Python接私活,兼职也可以月薪过万,会技术就可走遍天下
  4. moodeaudio 源码_MoodeAudio 音频播放器上手配置
  5. mysql dml回滚_mysql binlog回滚/闪回,前滚, 分析各表DML情况, 找出长事务与大事务...
  6. Java 高阶 —— try/catch
  7. eclipse查看jar包源码(反编译)
  8. 全球四大互联网公司最大的敌人是谁
  9. PackageManager获取应用列表
  10. 高考作文《细雨闲花》
  11. GCC编译器使用指北
  12. 解决mysql报Lock wait timeout exceeded; try restarting transaction的问题
  13. Codeforces Round #613 (Div. 2)(B-D)
  14. WRF实例运行系列(1)
  15. oracle 存储过程带入参,oracle中带参存储过程的使用
  16. 【扩展欧几里得】Codeforces Round #406 (Div. 2) A. The Monster
  17. 浅谈Springcloud中的几个主流熔断器
  18. java输出abba_面试-字符串abba匹配问题-java8解决方案
  19. 2021年R2移动式压力容器充装报名考试及R2移动式压力容器充装证考试
  20. 通信原理简明教程 | 数字基带传输

热门文章

  1. Android11 Launcher添加网格布局设置(3x3,4x4,5x5)
  2. win10 搜索框无法使用
  3. 期望、方差、标准差、协方差、相关系数、协方差矩阵、残差、残差平方和(SSE)、标准化残差,残差分析
  4. 电信校园招聘计算机真题,2019中国电信校园招聘试题(一)
  5. 小企业无线局域网服务器,无线局域网AAA服务器的软件设计与实现
  6. cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意
  7. Springboot 自定义身份证验证注解
  8. datawindow自动行高、根据行高自动调整字体大小
  9. vi和vt的区别小窍门_十大vi技巧和窍门
  10. gitlab修改时区