k-means是人工智能领域最常用的快速基础算法之一,广泛用于聚类、数据预分析及与改进其他机器学习算法等。为了进一步提高k-means算法效率,很多优秀的k-means算法通过对每个样本维持一个上下界来减少样本距离计算次数,达到加速目的。比如最早的Elkan,以及在此基础上发展出来的harmly, ann, exp, yingyang等等。本文基于重庆邮电大学王国胤与夏书银共同提出的多粒度-粒球计算理论(Xia S , Liu Y , Ding X , Wang G et al. Granular Ball Computing Classifiers for Efficient, Scalable and Robust Learning[J]. Information Sciences, 2019, 483:136-152.),使用球体来划分度量空间簇,提出了一种简单、高效的Ball-k-means算法。由于使用超球体来量化空间簇,获得了更加精确的近邻关系,该近邻关系不需要额外参数,消除了现有大多数优秀加速算法中单个样本上下界,单个样本点的计算次数远小于现有的同类顶尖算法。(原文链接:https://ieeexplore.ieee.org/document/9139397;可下载链接:https://www.researchgate.net/publication/342914449_A_Fast_Adaptive_k-means_with_No_Bounds

一、核心基本概念

定义1 (球簇)

该概念借鉴于多粒度-粒球计算理论(Xia S , Liu Y , Ding X , Wang G et al. Granular Ball Computing Classifiers for Efficient, Scalable and Robust Learning[J]. Information Sciences, 2019, 483:136-152.),用超球体这种最简单的模型(不管数据多少维,只有半径和中心两个参数)来量化和表示簇,可以获得更精确的空间关系刻画。

定义2 (近邻球簇)

使用近邻球簇可大大缩减了一个球簇内的点在下一次的迭代中的距离计算范围:其距离计算范围从所有点限制到了它的近邻球内部。一个球簇的点在下一次迭代中只会在它的近邻簇中调整,不需要计算该簇中点到其他所有点的距离,从而降低了计算次数,该特性由定理1保证

近邻球的关系示意图如图1所示:C1和C2是C3的近邻球,C4不是C3的近邻球,所以C3的点可能被分配到C1和C2中,不可能被分配到C4中。

图1. 近邻球簇的关系示意图

证明过程省略,具体证明过程可参见原文。

二、球簇内部量化,进一步加速

每个球簇内部被进一步划分为稳定域和活动域,具体定义如下定义3。稳定域中的点不需要在下一次迭代中进行调整,因此这些点在下一次迭代中的距离计算次数为零,该特性由定理2保证。

如图2所示,球C1有两个近邻簇C2和C3, 其稳定域是由C2确定的、由绿色虚线包围的区域。

图2. 近邻球簇的关系示意图

证明过程省略,具体证明过程可参见原文。

三、球簇活动域划分为环,进一步加速

将活动域划分为环后(具体定义见定义4),每个环内的近邻球数进一步降低,从而进一步减少距离计算次数。如图2所示: 第一层环(绿色虚线和蓝色虚线之间)中的点只可能被分配到C2中,而不是所有的近邻簇(即C2和C3),该特性由定理3来保证。

证明过程省略,具体证明过程可参见原文。

四、降低求近邻簇过程中的簇与簇中心的距离计算次数

为了降低近邻簇的距离计算次数,对于某个球簇C,当其他簇满足中心距离达到如定理4描述的界限后,其在下一次迭代中不可能成为球簇C的近邻簇。因此不同球簇中心之间的距离计算次数得到了缩减。该特性由定理4保证。如图3所示,Cj在下一次迭代中不可能成为Ci的近邻球,因此下一次迭代中不需要计算两者之间的距离。

证明过程省略,具体证明过程可参见原文。

图 3. Cj在下一次迭代中不可能成为Ci的近邻球

五、稳定簇

这是最终的加速过程。对于某个球簇,如果一个簇中的点没有发生任何变化,我们称之是稳定的。如果一个簇的近邻簇在上一代都是稳定簇,那么该簇在当前迭代过程中不需要参与任何计算。该特性由定理5保证。随着迭代过程的推进,稳定簇会越来越多,基于稳定簇的算法加速作用也会越来越明显。

证明过程省略,具体证明过程可参见原文。

六、时间复杂度分析

以下是与其他算法的时间复杂度分析与对比,具体请参见原文。

结论

Ball k-means 突破了现有大多数优秀精确k-means算法基于单一样本上下界约束调整的思路,消除了单一样本需要维护的上下界,实现个一个更加精确、简单和自适应的计算过程。整体算法简单、高效。

本文的c语言源代码,以及python调用版本可从以下链接下载(包含单精度和双精度两种版本),执行速度远高于sklearn中的k-means算法。欢迎大家使用(请引用原文:S. Xia et al., "A Fast Adaptive k-means with No Bounds," in IEEE Transactions on Pattern Analysis and Machine Intelligence, doi: 10.1109/TPAMI.2020.3008694.)并提出宝贵意见:

https://github.com/syxiaa/ ball-k-means;

http://www.cquptshuyinxia.com/ball-k-means.html.

Ball k-means:一种无界的快速自适应精确k-means算法相关推荐

  1. 2020年 TPAMI长文, Ball k-means:一种无界的快速自适应精确k-means算法

    k-means是人工智能领域最常用的快速基础算法之一,广泛用于聚类.数据预分析及与改进其他机器学习算法等.为了进一步提高k-means算法效率,很多优秀的k-means算法通过对每个样本维持一个上下界 ...

  2. 无界(wujie)微前端实现及三种通信方式介绍

    一.对比 之前介绍过前段时间比较流行的微前端框架qiankun,虽然实现了微前端的理念,但是也暴露出很多缺点,比如官网上讲到的四点: 基于路由匹配,无法同时激活多个子应用,也不支持子应用保活 改造成本 ...

  3. ConcurrentLinkedQueue非阻塞无界链表队列

    ConcurrentLinkedQueue非阻塞无界链表队列  ConcurrentLinkedQueue是一个线程安全的队列,基于链表结构实现,是一个无界队列,理论上来说队列的长度可以无限扩大. 与 ...

  4. 并发队列-无界阻塞优先级队列

    PriorityBlockingQueue原理探究 一. 前言 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式 ...

  5. 并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究

    并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究 http://www.importnew.com/25668.html 一. 前言 常用的并发队列有阻塞队列和非阻塞队列 ...

  6. 以“不变”方能应“万变”,以“有心”必能筑“无界”

    2016年或可称为金融科技从概念走向应用的元年,服务边界延伸 金融与互联网不断相互渗透,为人们创造更舒适便捷的生活环境,多元化跨界融合正成为行业发展的一个重要命题. 对于传统金融,"跨界&q ...

  7. 阿里云容器服务多项重磅发布:高效智能、安全无界的新一代平台

    在云原生带来的云计算未来趋势下,容器已经成为用户使用云的新界面. 阿里云容器产品发布近 7 年以来,已成长发展为企业的云原生操作系统,技术和服务能力日趋成熟,但创新从未止步.日前,阿里云研究员 &am ...

  8. 2019标杆案例复盘(下):沟通无界——生活社交篇

    2019年,网易云信继续赋能更多企业和客户打通多样化信息沟通渠道.搭建多元化信息沟通场景.复盘2019之际,将今年的深度案例整合,分三大板块进行回顾:[金融&政企].[智能电子].[生活&am ...

  9. 腾讯企业IT部蔡晨:从有界到无界,新一代企业安全防御之道

    北京时间10月10日至10月11日,由腾讯安全发起,腾讯安全科恩实验室与腾讯安全平台部联合主办,腾讯安全学院协办的2018腾讯安全国际技术峰会(TenSec2018)在深圳成功举办. 作为企业安全团队 ...

最新文章

  1. autofs一个神奇的服务
  2. matlab 自动控制仿真,Matlab在自动控制系统建模与仿真中的应用
  3. 青少年蓝桥杯_2020_steam考试_初级组_第三题
  4. apt-get的更新源
  5. Python中的魔法方法
  6. 怎么多次调用c语言dll,c-如何从注入到同一程序的另一个.dll中调用...
  7. ASP.NET的学习之asp.net整体运行机制
  8. 物联网火爆,开发者遇到大难题了!
  9. zynq跑linux所需内存大小,Zynq-Linux移植学习笔记之33-CMA连续物理内存配置
  10. 基于钉钉小程序做一个记事本
  11. SPSS数据录入【SPSS 007期】
  12. Smart3D三维建模操作笔记
  13. 服务器安全基础知识系列(三)关于网页木马
  14. NLP专题:LSA浅层语义分析
  15. 中央财经大学c语言试题答案,中央财经大学C语言题
  16. ASR_intern_summary
  17. php 生成迅雷地址,php实现把url转换迅雷thunder资源下载地址的方法,_PHP教程
  18. 网络编程中同步与异步,IO阻塞与非阻塞总结
  19. Linux防火墙设置黑白名单
  20. Word文档粘贴的表格中文字有淡灰色背景的去除方法

热门文章

  1. 21世纪非常成功心法[强烈推荐3]
  2. 计算机助学教学软件cai是,CAI与课堂教学
  3. HTTP Live Streaming网络视频直播调研
  4. quartus ii 9.0连接驱动程序USB blaster驱动安装
  5. 叶国富亿元保障基金背后,名创优品打起品质攻坚战
  6. 快递查询 java_快递查询示例代码
  7. java个人主页作业,个人项目 - 作业 - 18软件前端、JAVA WEB方向 - 班级博客 - 博客园...
  8. 听周华健专辑《少年》有感(二)-献给曾经的自己
  9. 教你将文件名称中文转英文
  10. 伺服电机脉冲控制方式