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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:

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算法比较

相关文章
|
9月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
10月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
232 1
|
10月前
|
机器学习/深度学习 分布式计算 算法
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
327 0
|
10月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
208 0
|
11月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
292 0
|
11月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
12月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
381 0
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
765 0
|
9月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
485 2
|
10月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
389 3

热门文章

最新文章