K-means算法的起源

  1967年,James MacQueen在他的论文《用于多变量观测分类和分析的一些方法》中首次提出 “K-means”这一术语。1957年,贝尔实验室也将标准算法用于脉冲编码调制技术。1965年,E.W. Forgy发表了本质上相同的算法——Lloyd-Forgy算法,所以这一算法有时也被称为Lloyd-Forgy算法。更高效的版本则被Hartigan and Wong提出。

K-means算法的原理

  K-Means聚类算法是聚类算法之一,其中K表示类别的数量,也就是说,我们想要将数据分成几个类别,Means表示均值。K值决定了初始质心(通常是随机选择的中心)的数量。K值是几,必须有几个质心。 简而言之,K-Means聚类算法是一种通过均值聚类数据点的算法。

K-means算法的过程

1、首先输入K的值,将数据集分为K个类别。

2、从这组数据中随机选择K个数据点作为初始大哥(初始质心),其它数据点都作为小弟。

3、对数据集中每一个小弟,计算与每一个大哥的距离,离哪个大哥距离最近,就分配给哪个大哥。

4、每一个大哥手下都聚集了一帮小弟,这时候召开黑帮会议,推选出新的大哥(新的质心)。

5、如果新大哥和老大哥之间的距离很小或为0,说明新任大哥靠谱,选举结束(可以认为我们进行的聚类已经达到期望的结果,算法终止)。

6、如果新大哥和老大哥之间的距离很大,需要重新选举新大哥,分配小弟(重复3~5的步骤)。

K-means算法的例子

【例】以下是一组用户的年龄数据,使用K-means算法划分数据。

15,15,16,19,19,20,22,28,35,40

【步骤】

(1)我们将K值定为2,并随机选择16和22作为初始大哥。

(2)分别计算每一个小弟与初始大哥的距离,划分门派,距离相同的随机划分。

表1 第一次划分数据

所有数据

距16距离

距22距离

门派1(16)

门派2(22)

15

1

7

16

22

15

1

7

15

20

16

0

6

15

28

19

3

3

19

35

19

3

3

19

40

20

4

2

22

6

0

28

12

6

35

19

13

40

24

18

(3)分别计算两个门派的均值,把均值推选为新的大哥(新质心)。门派1的均值为16.8,门派2的均值为29.我们以新大哥代替老大哥,并重复之前的操作计算每一个小弟与新大哥的距离,再次划分门派。

表2 第二次划分数据

所有数据

距16.8距离

距29距离

门派1(16.8)

门派2(29)

15

1.8

14

15

28

15

1.8

14

15

35

16

0.8

13

16

40

19

2.2

10

19

19

2.2

10

19

20

3.2

9

20

22

5.2

7

22

28

11.2

1

35

18.2

6

40

23.2

11

(4)此时门派1均值18,门派2均值34.33,推举为新大哥,重复划分门派。

表3 第三次划分数据

所有数据

距18距离

距34.33距离

门派1(18)

门派2(34.33)

15

3

19.33

15

28

15

3

19.33

15

35

16

2

18.33

16

40

19

1

18.33

19

19

1

18.33

19

20

2

14.33

20

22

4

12.33

22

28

10

6.33

35

17

0.67

40

22

5.67

(5)计算门派1均值为18,门派2均值为34.33,推举为新大哥,此时新大哥和老大哥距离为0,选举结束。

年龄数据被划分为两类,如上图所示,15--22为一类,28--40为一类。

K-means算法的有趣用例

1.文档分类器

根据标签、主题和文档内容将文档分为多个不同的种类。这是一个非常标准且经典的K-means算法分类问题。首先需要对文档进行初始化处理,将每个文档都用矢量来表示,并使用术语频率来识别常用术语进行文档分类,这一步很有必要。然后对文档向量进行聚类以识别文档组中的相似性。

2.物品传输优化

使用K-means算法的组合找到无人机最佳发射位置和使用遗传算法来解决旅行商的行车路线问题,优化无人机物品传输过程。

3.识别犯罪地点

使用城市中特定地区的相关犯罪数据,分析犯罪类型、犯罪地点以及两者之间的联系,可以对城市中容易犯罪的地区做高质量的侦查。这是基于德里飞行情报区犯罪数据的论文。

4.客户分类

聚类能够帮助营销人员改善他们的客户群(在其目标区域内工作),并根据客户的购买历史、兴趣或活动监控来对客户类别做进一步的细分。是关于电信运营商如何将预付费客户分为充值模式、发送短信和浏览网站几个类别的白皮书。对客户进行分类有助于公司针对特定客户群制定特定的广告。

5.球队状态分析

分析球员的状态一直都是体育界的一个重点。随着竞争越来越激烈,机器学习在这个领域也扮演着至关重要的角色。要是你想创建一个优秀的球队并且喜欢根据球员的状态来识别类似的球员,那么K-means算法是一个很好的选择。

6.保险欺诈检测

机器学习在汽车、医疗保险和保险欺诈检测领域中应用广泛。利用以往欺诈性索赔的历史数据,根据它和欺诈性模式聚类的相似性来识别新的索赔。由于保险欺诈可能会对公司造成数百万美元的损失,因此欺诈检测对公司来说至关重要。这是汽车保险中使用聚类来检测欺诈的白皮书。

7.乘车数据分析

面向大众公开的Uber乘车信息的数据集,为我们提供了大量关于交通、运输时间、高峰乘车地点等有价值的数据集。分析这些数据不仅对Uber大有好处,而且有助于我们对城市的交通模式进行深入的了解,来帮助我们做城市未来规划。

8.网络分析犯罪分子

网络分析是从个人和团体中收集数据来识别二者之间的重要关系的过程。网络分析源自于犯罪档案,该档案提供了调查部门的信息,由此对犯罪现场的罪犯进行分类。

9.呼叫记录详细分析

呼叫详细记录(CDR)是电信公司收集的关于用户呼叫,短消息和网络活动等信息的集合。将通话详细记录与客户个人资料结合在一起,这就能帮助电信公司对客户需求做更多的预测。

10.IT警报的自动化聚类

大型企业IT基础架构技术组件(如网络,存储或数据库)会生成大量的警报信息。由于警报信息可以指向具体的操作,因此必须对警报信息进行手动筛选,确保后续过程的优先级。对数据进行聚类可以对警报类别和平均修复时间做深入了解,有助于对未来故障进行预测。

浅谈K-means聚类算法的更多相关文章

  1. k均值聚类算法原理和(TensorFlow)实现

    顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...

  2. K均值聚类算法

    k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...

  3. 机器学习实战---K均值聚类算法

    一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...

  4. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  5. K均值聚类算法的MATLAB实现

    1.K-均值聚类法的概述    之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这 ...

  6. [随机化算法] 听天由命?浅谈Simulate Anneal模拟退火算法

    Simulate Anneal模拟退火算法,是一种用于得到最优解的随机化算法. 如果可以打一手漂亮的随机化搜索,也许当你面对一筹莫展的神仙题时就有一把趁手的兵器了. 这篇题解将教你什么?SA的基本思路 ...

  7. 浅谈k短路算法

    An Old but Classic Problem 给定一个$n$个点,$m$条边的带正权有向图.给定$s$和$t$,询问$s$到$t$的所有权和为正路径中,第$k$短的长度. Notice 定义两 ...

  8. 大数质因解:浅谈Miller-Rabin和Pollard-Rho算法

    2017-07-19 08:54 Amphetamine:能发一下代码吗? 应我那位谜一样好友的邀约,我打算好好看一看Miller-Rabin和Pollard-Rho算法.很奇怪,各种地方有很多代码描 ...

  9. 浅谈Java数据结构和算法

    今天的突然看集合底层的时候发现了好多算法和数据结构.再次就比较一下和汇总一下. 数据结构分类:线性结构和非线性结构 问题一: 什么是线性和非线性: 我个人的理解是:数据结构中线性结构指的是数据元素之间 ...

  10. 聚类之K均值聚类和EM算法

    这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...

随机推荐

  1. LINUX下搭建简单临时的WWW服务器

    首先确定是否安装有python: python -V 如果有: cd 到你要开放的文件夹中,然后使用下面的命令可以把 当前文件夹内的所有文件 发布到 8000 端口. python -m Simple ...

  2. Hadoop 之 HDFS基本概念

    1.HDFS的基本概念 答:块(Block).NameNode.DataNode.HDFS的文件被分成块进行存储,默认块的大小为64M,所以说块是文件存储和处理的逻辑单元.NameNode是管理节点, ...

  3. 按插入顺序排序的map

    LinkedHashMap HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出Ha ...

  4. 记一次 JavaScript 浮点型数字误差引发的问题

    需求 车间的工人在生产出来产品后,需要完成初步的自检,并通过手机上报.在实际生产中,用户(工人)不方便进行数值的输入,因而表单中的一些项设计成 picker 模式以供选取数值.数值的取值范围,根据允许 ...

  5. Find the Multiple POJ-1426

    题目链接:Find the Multiple 题目大意 找出一个只由0和1组成的能整除n的数. 思路 所有由0和1组成的数可以看作是某个只由0.1组成的数a经过以下两种变化得到 1.a * 10 2. ...

  6. APP设计与开发(ui篇)

    这篇文章是我个人在开发与设计APP的所用的一些设计思路,仅用于和大家分享知识并不是什么设计标准之类的.主要说明App的开发中是如何来开发与组织UI部分. UI模块结构 在项目中建立ui包用于存放ui类 ...

  7. 【爬虫小程序:爬取斗鱼所有房间信息】Xpath(多进程版)

    # 本程序亲测有效,用于理解爬虫相关的基础知识,不足之处希望大家批评指正 import requests from lxml import etree from multiprocessing imp ...

  8. Mysql触发器实例分析

    所谓触发器,就是在定义在表对象上.当触发器所在的表出现指定的事件时,会触发对应表的delete update insert的操作.说的有点绕口,其实就是到监视某种情况,然后去触发某种操作. 触发器是如 ...

  9. FastEarth

    1        概述 FastEarth(后文简称FE)是自主研发的跨平台三维地理信息可视化协作平台,内置完全自主研发的XDR渲染引擎,无缝对接主流地理信息平台数据.建筑BIM.工厂PIM以及多种三 ...

  10. FFmpeg(三) 编解码相关函数理解

    一.编解码基本流程 主要流程: 打开视频解码器(音频一样) 软解码.硬解码 进行编解码 下面先来看打开视频解码器 ①avcodec_register_all()//初始化解码 ②先找到解码器. 找解码 ...