【聚类算法】Kmeans聚类

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

Kmeans梗概

1. 正文

1.1 简介

简单来说,对于一堆数据,先选出k个样本作为簇中心,并所有样本到他们的距离,根据距离远近,划分到其中最近的一个簇中心;对于得到的各个簇,计算他们各自的平均值作为新的簇中心,重复上面过程,直到簇中心变化趋于稳定。即完成了对数据的聚类。

整体过程也比较好理解。

1.2 步骤

  1. 数据预处理,主要为:数据标准化和异常点过滤。
  2. 随机选取k个中心
  3. 计算样本到k个中心的距离,将其分配到最近的某个中心
  4. 对于上面划分出的的若干个类,重新计算各类的中心
  5. 重复上面3、4步,直到最后中心稳定。
    请添加图片描述

1.3 k的选择

1.3.1 拐点法(手肘法)

计算不同k值下,距离平方和,随着k值的增加,距离会逐渐变小。当斜率突然由大变小时,且之后变化缓慢,则认为k值为合适的kz值。

在这里插入图片描述

1.3.2 轮廓系数

每个样本都有对应的轮廓系数,其有两部分组成:

  • 样本与同一簇类(类内)中其他样本点的平均距离(量化凝聚度)
  • 样本与距离最近的簇类(类间)中所有的样本平均聚类(量化分类度)

S = b − a m a x ( a , b ) S = {b-a \over max(a,b)} S=max(a,b)ba
S取值为[-1,1]

一组数据集中轮廓系数:等于该数据集中每个样本的轮廓系数的平均值

1.4 优缺点

(1).优点

  1. 属于无监督学习,不需要标签
  2. 原理简单,实现容易
  3. 结果可解释性好

(2).缺点

  1. 聚类数据k的选取,选择不当可能得到不理想的结果
  2. 可能收敛到局部最优,在大规模数据上收敛较慢
  3. 对噪声、异常点比较敏感

1.5 算法改进

主要有以下方法(暂时不展开)

  • kmeans++
  • 二分kmeans
  • minbatchKmeans

参考

[1] https://blog.csdn.net/Claire_chen_jia/article/details/111060253#t2
[2] https://blog.csdn.net/weixin_45788069/article/details/108853816#t3
[3] https://blog.csdn.net/qq_43741312/article/details/97128745#t11
[4] https://zhuanlan.zhihu.com/p/432230028
[5] https://www.zhihu.com/tardis/zm/art/158776162?source_id=1005
[6] https://zhuanlan.zhihu.com/p/184686598

猜你喜欢

转载自blog.csdn.net/weixin_39190382/article/details/131379283