热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

K-均值聚类算法:原理与应用详解

K-均值聚类算法是一种经典的划分方法,广泛应用于数据挖掘和机器学习领域。该算法通过将数据集划分为多个互斥的簇,确保每个对象仅归属于一个簇。然而,这种严格的归属要求忽略了潜在的离群点和数据的复杂性,限制了其在某些场景下的适用性。为了提高算法的鲁棒性和灵活性,研究者们提出了多种改进方法,如引入模糊隶属度和基于密度的聚类技术。这些改进不仅提升了算法的性能,还扩展了其在实际问题中的应用范围。

划分方法

聚类分析最简单、最基本的版本是划分,它把对象组织成多个互斥的簇。这一方法,要求每个对象必须/恰好属于每一个簇。(事实上,我们应该知道,这个要求是很不合理的,因为它忽略了离群点,假若把噪声数据强行划分在簇里,那势必会降低聚类的准确率,所以为了改进这一点,在模糊划分中适当放宽了这一要求。
大部分的划分算法都是基于距离的。(这个应该也很好理解吧,我们在前面应该提到过不止一次,这里说的距离实际上是用来度量相似性的)。他们的操作步骤通常是这样的:
1、首先给定要构建的分区数K,然后直接创建一个初始划分;
2、然后,使用一种称之为迭代的重定位技术来不断的调整,改进划分。(它的改进准则是:同一个簇中的对象要尽可能接近,不同簇中的对象要尽可能的远离)

从上面我们可以看到,这种传统的操作方法,为了达到全局最优,算法很有可能要穷举所有可能的划分,这显示不是不可接受的。因此实际上,目前的划分算法一般都采用启发式的方法,即渐进的提高聚类质量,以逼近局部最优解。

下面,我们就来讲解目前流行的划分算法:K-均值算法和K-中心点算法。这类算法非常适合发现中小规模的数据库中的球状簇(实际上是近似于球)

K-均值算法:一种基于形心的技术

假设数据集D中包含n个欧式空间中的对象,划分方法就是把D中的对象分配到k个簇中,其中各个簇之间互斥。然后通过目标函数来评估划分簇的质量,然后不断调整。
其实我们可以看到,这里叙述的划分方法和上面的传统方法基本一样。但是还没有完!!!
我们知道,划分方法一般聚类的都是球状簇。那么既然是球,就自然有球心。因此,这里说的基于形心的/形心实质上就可以理解为球心。
我们一般用簇Ci形心来代表该簇。从概念上来讲,簇的形心就是它的中心点。而这个中心点可以用多种方法定义(为什么呢?因为,这个球状只是我们看起来是球的形状而已,他并不是几何意义上的球,所以,要找出这个“球”的中心,自然不像几何那么严谨),例如可以取该簇中所有对象的均值或中心点
上面我们提到了目标函数,它的值被称为簇内变差。它的作用就是用来评估簇划分的质量的,即一个簇的划分质量可以用簇内变差度量。我们的目的就是要让簇内高相似性和簇间低相似性。


这里写图片描述

这里p是空间中的点,Ci表示簇的形心。实际上,簇内变差就是求簇内每个对象到簇中心点(K-均值算法的话均值就是中心点)的距离平方,然后求和

总的来说,我们要提高聚类质量,那么就要不断的去优化簇内变差。但是传统划分算法开销巨大,所以这里我们引出了k-均值算法。
这个算法就是把簇的形心定义为簇内点的均值。它的处理流程如下
1、在数据集中,随机地选择k个对象,每个对象代表一个簇的初始均值(中心);
2、对剩下的每个对象,分别计算其与各个簇中心的欧式距离(事实上就是计算相似性),将它分配到最相似的簇;
3、更新簇中心。对于每个簇来说,就是根据簇中的当前对象,来重新计算每个簇的均值,然后把该均值作为新的簇的中心。
4、然后重复第2,3步直至分配稳定。

K-均值算法的特点是:不能保证该算法收敛域全局最优解,并且它常常终止于一个局部最优解。结果可能依赖于初始簇中心的随机选择,所以为了尽可能的得到好的结果,我们通常会选择不同的初始簇中心,来多疑运行K-均值算法。

k-均值算法的优缺点
优点:
1、对于处理大数据集,该算法是相对可伸缩的和有效的;
缺点:
1、仅当簇的均值有定义时才能使用K-均值定义。例如,处理标称数据就不能使用K-均值算法。因为它无法计算簇内均值呀(映射???我想应该不可以吧=。=),所以针对这种情况,可以使用k-众数算法来处理标称数据
2、对噪声和离群点敏感。上面已经提到了,因为它的划分是互斥的,所以必然会出现这种情况。所以针对这种情况,出现了模糊划分技术。上面已经提到过。
3、必须用户自己指定要生成的簇数K。然而要求用户自己指定参数一般都是不靠谱的,所以这里给出了一种解决方法,那就是提供一个k的取值范围然后去试,然后取一个相对较好的。实际上,我们也能想象到这种方法其实也不好。

如何提高K-均值算法的性能
因为这个算法实在太简单了,所以它的性能能够提升的方面也就是伸缩性了。
在面对大数据集时,通过使用这三种方法来提高K-均值的伸缩性
1、使用样本;
2、过滤方法(使用空间层次索引以降低计算均值时的开销);
3、微聚类方案。

我们接下来稍稍引申一下

K-中心点:一种基于代表对象的技术
K-中心点算法是针对K-均值算法对离群点和噪声敏感的缺点提出的一种改进算法。
类比于K-均值算法,K-中心点聚类算法的变动主要有两点
1、中心点不是均值,而是用一个实际的对象(称作“代表对象”)来表示中心点;
2、目标函数不是距离的平方和了而是绝对距离和了。


这里写图片描述
其中,Oi是代表对象。
关于这个公式需要好好理解下, 它的值表示的是数据集中所有对象P与Ci的代表对象Oi的绝对误差之和。
同样的,K-中心点方法通过最小化该绝对误差,来实现对划分的优化。

下面我们是否要更新代表对象,就靠这个目标函数的值来决定了。

PAM算法是K-中心点聚类的一种流行的实现。它的主要流程如下
1、随机选择K个对象,每个对象代表一个簇的中心点;
2、对剩下的每个对象,分别计算其与各个簇中心(代表对象)的欧式距离,将它分配到最相似的簇;
3、更新代表对象了。这一步稍微有点复杂,我拆开来说。
3.1:为了决定一个非代表对象是否是当前的一个代表对象更好的替代,我们需要来计算一下。
3.2:首先计算所有点(除开该候选对象)到当前代表对象集合的绝对误差之和(实际上就是计算公式10.2)
3.3:然后计算所有点(除开待替换对象)到当前代表对象集合(该集合目前是少了待替换对象,多了该候选对象)的绝对误差之和(公式10.2)
3.4:接着,比较这两次计算的值,如果3.3的值比3.2的值小,那么说明如果我们使用该候选点替换该中心点之后,聚类的效果会更好。所以我们进行中心点的替换(代表对象)。
4、重复第2,3步直至聚类稳定。

从算法我们可以看出,使用了新的目标函数之后,K-中心点算法(具体来说是PAM算法)相对与K-均值算法来说,它对于离群点和噪声数据不那么敏感了。但同时,我们也能看到,该算法的计算量是相当巨大的。
所以,一般来说,PAM算法一般都应用与小型的数据集上。


推荐阅读
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 探讨 jBPM 数据库表结构设计的精要与实践
    探讨 jBPM 数据库表结构设计的精要与实践 ... [详细]
  • AI TIME联合2021世界人工智能大会,共探图神经网络与认知智能前沿话题
    AI TIME携手2021世界人工智能大会,共同探讨图神经网络与认知智能的最新进展。自2018年在上海首次举办以来,WAIC已成为全球AI领域的年度盛会,吸引了众多专家学者和行业领袖参与。本次大会将聚焦图神经网络在复杂系统建模、知识图谱构建及认知智能应用等方面的技术突破和未来趋势。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 如何从BAM文件绘制ATAC-seq插入片段长度分布图?
    在ATAC-seq数据处理中,插入片段长度的分布图是一个重要的质量控制指标,它能反映出核小体的周期性排列。本文将详细介绍如何从BAM文件中提取并绘制这些数据。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 业务团队与独立团队在数据分析领域的效能对比:谁更胜一筹?
    业务团队与独立团队在数据分析领域的效能对比:谁更胜一筹? ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
author-avatar
水妖精Fairy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有