K-Means算法及其变种,优缺点分析笔记

  最近开通了一个公众号,里面会分享一些机器学习,推荐系统的学习笔记和相关知识,同时也会分享一些面经,感兴趣的小伙伴可以关注一下,十分感谢,比心

 

K-Mneans算法是常见,常用,常考的算法,因此这里做个笔记,多多复习。

k-means算法的主要流程

1.根据需求,初始化k个中心点

2.为每个样本点计算他们和k个中心点的距离,找到距离最近的中心点,即该样本就属于这个中心点所代表的的类

3.做完2后,就已经对样本做了一次分类了,接着计算每个类别中的样本点的均值,用这些均值代替原来的k个样本点。

4.重复2,3知道满足一些条件(迭代次数,误差大小等)。

距离有多种计算方法:距离度量的不同方法可以参考我的另一篇博客https://blog.csdn.net/naocanmani/article/details/108907917

k-means的优缺点:

优点

1.实现简单,容易理解,效果还行

2.处理大数据是可伸缩性强

3.簇近似高斯分布时,效果比较好。(?为什么,有大佬的话可以在评论去解释一下)

缺点

1.k值的指定是人为的,需要经验或先验知识。

2.k个中心需要人为指定,对初始中心敏感,初始化的好坏对最终的聚类效果有较大影响。

3.对异常值,离群值敏感,容易受其影响。

4.不适合发现非凸形状的簇或者大小差别较大的簇。

k-means的改进版

二分kmeans

解决kmeans对初始中心比较敏感的问题

流程:

1.一开始所有样本是一个簇,将当前簇放到队列中

2.取出队列中的一个簇,将其聚类为两个簇,放入队列中

3.重复2,直到终止条件(簇的个数,误差大小,迭代次数等)

2中选择一个簇的方式:a.选择样本最多的簇进行聚类

b. 对所有簇计算误差和SSE(SSE也可以认为是距离函数的一种变种),选择SSE最大的聚簇进行划分操作(优选这种策略);

k-means++

k-means++与k-means的区别在于选取中心点的方法上。k-means是直接随机生成,k-means++则是:

1.从数据集中随机选择一个点作为中心点

2.计算样本与每个已知中心点的距离,计算该样本到不同中心点的距离和,然后找到M个与已知的中心相聚较远的点。

3.从M个样本中随机选择一个点为中心。不直接选最远的是因为最远的样本点可能是异常点

缺点:第k个中心的选择依赖前k-1个中心

mini batch k-means

顾名思义,采用mini batch的方式进行训练。收敛速度比k-means快。精度略逊于k-means。

  1. 首先抽取部分数据集,使用K-Means算法构建出K个聚簇点的模型;
  2. 继续抽取训练数据集中的部分数据集样本数据,并将其添加到模型中,分配给距离最近的聚簇中心点;
  3. 更新聚簇的中心点值;
  4. 循环迭代第二步和第三步操作,直到中心点稳定或者达到迭代次数,停止计算操作。

  最近开通了一个公众号,里面会分享一些机器学习,推荐系统的学习笔记和相关知识,同时也会分享一些面经,感兴趣的小伙伴可以关注一下,十分感谢,比心

 

参考

https://blog.csdn.net/u013850277/article/details/88411966

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值