K-means

  • K-Means算法是无监督的聚类算法,存在有大量的变体。

K-Means

  • 对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
  • 假设簇划分为 ( C 1 , C 2 , . . . C k ) (C_1,C_2,...C_k) (C1,C2,...Ck),最小化平方误差E: E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E = \sum\limits_{i=1}^k\sum\limits_{x \in C_i} ||x-\mu_i||_2^2 E=i=1kxCixμi22其中 μ i \mu_i μi是簇 C i C_i Ci的均值向量,也称为质心: μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i = \frac{1}{|C_i|}\sum\limits_{x \in C_i}x μi=Ci1xCix想直接求上式的最小值并不容易,这是一个NP难题,因此只能采用启发式的迭代方法。
    在这里插入图片描述

传统K-Means算法流程

输入是样本集 D = { x 1 , x 2 , . . . x m } D=\{x_1,x_2,...x_m\} D={x1,x2,...xm},聚类的簇树k,最大迭代次数N
输出是簇划分 C = ( C 1 , C 2 , . . . C k ) C = (C_1,C_2,...C_k) C=(C1,C2,...Ck)

  1. 从数据集D中随机选择k个样本作为初始的k个质心向量 { μ 1 , μ 2 , . . . , μ k } \{\mu_1,\mu_2,...,\mu_k\} {μ1,μ2,...,μk} (k: 交叉验证,质心: 不宜太近)
  2. 对于n=1,2,…,N:
    • 将簇划分C 初始化: C t C_t Ct = ∅, 𝑡=1,2…𝑘
    • 对于i=1,2…m,计算样本 x i x_i xi和各个质心向量 μ t \mu_t μt (t=1,2,…𝑘)的距离: d i t = ∣ ∣ x i − μ t ∣ ∣ 2 2 d_{it} = ||x_i - \mu_t||_2^2 dit=xiμt22,将 x i x_i xi标记为最小的 d i t d_{it} dit所对应的类别 λ t {\lambda_t} λt。此时更新 C t = C t ∪ { x i } C_{t} = C_{t} \cup \{x_i\} Ct=Ct{xi}
    • 对于t=1,2,…,k,对 C t C_t Ct中所有的样本点重新计算新的质心 μ t = 1 ∣ C t ∣ ∑ x ∈ C t x \mu_t = \frac{1}{|C_t|}\sum\limits_{x \in C_t}x μt=Ct1xCtx
    • 如果所有的k个质心向量都没有发生变化,则跳出。
  3. 输出簇划分 C = ( C 1 , C 2 , . . . C k ) C = (C_1,C_2,...C_k) C=(C1,C2,...Ck)

K-Means距离计算优化elkan K-Means

  • 在传统的K-Means算法中,每次迭代时,要计算所有的样本点到所有的质心的距离,这样会比较的耗时。
  • elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。
  • 对于一个样本点𝑥和两个质心 μ t 1 , μ t 2 \mu_{t1},\mu_{t2} μt1,μt2。预先计算出这两个质心之间的距离 D ( t 1 , t 2 ) D(t_1,t_2) D(t1,t2)
    • 如果 2 D ( x , t 1 ) ≤ D ( t 1 , t 2 ) 2D(x,t_1) \leq D(t_1,t_2) 2D(x,t1)D(t1,t2),则 D ( x , t 1 ) ≤ D ( x , t 2 ) D(x,t_1) \leq D(x,t_2) D(x,t1)D(x,t2)
    • D ( x , t 2 ) ≥ m a x { 0 , D ( x , t 1 ) − D ( t 1 , t 2 ) } D(x,t_2) \geq max\{0, D(x,t_1) - D(t_1,t_2)\} D(x,t2)max{0,D(x,t1)D(t1,t2)}
  • 但如果样本的特征是稀疏的有缺失值,此时某些距离无法计算,则不能使用该算法。

大样本优化Mini Batch K-Means

  • Mini Batch K-Means,选择一个合适批样本大小的batch size,仅仅用batch size个样本来做K-Means聚类。batch size一般通过无放回的随机采样得到的。
  • 为了增加算法的准确性,一般会多跑几次Mini Batch K-Means算法,用得到不同的随机采样集来得到聚类簇,选择其中最优的聚类簇。

K-Means小结

主要优点

  • 原理简单,实现容易,收敛速度快,算法的可解释度强,聚类效果较优。

主要缺点

  • K值的选取不好把握
  • 如果各隐含类别的数据不平衡,或者各隐含类别的方差不同,则聚类效果不佳。
  • 采用迭代方法,得到的结果只是局部最优。
  • 对噪音和异常点比较的敏感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值