KMean聚类算法及其改进

本文详细介绍了KMeans聚类算法的特点及其存在的问题,通过改进算法实现样本稀疏存储、构建节点索引,仅计算共享索引的聚类距离,并随机选择基准进行计算,成功将60万集合的聚类时间缩短至20分钟内,满足在线系统需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KMean聚类算法是一种比较简单而且常用的聚类算法,该算法有以下特点:

a) 聚类数目的一定的

b)选择一个样本的最近聚类时,需要将所有聚类的距离都计算一遍,然后选择最近的聚类作为该样本所属的类别

考虑到以上特点,会存在以下问题:首先,如果对数据样本集合不了解,K的选择会有一定的随机性,K的选择关乎聚类质量和计算效率,其次,与所有聚类集合都进行计算,这个效率会非常低下。综合以上两点,常见的改进的方法是层次聚类或者基于Tree的方法来减少计算量等方法,在项目的过程中,调研了Fast Streaming kmeans的方法,该算法有以下特点:

a)是基于streaming的,所以样本可以无限大,而且对数据样本只计算一次

b)最终聚类产生的结果集合的大小k是在一定范围变化的

c)在聚类过程中,只有当满足一定概率的时候才会产生新的聚类;当聚类数据大于上限,对聚类进行合并操作

Fast Streaming kmeans算法适合处理较大规模的数据,但是还是有一定的局限性,比如计算效率会随着聚类数据增大而下降,聚类的精度较低,在60W集合的聚类时间1个多小时,不符合我们的需求,在考虑了kmean的计算特点和实际应用场景之后,我们对kmeans算法做了以下改进:

a)将样本数据进行稀疏存储,构建节点的索引

b)计算样本的所属聚类的时候,只与该样本拥有共同索引的聚类计算距离

c)在计算距离的时候,随机从聚类集合中选取一个作为基准进行计算

以上改进使得聚类在60W集合的时间在20分钟左右,考虑到c)中随机选择基准的不确定性,在计算距离的时候,利用索引,找出与样本共现次数最多的一个样本进行计算。最后再针对代码进行了调整和改进,使得在原有数据集合的聚类时间在6分钟左右,基本能达到我们在线系统的运行需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值