K-均值聚类(K-means)

基础不牢,地动山摇。

聚类(Clustering)是无监督学习的一种方法,在聚类分析中,我们事先不知道训练样本的类别标签或其他先验知识,唯一的分类依据只有样本的特征。聚类分析的方法为:利用某种相似性度量的方法,将相似的样本归到一个簇中,将不相似的样本归到不同的簇中,由此来实现样本的聚类划分。K-均值聚类(K-means)是聚类分析中最基础的一种方法,它将样本聚类到K个簇中(即将样本划分成K类),并且每个簇的中心为这个簇中所有样本点的均值向量,所以被称作“K-均值”聚类。

1. K-均值聚类的原理

假设样本集\boldsymbol{X}中有N个训练样本,每个样本都有D个属性(即D维特征),那么样本集可以表示为(x_{ij}代表第i个样本的第j维特征):

\boldsymbol{X}=\left \{ \boldsymbol{x}_1,\boldsymbol{x}_2,\cdots, \boldsymbol{x}_{N}\right \}=\begin{pmatrix} x_{11} & x_{21}& \cdots& x_{N1}\\ x_{12}& x_{22}& \cdots& x_{N2}\\ \vdots& \vdots& \ddots & \vdots\\ x_{1D}& x_{2D}& \cdots & x_{ND}\end{pmatrix}

我们不知道样本的类别标签,我们只知道这些样本需要被分为K个簇(即K类),将这K个簇记为:C=\left \{ C_{1},C_{2},\cdots,C_{K} \right \},显然,这K个簇彼此互斥,且它们的并集即为样本集,即:C_{1}\cap C_{2}\cap \cdots\cap C_{K}=\varnothing,且C_{1}\cup C_{2}\cup \cdots\cup C_{K}=\boldsymbol{X}。将这K个簇的中心(即各个簇的样本均值向量)记为\left \{ \boldsymbol{\mu }_{1},\boldsymbol{\mu }_{2},\cdots,\boldsymbol{\mu }_{K} \right \},那么第i个簇的中心\boldsymbol{\mu }_{i}可以表示为(其中\left | C_{i} \right |表示第i个簇中样本点的个数):

\boldsymbol{\mu }_{i}=\begin{pmatrix} \mu _{i1}\\ \mu _{i2}\\ \vdots\\ \mu _{iD}\end{pmatrix}=\frac{1}{\left | C_{i} \right |}\sum_{\boldsymbol{x}\in C_{i}}\boldsymbol{x}

① 初始化簇中心

K-均值聚类的第一步是随机地初始化KD维向量\left \{ \boldsymbol{\mu }_{1},\boldsymbol{\mu }_{2},\cdots,\boldsymbol{\mu }_{K} \right \}作为每个簇的中心,我们可以完全随机地产生这K个向量,也可以从样本集\boldsymbol{X}中随机地选择K个样本作为初始簇中心。

② 计算欧氏距离,划分样本点

计算所有样本点到K个簇中心的欧氏距离,记第i个样本与第j个簇中心的欧氏距离的平方为d_{ij},则:

d_{ij}=\left \| \boldsymbol{x}_{i}-\boldsymbol{\mu }_{j} \right \|_{2}=(x_{i1}-\mu_{j1})^{2}+(x_{i2}-\mu_{j2})^{2}+\cdots+(x_{iD}-\mu_{jD})^{2}

显然,每个样本可以得到K个欧氏距离,所有样本共可得到N\times K个欧氏距离,如下表所示:

针对单个样本点,在该样本点与所有簇中心的K个欧氏距离中,选择最小的一个,将这个样本点划入对应的簇。对所有样本点都进行这样的操作,即可将样本点划为K类。

③ 更换簇中心

根据上一步的划分结果计算K个簇的中心(均值向量),用计算到的簇中心代替之前的。

④ 重复上两步,直至达到停止条件

接下来我们需要做的是,重复②,③两步,不断更新簇中心,直至所有的簇中心都不再变化,即可停止迭代。

2. K-均值聚类的步骤

输入:样本集\boldsymbol{X}=\left \{ \boldsymbol{x}_1,\boldsymbol{x}_2,\cdots, \boldsymbol{x}_{N}\right \}
          聚类簇数(类别数):K

步骤①:随机生成KD维向量,或者从样本集\boldsymbol{X}中随机选择K个样本作为初始簇中心\left \{ \boldsymbol{\mu }_{1},\boldsymbol{\mu }_{2},\cdots,\boldsymbol{\mu }_{K} \right \}

步骤②:计算所有样本与K个簇中心的欧氏距离,选择最小的距离,将样本划入对应的簇(类别)中;

步骤③:根据上一步的划分结果计算K个簇中心,用它代替之前的簇中心;

步骤④:重复步骤②和步骤③,直至所有的簇中心都不再变化,即可停止。

若需要预测新样本,则计算新样本点与最终得到的K个簇中心的欧氏距离,选择距离最小的,将新样本点划到对应的类别中。

参考:

《模式识别与智能计算——MATLAB技术实现》杨淑莹 张桦 著
《图解机器学习》许永伟 译
《机器学习》周志华 著

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongGu1996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值