05 聚类算法 - 二分K-Means、K-Means++、K-Means||、Canopy、Mini Batch K-Means算法

03 聚类算法 - K-means聚类
04 聚类算法 - 代码案例一 - K-means聚类

三、K-Means算法衍生

1、二分K-Means算法

解决K-Means算法对__初始簇心__比较敏感的问题,二分K-Means算法是一种弱化初始质心的一种算法,__具体思路步骤如下__:

1、将所有样本数据作为一个簇放到一个队列中。
2、从队列中选择一个簇进行K-means算法划分,划分为两个子簇,并将子簇添加到队列中。
3、循环迭代第二步操作,直到中止条件达到(聚簇数量、最小平方误差、迭代次数等)。
4、队列中的簇就是最终的分类簇集合。

从队列中选择划分聚簇的规则一般有两种方式;分别如下:

1、对所有簇计算误差和SSE(SSE也可以认为是距离函数的一种变种),选择SSE最大的聚簇进行划分操作(优选这种策略)。
2、选择样本数据量最多的簇进行划分操作:

公式

几何意义


2、K-Means++算法

解决K-Means算法对初始簇心比较敏感的问题,K-Means++算法和K-Means算法的区别主要在于__初始的K个中心点__的选择方面,K-Means算法使用随机给定的方式,K-Means++算法采用下列步骤给定K个初始质点:

1、从数据集中任选一个节点作为第一个聚类中心。
2、对数据集中的每个点x,计算x到所有已有聚类中心点的距离和D(X),基于D(X)采用线性概率选择出下一个聚类中心点(距离较远的一个点成为新增的一个聚类中心点)。
3、重复步骤2直到找到k个聚类中心点。

__缺点:__由于聚类中心点选择过程中的内在有序性,在扩展方面存在着性能方面的问题(第k个聚类中心点的选择依赖前k-1个聚类中心点的值)

几何意义


3、K-Means||算法

解决K-Means++算法缺点而产生的一种算法;主要思路是改变每次遍历时候的取样规则,并非按照K-Means++算法每次遍历只获取一个样本,而是每次获取K个样本,重复该取样操作O(logn)次__(n是样本的个数)__,然后再将这些抽样出来的样本聚类出K个点,最后使用这K个点作为K-Means算法的初始聚簇中心点。实践证明:一般5次重复采用就可以保证一个比较好的聚簇中心点。

梳理步骤:
1、在N个样本中抽K个样本,一共抽logn次,形成一个新的样本集,一共有Klogn个数据。
2、在新数据集中使用K-Means算法,找到K个聚簇中心。
3、把这K个聚簇中心放到最初的样本集中,作为初始聚簇中心。
4、原数据集根据上述初始聚簇中心,再用K-Means算法计算出最终的聚簇。


4、Canopy算法

Canopy算法属于一种“粗”聚类算法,执行速度较快,但精度较低,__算法执行步骤如下__:

1、给定样本列表L=x1,x,2...,xm以及先验值r1和r2(r1>r2);__(先验值 - 自己猜的,人为定义的值)__;
2、从列表L中获取一个节点P,计算P到所有聚簇中心点的距离(如果不存在聚簇中心,那么此时点P形成一个新的聚簇),并选择出最小距离D(P,aj);
3、如果距离D小于r1,表示该节点属于该聚簇,添加到该聚簇列表中。
4、如果距离D小于r2,表示该节点不仅仅属于该聚簇,还表示和当前聚簇中心点非常近,所以将该聚簇的中心点设置为P,并将P从列表L中删除。
5、如果距离D大于r1,那么节点P形成一个新的聚簇。
6、直到列表L中的元素数据不再有变化或者元素数量为0的时候,结束循环操作。

分析步骤

注意上图中修改一个地方:
本质上,列表中离得近的元素都删了。如果节点P生成了一个新的中心节点,也应该被删除掉。因为这些点已经变成了聚簇中心。


Canopy算法得到的最终结果的值,聚簇之间是可能存在重叠的,但是不会存在
某个对象不属于任何聚簇的情况。

几何意义


Canopy算法过程图形说明:

Canopy图形说明

Canopy算法常用应用场景:

由于K-Means算法存在初始聚簇中心点敏感的问题,常用使用Canopy+K-Means算法混合形式进行模型构建。
1、先使用canopy算法进行“粗”聚类得到K个聚类中心点。
2、K-Means算法使用Canopy算法得到的K个聚类中心点作为初始中心点,进行“细”聚类。

优点:
1、执行速度快(先进行了一次聚簇中心点选择的预处理);
2、不需要给定K值,应用场景多。
3、能够缓解K-Means算法对于初始聚类中心点敏感的问题。


5、Mini Batch K-Means

Mini Batch K-Means算法是K-Means算法的一种优化变种,采用__小规模的数据子集__(每次训练使用的数据集是在训练算法的时候随机抽取的数据子集)__减少计算时间__,同时试图优化目标函数;Mini Batch K-Means算法可以减少K-Means算法的收敛时间,而且产生的结果效果只是略差于标准K-Means算法。

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

06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值