机器学习(Machine Learning)笔记系列7:K-means(聚类)

定义

K-Means算法是一种无监督学习的聚类算法,它实现起来简单,聚类效果好,因此应用很广泛。所谓无监督学习就是仅有数据,没有数据标签,算法自己发现数据的规律(模式),简单而言,就是把相似的物体聚在一起。

应用场景

  1. 图像分割:把图像分成相似的区域
  2. 用户分层:把拥有类似兴趣的用户聚在一起

K-means算法

  1. 初始化:随机选择K个点,作为初始中心点,每个点代表一个group.
  2. 交替更新:
      1. 计算每个点到所有中心点的距离,把最近的距离记录下来并赋把group赋给当前的点
      2. 针对于每一个group里的点,计算其平均并作为这个group的新的中心点。
    在这里插入图片描述

K-means算法的一些特性

  每一次迭代的复杂度:
    计算每个点到所有中心点的距离,把最近的距离记录下来并赋把group赋给当前的点O(Kn)
    针对每一个group里的点,计算其平均并作为这个group的新的中心点O(n)

关于K-means的几个问题

  1. 一定会收敛吗?是,使用EM算法,每次迭代的结果均要比前一次效果好;
  2. 不同的初始化结果,会不会带来不一样的结果?是,初始化不同,结果不同;因为K-means的目标函数的是非凸函数,使用的是EM算法,单次初始化得到的为局部最优解
  3. K-means的目标函数是什么? f = min ⁡ ∑ i = 1 n ∑ x ∈ C i dist ⁡ ( c i , x ) 2 f=\min \sum_{i=1}^{n} \sum_{x \in C_{i}} \operatorname{dist}\left(c_{i}, x\right)^{2} f=mini=1nxCidist(ci,x)2
  4. K值如何选择?手肘法:the Elbow Sum-of-Squares Method

关于the Elbow Sum-of-Squares Method

  其概念是基于 SSE(sum of the squared errors,误差平方和)作为指标,去计算每一个群中的每一个点,到群中心的距离。算法如下:
  假设总共有 K 个群, Ci 代表其中一个群,mi 表示该群的中心点。
  根据 K 与 SSE 作图,可以从中观察到使 SSE 的下降幅度由「快速转为平缓」的点,一般称这个点为拐点(Inflection point),我们会将他挑选为 K。因为该点可以确保 K 值由小逐渐递增时的一个集群效益,因此适合作为分群的标准。

K-means++

  K-means++是K-means的初始化优化版本:

  1. 原始K-means算法最开始随机选取数据集中K个点作为聚类中心,
  2. 而K-means++按照如下的思想选取K个聚类中心:
        假设已经选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。
    在选取第一个聚类中心(n=1)时同样通过随机的方法。可以说这也符合我们的直觉:聚类中心当然是互相离得越远越好。这个改进虽然直观简单,但是却非常得有效。
    在这里插入图片描述
    在这里插入图片描述

代码示例

链接:https://github.com/JackUCASer/K-means

参考
[1]. 贪心科技-机器学习特训营课程
[2]. K-means与K-means++

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值