【学习笔记】K-means++算法

学习K-means++算法前,需要先学习K-means算法,可以参考这篇博客看得懂的K-means

既然了解了K-means算法,那么我们来对比下K-means++有什么变化。
首先K-means最大的问题就是对初始点选择特别敏感,那么我们就一个一个选,而不是K个一起选。

K-means++

步骤与K-means类似:

  1. 从输入的数据集中随机选取一个点作为第一个中心点;
  2. 对每一个点分别计算到已选取的中心点的距离;
  3. 按照轮盘法选择一个新的点作为新的中心点,选取的原则是:距离较大的点,有较大的概率被选取;
  4. 重复步骤2,3直到K个中心点被选出;
  5. 利用这K个中心点作为初始点执行K-means算法。

注意:是较大概率,而不是就选最远的点,为了避免噪声
所以,这个点应该怎么选呢?

迭代所有点,把所有点到该中心点的距离算出,记录到距离数组中(D1、D2…Dn),分别代表第n个点到中心点的最短距离。(值得注意的是,这里的最短距离是指该点离中心点这一数组中所有中心点距离中的最短距离,也就是说,假设已经选出了两个中心点,那么迭代所有点的时候,就要把每个点分别与两个中心点计算距离,然后选择其中最短的距离作为该点的Dn)

把所有的Dn加起来Sum(Dn),随机一个不超过Dn的数r,然后迭代所有Dn,计算r-=Dn,直至r<0,此时的点即为新的簇中心点。

迭代2、3步骤,直至选出所有中心点。
个人理解,该方法选取中心点的关键在于,计算出所有点到中心点的距离和,然后若Dn越大,亦即该点距离中心点越远,与我们随机出来的r相减少后,r就越有可能小于0,也就越有可能被选做中心点。也就满足我们选择点离散这一条件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值