欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

K-means算法研究综述

聚类被认为是机器学习中最常使用的技术之一, 它历史悠久、应用广泛,几乎应用于环境学、医学、生物学、天文学、经济学等各个领域。其中K-means是最为常用的聚类算法。现在我们来详细介绍一下K-means算法。

1 K-means算法简介

K-means算法(Lloyod,1982)是简单而又有效的统计聚类算法,使机器能够将具有相同属性的样本归置到一块儿。与分类不同,对于一个分类器,通常需要告诉它“这个样本被分成哪些类”这样一些标签,在最理想情况下,一个分类器会从所得到的训练集中进行“学习”,我们将这种提供训练的过程称为“监督学习”。但是在聚类下,我们并不关心某一类是什么,我们的目的是想将相似的样本归置在一起,这样,一个聚类算法通常只要知道该如何计算样本间的相似度并将相似样本归并到一起就可以操作了,因此聚类通常并不需要使用训练数据进行学习,这在机器学习中被称作“无监督学习”。K-means算法就是这种用于统计的无监督聚类技术。

2 K-means算法介绍

K-means算法主要用于处理下图1中的问题。我们可以看到,在图的左边有一些点,此时,我们用肉眼可以看出有三个点群,但是,我们如何让机器识别出这几个点群来呢?于是就出现了我们需要的K-means算法。

图1 K-means算法示意图

Fig1 Illustration of K-means

K-means算法的基本思想是:将N个对象划分到K个簇中,聚类结果要使得相似度较高的对象划分到同一类簇,而差异较大的对象存于不同类簇。

K-means算法的基本流程如下表1所示。

表1 K-means算法步骤

Tab.1 Training steps of K-means

K-means:

输入:训练样本V={v(1),v(2),…,v(n)},v={v1,v2,…,vni},k:聚类个数;

输出:C={C1,C2,…,Ck};

步骤1 在数据集中随机选取K个对象作为初始聚类中心 c1,c2,…,ck;

步骤2 计算数据集中每个对象到聚类中心的距离,选取最小距离min|v- cj|,分配到聚类中,其中v={v1,v2,…,vn},j=1,2……k;

步骤3 计算每个聚类中的所有对象均值,将此均值作为新的聚类中心,,nj为第j类中对象的个数,j=1,2,……k;

步骤4 如果每个簇的聚类中心不再发生变化,聚类准则函数收敛,则算法结束。否则返回步骤2继续迭代。

3 K-means算法优缺点

K-means算法操作简单、运算速度较快,能够有效处理中小型数据集。但同时K-means算法也有不足之处,包含以下几点:

(1) 聚类结果不确定

K-means算法初始聚类中心是随机选择的,初始中心点选取的好坏会导致最终聚类效果。选取不同初始聚类中心,会使得最终聚类得到的类簇发生变化。除此之外,K-means算法一般采用准则函数为目标函数,准则函数中只存在一个全局最小值和N个极小值,这使得算法运算过程中,会陷入局部极小值,导致最终得到的不是全局最优解。

(2) 聚类个数不确定

K-means算法中K表示聚簇个数,K的取值决定聚类结果。K值的选取需要根据实际的需求来确定,但通常情况下我们并不知道需将数据集聚为多少个类簇最合适,所以针对K值的选取依然有待解决。

(3) 数据量大、算法时间复杂度较高

K-Means算法的计算过程是一个不断迭代的过程,为寻找合适的聚类中心,需要不断的计算和调整才能对数据对象进行有效的聚类。这个过程中反复进行大量的对象间距离的计算,所以K-Means聚类过程会消耗大量时间,降低聚类运算效率。

4 K-means算法变形

(1) K中心点算法

传统K-means算法在求出聚簇后对簇内的点取平均值,若该簇形成的图像较为狭窄或其图像并不均匀,使用平均值生成的点极有可能会偏离聚簇本身,所以该方法希望通过求生成的簇的重心,以保证生成的中心点不会偏离聚簇本身并能够更好代表整个聚簇。

(2) 高斯随机初始中心点方法

传统K-means算法在初始化K个中心点时使用数据集的前K个样本作为中心点或使用默认的随机化方法初始中心点,这里采用高斯随机化方法从数据集中取K个点作为中心点,可使得聚簇内更加紧密。

(3) 基于最小生成树的K-means算法

通过Kruskal方法找到图中距离最近的两点之间的中心点,再将该中心点放入数据集中,并两点从数据集中删除,形成新的数据集合。然后利用Kruskal算法找新的数据集中的最短距离,重复以上步骤直到数据集中仅剩下K个点则结束,这K个点就是初始聚类中心点。该方法使用最小生成树自动生成K个聚类中心,可有效解决传统K-means算法因初始聚类中心选取的随机性引起的局部最优问题,提高聚类效果。

5 结论

经过数十年的发展,聚类问题已被研发出多种算法,但K-means算法依旧活跃于前线,被广泛应用于各类领域。通过研究K-means算法,我们可以看出:一个真正伟大的算法不是因为它有多么复杂,而是它能够用最简单的原理解决最复杂的问题。因此,我们需不断努力,研究出更多实用的算法。

参考文献

[1]Mitchell, T.M. MACHINE LEARNING[M]. 北京:机械工业出版社2003.1

[2]李 航.统计学习方法[M].北京:清华大学出版社,2012.3

[3] 周志华.机器学习[M].北京:清华大学出版社,2016.1

[4] PeterHarrington. 机器学习实战[M]. 北京:人们邮电出版社,2013,6

[5] 蒋宗礼,杜倩.基于聚类和项目相似性的SlopeOne算法优化[J].计算机与现代化,2016(8):22-26

欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

K-means算法研究综述相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. 基于深度学习的场景分割算法研究综述

    基于深度学习的场景分割算法研究综述 人工智能技术与咨询 来自<计算机研究与发展> ,作者张 蕊等 摘 要 场景分割的目标是判断场景图像中每个像素的类别.场景分割是计算机视觉领域重要的基本问 ...

  3. 合成孔径雷达图像去噪算法研究综述

    针对合成孔径雷达中存在的相干噪声问题,对该雷达雷达图像去噪领域的主流算法进行了归纳和总结. 近年来主流的三类SAR图像算法:基于空域滤波的SAR图像去噪算法.基于变换域滤波的SAR图像去噪算法和基于深 ...

  4. 基于深度残差网络图像分类算法研究综述

    文章从残差网络的设计出发,分析了不同残差单元的构造方式,介绍了深度残差网络不同的变体.从不同角度比较了不同网络之间的差异以及这些网络架构常用图像分类数据集上的性能表现.最后对各种网络进行l总结,并讨论 ...

  5. 对话推荐算法研究综述

    来源:专知 本文为论文,建议阅读5分钟 推荐系统是一种通过理解用户的兴趣和偏好帮助用户过滤大量无效信息并获取感兴趣的信息或者物品的信息过滤系统. 推荐系统是一种通过理解用户的兴趣和偏好帮助用户过滤大量 ...

  6. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  7. 【知识图谱】本周文献阅读笔记(4)——周三 2023.1.11:英文)基于动态知识图谱的虚假评论检测 + 基于知识图谱的推荐系统研究综述 + 基于知识图谱的推荐算法研究综述+新一代知识图谱关键技术

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  8. ABR算法研究综述 | A Survey on Bitrate Adaptation Schemes for Streaming Media Over HTTP(IEEE COMST‘18)阅读笔记

    原文链接:A Survey on Bitrate Adaptation Schemes for Streaming Media Over HTTP | IEEE Journals & Maga ...

  9. 【智能驾驶】基于计算机视觉的自动驾驶算法研究综述

    近年来,随着人工智能技术的迅速发展,传统汽车行业与信息技术结合,在汽车自动驾驶技术方面的研究取得了长足进步,业内很多大公司都在此领域投入巨资进行研发,如国外的谷歌.丰田,国内的百度.比亚迪等公司都推出 ...

最新文章

  1. Ubuntu下内存泄露检测工具Valgrind的使用
  2. 计算机桌面文件夹删除如何找回,电脑删除文件如何恢复 误操作的一剂后悔药...
  3. 数据战略和风险管理系统
  4. 监视程序中的死锁及其他
  5. linux服务器基本常识,服务器搭建-Linux基础知识
  6. Switch View when host XmlFormView in aspx
  7. SOTA来啦!BERT又又又又又又魔改了!DeBERTa登顶GLUE~
  8. mysql ssh 导入时注意问题
  9. 一篇Rust的30分钟介绍
  10. 多边形的定义为什么要强调封闭图形_11.3.1 多边形讲解.ppt
  11. 艾草减肚子方法非常有效 赛乐赛骗局是真的吗
  12. python123:大小写转换
  13. MYSQL主从部署(Censo:6)
  14. ElasticSerach 出现 high disk watermark [90%] exceeded on
  15. curl 支持ws吗_使用CURL请求WebService | 字痕随行
  16. idea不区分大小写提示
  17. 关于CSS选择器优先级的规则说明
  18. 单代号网络图计算例题_算例分享:SDOF动力系统的共振响应计算
  19. us news计算机科学排名,2019US News世界大学计算机科学专业排名TOP50
  20. IF:4+ 鉴定与股骨头坏死软骨氧化应激相关的Hub基因和通路

热门文章

  1. erp采购总监个人总结_ERP沙盘模拟实验采购总监个人总结
  2. 神经网络训练效果不好,神经网络训练的优势
  3. 请教 xhr 500解决办法
  4. AttributeError: 'Bullet' object has no attribute 'draw_bullet'
  5. 周末了放松一下 | 程序员才看得懂的笑话
  6. IOI2020集训队作业-23 (CF674F,ARC091F)
  7. 设计模式之小金的泡妞学(上)
  8. sketch android切图,Sketch切图及导出图片尺寸
  9. 发布新闻稿必须了解的几个问题
  10. ImaTest3.4报错failed to find mex-file on path uigetfiles.dll