K-Means算法的10个有趣用例

news/2025/2/26 21:42:57

K-means算法具有悠久的历史,并且也是最常用的聚类算法之一。K-means算法实施起来非常简单,因此,它非常适用于机器学习新手爱好者。首先我们来回顾K-Means算法的起源,然后介绍其较为典型的应用场景。

起源

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

什么是K-Means算法?

聚类,是将数据分成若干组,使得相同组中的数据点之间比其他组中的数据点更具有相似性。简而言之,聚类就是将具有相似特征的数据点分割成一个个组,也就是一个个聚类中。K-means算法的目标是在数据中查找一个个组,组的数量由变量K表示。根据数据所提供的特征,通过迭代运算将每个数据点分配给K个组中的其中一个组。下图中K = 2,因此可以从原始数据集中识别出两个聚类。

image

在一个数据集上执行K-means算法,其输出分别是:

1.K中心点:从数据集中识别的k个聚类的每一个中心点。

2.数据集的完全标记,以确保每个数据点都可以分配给其中一个聚类。

K-Means算法的十大用例

K-means算法通常可以应用于维数、数值都很小且连续的数据集,比如:从随机分布的事物集合中将相同事物进行分组。

1.文档分类器

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

2.物品传输优化

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

3.识别犯罪地点

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

4.客户分类

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

5.球队状态分析

分析球员的状态一直都是体育界的一个关键要素。随着竞争越来愈激烈,机器学习在这个领域也扮演着至关重要的角色。如果你想创建一个优秀的队伍并且喜欢根据球员状态来识别类似的球员,那么K-means算法是一个很好的选择。具体细节和实现请参照这篇文章。

6.保险欺诈检测

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

7.乘车数据分析

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

8.网络分析犯罪分子

网络分析是从个人和团体中收集数据来识别二者之间的重要关系的过程。网络分析源自于犯罪档案,该档案提供了调查部门的信息,以对犯罪现场的罪犯进行分类。这是一篇在学术环境中,如何根据用户数据偏好对网络用户进行 cyber-profile的论文。

9.呼叫记录详细分析

通话详细记录(CDR)是电信公司在对用户的通话、短信和网络活动信息的收集。将通话详细记录与客户个人资料结合在一起,这能够帮助电信公司对客户需求做更多的预测。在这篇文章中,你将了解如何使用无监督K-Means聚类算法对客户一天24小时的活动进行聚类,来了解客户数小时内的使用情况。

10.IT警报的自动化聚类

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

原文发布时间为:2018-07-10
本文作者:Kaushik
本文来自云栖社区合作伙伴“数据与算法之美”,了解相关信息可以关注“数据与算法之美”


http://www.niftyadmin.cn/n/4071040.html

相关文章

打造自定义的 AfxMessageBox

一、需求   与标准的 MessageBox 相比,MFC 提供了 AfxMessageBox 的方法是我们对消息框的变得更加容易。然而简单的 AfxMessageBox 有时已经不能够满足我们的需求了:有时候我仅仅想提示用户一下,并不需要用户确认,也就是说…

NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE定义宏的含义

在使用一些新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到“error C2065: undeclared identifier.“这个错误。原因是这些功能是依赖于你的操作系统的版本的。而你的头文件中的定义并不是最新的。(对于…

令人触目惊心的软件工程!

触目惊心?是的,我没说错,事实上该项目已经瘫痪了。 公司是做电力行业的软件为主的,该行业在业务流程方面并不复杂,但是在计算方面却难以琢磨。公司在一开始的时候由两个人负责该项目,因为公司已有网络版&am…

As3.0中的位图(Bitmap/BitmapData)编程

https://blog.csdn.net/wtuetnsrmh/article/details/12577929转载于:https://www.cnblogs.com/dt1991/p/9298977.html

程序的好坏取决于程序员的态度?

偶尔下载了《影响你一生的21个信念》的音频,听了之后颇有感触,其中有一条信念是“成功是因为态度”,决定一个人成为成功者的最关键要素中,80%属于个人自我价值取向的“态度”类因素,如各种能力;7%属于运气、…

原生js基础课程

/* * Version 1.0 * Time 2018/3/13 * Author parchments * Learn for duyijiaoyu */ js命名空间 作用: 管理变量, 防止污染全局变量, 适用于模块化开发 1、管理变量 /* var org { part1: { lin: { name: "abc", …

对于Windows 2003 64位搭配SQL2005 64位时不能使用Microsoft.OLEDB.4.0的解决历程

公司本身的系统为BS架构,用SQL2005和VS2003开发。公司也根据网络版开发了相应的单机版软件,使用Access数据库。客户方希望能在网络版上做的工程导出到单机版使用,单机版做完后再导入到网络版。于是便产生了导入导出的任务。 导入导出的代码我…

​Python 3 新特性:类型注解

前几天有同学问到,这个写法是什么意思:def add(x:int, y:int) -> int:return x y 复制代码我们知道 Python 是一种动态语言,变量以及函数的参数是不区分类型。因此我们定义函数只需要这样写就可以了:def add(x, y):return x …