作者 | CDA数据分析师

应用聚类算法比选择最佳算法要容易得多。每种类型都有其优缺点,如果您要争取一个整洁的集群结构,则必须加以考虑。数据聚类是安排正确的整个数据模型的重要步骤。为了进行分析,应根据共同点整理信息量。主要问题是,什么通用性参数可以提供最佳结果,以及“最佳”定义中到底蕴含着什么。

本文对于新手数据科学家或想刷新其在该主题上的记忆的专家应该是有用的。它包括最广泛使用的聚类算法及其深入的综述。根据每种方法的特殊性,提供了考虑其应用的建议。

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

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

分层聚类

基于整个数据集对象之间距离的计算,聚类称为基于连通性或分层。根据算法的“方向”,它可以组合或反过来划分信息数组- 聚集和分裂的名称正是源于这种精确的变化。最为流行和合理的类型是聚集型,您可以从输入数据点的数量开始,然后将这些数据点组合成越来越大的簇,直到达到极限。

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

应用基于连接性的算法之一后,您将收到树状图数据,该树状图向您展示了信息的结构,而不是集群上的不同分隔。这样的功能可能既有好处,也有坏处:算法的复杂性可能变得过高或根本不适用于几乎没有层次的数据集。它还显示出较差的性能:由于存在大量的迭代,因此完整的处理将花费不合理的时间。最重要的是,使用分层算法不会获得精确的结构。

同时,从计数器要求的输入数据下降到数据点的数量,该点不会对最终结果产生实质性影响,也不会影响预设的距离度量,该距离度量也可以进行粗略测量和近似计算。

KMeans聚类

根据我的经验,基于质心的聚类由于其比较简单而成为最常出现的模型。该模型旨在将数据集的每个对象分类为特定的聚类。簇数( k)是随机选择的,这可能是该方法最大的“弱点”。由于与 k近邻(kNN)相似,该 k均值算法在机器学习中特别受欢迎。

计算过程包括多个步骤。首先,选择输入数据,这是应将数据集划分为的大致聚类数。聚类的中心应放置在尽可能远的位置,这将提高结果的准确性。其次,该算法找到数据集的每个对象与每个聚类之间的距离。最小坐标(如果我们在谈论图形表示)确定了将对象移动到哪个群集。之后,将根据所有对象坐标的平均值重新计算聚类的中心。重复算法的第一步,但是重新计算了簇的新中心。除非达到某些条件,否则此类迭代将继续。例如,当集群的中心距上一次迭代没有移动或移动不明显时,该算法可能会结束。

尽管数学和编码都很简单,但k-means仍然存在一些缺点,因此我无法在所有可能的情况下使用它。那包括:

  • 每个集群的疏忽之处,因为优先级设置在集群的中心,而不是边界;
  • 无法创建一个数据集结构,该结构的对象可以按等量的方式分类到多个群集中;
  • 需要猜测最佳k数,或者需要进行初步计算以指定此量规。

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

EM算法

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

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

DBSCAN

最后,基于密度的聚类,名称包括模型的要点–将数据集划分为聚类,计数器会输入ε参数,即“邻居”距离。因此,如果对象位于ε半径的圆(球)内,则它与群集有关。

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

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

总结起来,没有错误选择算法之类的东西-其中有些更适合特定的数据集结构。为了始终采用最佳(更适合)算法,您需要全面了解它们的优缺点。

例如,如果某些算法不符合数据集规范,则可以从一开始就将其排除在外。为避免繁琐的工作,您可以花一些时间来记住信息,而不是选择反复试验的路径并从自己的错误中学习。

我们希望您一开始总是选择最好的算法。继续这了不起的工作吧!

扫码进入CDA官方小程序,解锁更多新鲜资讯和优质内容,还有免费试听课程,不要错过哟!

最小径集的算法_如何为数据集选择正确的聚类算法?相关推荐

  1. 文本聚类分析算法_读书笔记(8)kmeans聚类算法及应用

    1.问题导入 假如有这样一种情况,在一天你想去某个城市旅游,这个城市里你想去的有70个地方,现在你只有每一个地方的地址,这个地址列表很长,有70个位置.事先肯定要做好攻略,你要把一些比较接近的地方放在 ...

  2. python 两阶段聚类_挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法...

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  3. xgboost算法_回归建模的时代已结束,算法XGBoost统治机器学习世界

    作者 | 冯鸥 发布 | ATYUN订阅号 Vishal Morde讲了这样一个故事:十五年前我刚完成研究生课程,并以分析师的身份加入了一家全球投资银行.在我工作的第一天,我试着回忆我学过的一切.与此 ...

  4. umap算法_生命科学中的 UMAP(降维算法)

    UMAP应该说是目前最好的降维算法了,能最大程度的保留原始数据的特征同时大幅度的降低特征维数. 这是<生命科学的数理统计和机器学习>的相关探讨,我试图介绍生物信息学.生物医学.遗传学等常见 ...

  5. prim算法_最小生成树的本质是什么?Prim算法道破天机

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法和数据结构专题20篇文章,我们继续最小生成树算法,来把它说完. 在上一篇文章当中,我们主要学习了最小生成树的Kruskal算法.今 ...

  6. etc的常见算法_(转)8种常见机器学习算法比较

    机器学习算法太多了,分类.回归.聚类.推荐.图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验.通常最开始我们都会选择大家普遍认同的算法,诸如SV ...

  7. 一致性hash算法_(图文案例)一致性哈希算法详解 一点课堂(多岸教育)

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  8. python50种算法_一文洞悉Python必备50种算法

    本文是一些机器人算法(特别是自动导航算法)的Python代码合集. 其主要特点有以下三点:选择了在实践中广泛应用的算法:依赖最少:容易阅读,容易理解每个算法的基本思想.希望阅读本文后能对你有所帮助. ...

  9. 两个矩阵是否相交的算法_刷透近200道数据结构与算法,成功加冕“题王”,挤进梦中的字节!...

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

最新文章

  1. 我所知道的flex布局 —— 上篇
  2. 设计模式——外观模式
  3. java分表插件_fastmybatis编写分表插件
  4. 2018-3-24Linux系统管理(13)程序包管理(3)yum前端配置及编译
  5. 【ubuntu-qt-dlib】 配置问题 (二) terminate called after throwing an instance of 'dlib::image_load_error'
  6. 论文解读丨Zero-Shot场景下的信息结构化提取
  7. json中含有Unicode的处理办法 C#
  8. 数字后端基本概念-合集
  9. 使用 JQuery EasyUI
  10. c语言汉诺塔问题详解
  11. 搜狗微信文章采集php,搜狗微信采集 —— python爬虫系列一
  12. 【python 作日期的折线图和柱状图组合图】
  13. Snort 中文手册【http://snort.org.cn/】
  14. 不同时区时间换算_时区换算
  15. Matlba实现傅里叶变换及其逆变换
  16. drupal 执行.php文件,Drupal7.xPHP代码执行漏洞分析
  17. HTML元素的水平/垂直居中方式(简单代码和图)
  18. 网络营销中的动态定价策略
  19. JavaCV1.5.3版本FFmpegFrameGrabber初始化的时候加载时间长的解决方法
  20. bt linux wifi,Ubuntu安装无线网卡驱动Wifi/BT BCM4330(AP6383)

热门文章

  1. [Python人工智能] 三十四.Bert模型 (3)keras-bert库构建Bert模型实现微博情感分析
  2. 【数据结构与算法】之深入解析“柱状图中最大的矩形”的求解思路与算法示例
  3. 对于一颗具有n个结点,度为4的树来说,( )
  4. 1480. Running Sum of 1d Array 一维数组的动态和
  5. Jeson nano + 思岚激光雷达rplidar_s1 + ubuntu18.04
  6. 【Qt】2D绘图之填充规则
  7. 【MFC】工具栏左侧双线效果
  8. 手机开启开发模式 hbuilder无法搜索到_MIUI 12这个惊艳功能,其他手机也能一键开启...
  9. php修改数组元素,php数组特定元素修改方法
  10. vector的基本操作