[深度之眼机器学习训练营第四期]K-means聚类

K-means聚类算法

聚类是一种无监督学习方法。在无监督学习中,训练集只包含 { x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) ; x ( i ) ∈ R d } \{x^{(1)},x^{(2)},\cdots,x^{(n)};x^{(i)}\in \mathbb{R^d}\} {x(1),x(2),,x(n);x(i)Rd},每个训练样本没有对应的标签 y ( i ) y^{(i)} y(i) k -means k\text{-means} k-means是一种常用的聚类算法。 k -means k\text{-means} k-means首先随机地选择 k k k个簇中心,然后通过每个样本与所有簇中心的距离不断地更新 k k k个簇中心,直到算法收敛。整个算法的流程如下所示:

1.   Initialize  cluster   centroids   μ 1 , μ 2 , ⋯   , μ k ∈ R d  randomly 2.   Repeat until convergence: { For every  i , set c ( i ) : = arg ⁡ min ⁡ j ∥ x ( i ) − μ j ∥ 2 For each  j , set μ j : = ∑ i = 1 n { c ( i ) = j } x ( i ) ∑ i = 1 n { c ( i ) = j } } \begin{aligned} 1.\ &\text{Initialize }\textbf{cluster centroids }\mu_1,\mu_2,\cdots,\mu_k\in \mathbb{R^d}\text{ randomly}\\ 2.\ &\text{Repeat until convergence: \{}\\ &\quad\quad\text{For every }i\text{, set}\\ &\quad\quad\quad\quad\quad\quad\quad\quad c^{(i)} := \arg\min_j \|x^{(i)}-\mu_j\|^2\\ &\quad\quad\text{For each } j\text{, set}\\ &\quad\quad\quad\quad\quad\quad\quad\quad\mu_j := \frac{\sum_{i=1}^{n}\{c^{(i)}=j\}x^{(i)}}{\sum_{i=1}^n\{c^{(i)} = j\}}\\ &\} \end{aligned} 1. 2. Initialize cluster centroids μ1,μ2,,μkRd randomlyRepeat until convergence: {For every i, setc(i):=argjminx(i)μj2For each j, setμj:=i=1n{c(i)=j}i=1n{c(i)=j}x(i)}
其中内循环重复执行两个步骤:将每个训练样本 x ( i ) x^{(i)} x(i)“分配”到离他最近的簇中心 μ j \mu_j μj,以及将每个簇中心 μ j \mu_j μj移动到分配给它的所有样本的均值(即中心)。

收敛性

那么 k -means k\text{-means} k-means算法是不是保证一定收敛呢?答案是肯定的。考虑如下失真函数:
J ( c , μ ) = ∑ i = 1 n ∥ x ( i ) − μ c ( i ) ∥ 2 J(c,\mu)=\sum_{i=1}^n\|x^{(i)}-\mu_{c^{(i)}}\|^2 J(c,μ)=i=1nx(i)μc(i)2
该函数衡量了每个训练样本 x ( i ) x^{(i)} x(i)到分配给该样本的簇中心 μ c ( i ) \mu_{c^{(i)}} μc(i)的距离平方。可以看出, k -means k\text{-means} k-means算法恰好是 J J J的坐标下降。具体而言, k -means k\text{-means} k-means的内层循环在保持 μ \mu μ固定的同时,相对于 c c c反复最小化 J J J;然后在保持 c c c固定的同时,相对于 μ \mu μ最小化 J J J。 因此, J J J必须是单调递减的,此时 J J J一定收敛。
然而,失真函数 J ( c , μ ) J(c,\mu) J(c,μ)是一个非凸函数,因此 k -means k\text{-means} k-means算法可能收敛到局部极小值。为了防止此类事件发生,我们可以多次运行 k -means k\text{-means} k-means算法,然后选择失真函数值最小的那个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值