如何为数据集选择正确的聚类算法

应用聚类算法比选择最佳算法要容易得多。 每种类型都有其优缺点,如果您想要一个整洁的集群结构,就必须认真考虑。

数据聚类是安排正确的整个数据模型的重要步骤。为了进行分析,应根据共同点整理信息。 主要的问题是,什么样的公共参数提供最好的结果以及“最好”包含什么意思。

本文介绍了最广泛的聚类算法及其深入阐述。根据每种方法的特殊性,提供了对使用其应用的建议。

四种基本算法以及如何选择

根据聚类模型,可以区分四种常见的算法类别。一般而言,算法不少于100种,但是它们的流行程度以及应用领域都不是较为广泛。

基于整个数据集对象之间距离的计算,被称为基于连接的或分层的。根据算法的“方向”,它可以联合或相反地分割信息数组——聚集和分裂的名称就是从这种精确的变化中出现的。最流行或者说最合理的类型是凝聚型,您首先输入数据点的数量,然后将这些数据点合并成越来越大的集群,直到达到极限。

基于连接的集群化最突出的例子是植物分类。数据集的“树”开始于一个特定的物种,结束于一些植物“王国”,每个“王国”由更小的集群(门、类、目等)组成。

在应用了其中一种基于连接的算法之后,您将收到一个数据树状图,它将向您展示信息的结构,而不是其在集群上的明显分离。这样的特性既有好处也有坏处:算法的复杂性可能会变得过于复杂,或者根本不适用于层次结构很少甚至没有层次结构的数据集。还会出现糟糕的性能:由于大量的重复,完整的处理将花费大量时间。最重要的是无法得到精确的结构使用层次算法。

同时,需要从计数器输入的数据归结为数据点的数量,不会对最终结果产生实质性的影响,或者是预先设定的距离度量,它是粗略测量的。

根据我的经验,基于中心体的集群是最常见的模型,因为它比较简单。该模型旨在将数据集的每个对象分类到特定的集群中。集群的数量(k)是随机选择的,这可能是该方法最大的“弱点”。这种算法由于与k近邻(k-nearest neighbor, kNN)方法的相似性,在机器学习中特别受欢迎。

计算过程包括多个步骤。首先,选择输入数据,将数据集划分的大致聚类数。聚类的中心应放置在尽可能远的位置,这将提高结果的准确性。

其次,该算法找到数据集的每个对象与每个聚类之间的距离。最小坐标确定了将对象移动到哪个群集。

之后,将根据所有对象坐标的平均值重新计算聚类的中心。重复算法的第一步,但是重新计算了集群的新中心。除非达到某些条件,否则此类迭代将继续。例如,当集群的中心距上次迭代没有移动或移动不明显时,该算法可能会结束。

尽管数学和编码都很简单,但k均值仍有一些缺点,因此我无法在所有可能的地方使用它。那包括:

疏忽了每个集群的边缘,因为优先级设置在集群的中心,而不是边界;

无法创建一个数据集结构,该结构的对象可以按等量的方式分类到多个群集中;

需要猜测最佳k值,或者需要进行初步计算以指定此量规。

同时,期望最大化算法可以避免那些复杂情况,同时提供更高的准确性。简而言之,它计算每个数据集点与我们指定的所有聚类的关联概率。用于该聚类模型的主要“工具”是高斯混合模型(GMM),假设数据集的点通常遵循高斯分布。

k-means算法基本上是EM原理的简化版本。它们都需要手动输入集群数,这是此方法所要面对的主要问题。除此之外,计算原理(对于GMM或k均值)很简单:集群的近似范围是在每次新迭代中逐渐指定的。

与基于质心的模型不同,EM算法允许对两个或多个聚类的点进行分类-它仅向您展示每个事件的可能性,您可以使用该事件进行进一步的分析。更重要的是,每个聚类的边界组成了不同度量的椭球体,这与k均值不同,在k均值中,聚类在视觉上表示为圆形。但是,该算法对于对象不遵循高斯分布的数据集根本不起作用。这是该方法的主要缺点:它更适用于理论问题,而不是实际的测量或观察。

最后,基于数据密度的聚类成为数据科学家心中最青睐的非官方方法,包括模型的要点,将数据集划分为聚类,计数器会输入ε参数,即“邻居”距离。因此,如果对象位于ε半径的圆(球)内,则它与群集有关。

DBSCAN(基于密度的应用程序噪声空间聚类)算法会逐步检查每个对象,将其状态更改为“已查看”,将其分类到集群或噪声中,直到最后处理整个数据集。使用DBSCAN确定的集群可以具有任意形状,因此非常精确。此外,算法不会让你计算集群的数量,它是自动确定的。

不过,即使是DBSCAN这样的杰作也有缺点。如果数据集是由可变密度的数据集组成,则该方法的结果较差。如果对象的位置太近,并且无法轻松估算出ε参数,那么这也不是您的选择

综上所述,不存在错误选择的算法——它们中的一些只是更适合特定的数据集结构。为了选择最好的、更合适的算法,您需要全面了解它们的优点、缺点和特性。

有些算法可能在一开始就被排除在外,例如它们不符合数据集规范。为了避免重复的工作,你可以花一点时间来整理和记忆信息,而不是选择试错的道路。

原文作者: Josh Thompson

Image placeholder
sasdf
未设置
  62人点赞

没有讨论,发表一下自己的看法吧

推荐文章
亚马逊将公布超过最大会话和知识数据集,超400万字

4月1日,亚马逊宣布:他们计划向公众公开“TopicalChat”数据集,超410万单词21万句子的语料库将于2019年9月17日发布。该数据集是为参加AlexaPrizeSocialbotGrand

运营商大规模数据集群治理的实践指南

写在开头的话Q: 军哥,你们运营商行业的大规模集群,都有啥特点啊?A: 我们集群主要是承载B域、信令和互联网日志等去标识化数据,简单的说,有三个特点:1)集群规模较大:数千节点规模,近百PB数据量,日

大数据如何为影视产业带来颠覆性变化?

电影制作是一个非常复杂的过程,从开始确定成本到制定有针对性的营销活动,涵盖多个流程。在这之中,数据科学几乎可以涉及到每一个步骤,带来创新的改变。而且从另一个角度上讲,从事数据科学工作的专业人员,也可以

如何成为数据库管理员(DBA)

作者:MacyBayern编译:老鱼如果你想成为DBA,但又不知道从何入手,那么,这里有一份关于DBA薪酬、就业前景、技能和常见面试问题指南,也许可以给您一定的参考。人工智能(AI)、机器学习和物联网

无服务器vs容器,企业如何正确选择?

对于开发者和企业架构师来说,在不同的技术、框架或架构之间做出选择,是日常工作中最重要的内容。尤其在今天复杂的企业应用环境下,软件开发规则也在时刻变化着,我们必须在软件开发之前就要考虑清楚系统的体系结构

jquery如何判断是否为数组?

jquery如何判断是否为数组?$.isArray()函数用于判断指定参数是否是一个数组。只需要将需要判断的变量传入方法中即可。语法$.isArray(object)/jQuery.isArray(o

jquery如何判断的是否为数字?

方法一:使用isNaN()函数varval=$("#test").val(); varival=parseInt(val);//如果变量val是字符类型的数则转换为int类型如果不是则ival为NaN

jquery如何判断是否为数字?

在jquery里,我们可以用下面这些方法来判断变量是否是数字:1、$.isNumeric();jquery里内置的一个用来判断是否为数字的函数,用$.isNumeric()来判断是否为数字的话,一些特

打破传统 华为数存融合新架构狠在哪里?

数字经济已经成为继农业经济、工业经济之后一种新的经济社会发展形态,是新一轮产业革命的典型代表。全球都在不断的推动数字经济的发展,产业数字化、数字产业化正在给世界经济增长提供新动能。数据已成为当下新生产

jQuery判断是否为数字?

jQuery判断是否为数字?在jquery里,我们可以用下面这些方法来判断变量是否是数字:1、$.isNumeric();jquery里内置的一个用来判断是否为数字的函数,用$.isNumeric()

NAS与对象存储:谁是非结构化数据存储的最佳选择?

非结构化数据是增长最快的数据类型之一。随着企业日积月累地生成、收集和存储越来越多的数据,必然会带来一个问题:什么是存储非结构化数据的最佳方式?直白来说,非结构化数据就是不遵循传统数据库格式的数据,其结

DTCC观察:华为云数据库的优势积累与技术选择

摘要:作为公有云市场的重磅参与者,华为云数据库相比竞争对手有哪些优势?这可能是很多不了解华为云数据库人的第一反应。华为云数据库产品架构如何布局?作为第一个基于MySQL8.0开发的云原生分布式数据库,

如何选择视频会议设备?

视频会议是企业的必备品。它可以降低差旅成本、鼓励协作、让员工移动办公,并使企业更容易被客户和合作伙伴认可。企业的产品和服务可以通过网络访问;通过视频会议为您的团队提供支持,使他们能够与企业品牌一起航行

jQuery如何选择以特定字符开头的ID元素?

jQuery如何选择以特定字符开头的ID元素?jquery选择器中选取以特定字符开头的元素可以使用$('element[attr^=特定字符]')方法。例如选取p元素中id以abc开头的元素。(相关课

jQuery如何按name属性选择元素?

方法1:使用name属性选择器name属性选择器可用于按name属性选择元素。此选择器选择值与指定值完全相等的元素。语法:[name=“nameOfElement”]示例:输出:方法2:使用javas

数据结构与算法分析——开篇以及复杂度分析

开篇 你也许已经发现了,工作了几年,原以为已经是一只老鸟。但看到刚参加工作的同事,你发现,原来自己一直在原地踏步。跟新人相比,你的唯一优势就是对业务更熟悉而已,别的就没有什么优势了。 怎样才能够让自己

数据结构与算法分析——开篇以及复杂度分析

开篇你也许已经发现了,工作了几年,原以为已经是一只老鸟。但看到刚参加工作的同事,你发现,原来自己一直在原地踏步。跟新人相比,你的唯一优势就是对业务更熟悉而已,别的就没有什么优势了。怎样才能够让自己更上

JavaScript 的数据结构和算法

现在有个还不是好的项目,未来会成为好的项目的项目想介绍给大家。传送门https://github.com/MasterShu/JavaScript-Da...这个是本人在维护的一个项目。主要是使用Ja

数据结构与算法分析——链表

链表链表是一种常见的数据结构,是一组有序的数据,每个链表中的数据项称为元素。它跟数组很像,二者对比学习会更容易理解和记忆。数组是内存中连续的一块,不会间断。链表在内存中不一定是连续的一块。如果内存只剩

数据结构与算法分析——队列

定义队列,和栈类似,也是一种操作受限的线性表数据结构。与栈结构不同的是,可以对队列2端操作,要求数据从一端进(入队),从另一端出(出队)。队列遵循"先进先出"的原则,即最先进队列的数据元素,同样要最先

数据结构与算法分析——栈

定义栈是一种操作受限的线性表,只支持在一端进行插入和删除操作(入栈和出栈)。后进先出、先进后出是它最大的特点。当某个数据集合只在一端插入和删除数据,并满足先进后出的特性时,就可以选择栈这种数据结构。实

数据库中间件分片算法之stringhash

前言又是一个夜黑风高的晚上,带上无线耳机听一曲。突然很感慨一句话:生活就像心电图,一帆风顺就证明你挂了。就如同我们干运维的,觉得很简单的事情,有时候能干出无限可能。还是言归正传吧,这一次我们来说说st

专访领英工程副总裁张仁辉:如何驯服算法,打造世界级的职位推荐系统?

大数据文摘出品作者:魏子敏、宋欣仪作为全球最大的职业社交网络,创建于2003年的LinkedIn在过去6年间,从一个7000万左右年营收的企业,增长至30亿美元营业额的企业。五年间LinkedIn业务

为什么你应当选择 PostgreSQL 而不是 Oracle?

本文转自| PostgreSQL中文社区 作者简介 Jan Karremans,EnterpriseDB的高级销售工程师。 译者简介 KevinZhan,深圳联友科技SA,目前负责公司部分核心系统应用

长城汽车张小斌:企业数字化不是选择,而是唯一的出路

长城汽车集团云计算总监张小斌20年IT行业经验。西安交通大学计算机专业毕业,中科院计算所硕士,曾在朗讯贝尔实验室、美国硅谷、HP、赛门铁克、Websense担任架构师、主任工程师、研发经理等职务,负责