本文为雷锋字幕组编译的技术博客,原标题The 5 Clustering Algorithms Data Scientists Need to Know,作者为George Seif。
聚类是一种关于数据点分组的机器学习技术。给出一组数据点,我们可以使用聚类算法将每个数据点分类到特定的组中。理论上,同一组中的数据点应具有相似的属性或特征,而不同组中的数据点应具有相当不同的属性或特征(即类内差异小,类间差异大)。聚类是一种无监督学习方法,也是一种统计数据分析的常用技术,被广泛应用于众多领域。
在数据科学中,我们可以通过聚类算法,查看数据点属于哪些组,并且从这些数据中获得一些有价值的信息。今天,我们一起来看看数据科学家需要了解的5种流行聚类算法以及它们的优缺点。
一、K均值聚类
K-Means可能是最知名的聚类算法了。在数据科学或机器学习课程中都有过它的介绍。K-Means的代码也非常容易理解和实现。请查看下面的图片:
当然,K-Means也有两个缺点。首先,你必须选择有分类组的数目(如聚为3类,则K=3)。这并不能忽略,理想情况下,我们希望它使用聚类算法来帮助我们理解这些数据,因为它的重点在于从数据中获得一些有价值的发现。由于K-means算法选择的聚类中心是随机的(即初始化是随机的),因此它可能会因为类数不同而运行算法中产生不同的聚类结果。因此,结果可能不可重复且缺乏一致性。相反,其他集群方法更一致。
K-Medians是与K-Means有关的另一种聚类算法,不同之处在于我们使用组的中值向量来重新计算组中心点。该方法对异常值不敏感(因为使用中值),但对于较大的数据集运行速度就要慢得多,因为在计算中值向量时,需要在每次迭代时进行排序。
二、Mean-Shift聚类
平均移位聚类是基于滑动窗口的算法,试图找到密集的数据点区域。这是一种基于质心的算法,意味着目标是定位每个组/类的中心点,通过更新中心点的候选点作为滑动窗口内点的平均值来工作。然后在后处理(相对‘预处理’来说的)阶段对这些候选窗口进行滤波以消除近似重复,形成最终的中心点集及其相应的组。请查看下面的图片:
Mean-Shift聚类用于单个滑动窗口
下面显示了所有滑动窗口从头到尾的整个过程的说明。每个黑点代表滑动窗口的质心,每个灰点代表一个数据点。
Mean-Shift聚类的整个过程
与K均值聚类相比,不需要选择聚类数量,因为均值偏移可以自动发现。这是一个巨大的优势。聚类中心向最大密度点聚合的结果也是非常令人满意的,因为它的理解比较符合数据驱动的规律,且十分直观。缺点是窗口大小/半径r的选择是非常重要的,换句话说半径的选择决定了运行结果。
三、基于密度的噪声应用空间聚类(DBSCAN)
DBSCAN是一种基于密度的聚类算法,类似于mean-shift,但其拥有一些显着的优点。 看看下面的另一个花哨的图形,让我们开始吧!
DBSCAN的主要缺点是,当簇的密度不同时,DBSCAN的性能不如其他组织。 这是因为当密度变化时,用于识别邻近点的距离阈值ε和minPoints的设置将随着群集而变化。 对于非常高维的数据也会出现这种缺点,因为距离阈值ε再次难以估计。
四、使用高斯混合模型(GMM)的期望最大化(EM)聚类
K-Means的主要缺点之一是其使用了集群中心的平均值。 通过查看下面的图片,我们可以明白为什么这不是选取聚类中心的最佳方式。 在左侧,人眼看起来非常明显的是,有两个半径不同的圆形星团以相同的平均值为中心。K-Means无法处理这个问题,因为这些集群的平均值非常接近。K-Means在集群不是圆形的情况下也会出错,这也是因为使用均值作为集群中心的原因。
K-Means的两个失败案例
高斯混合模型(GMMs)比K-Means更具灵活性。对于GMM,我们假设数据点是高斯分布的。这是一个限制较少的假设,而不是用均值来表示它们是循环的。这样,我们有两个参数来描述群集的形状,均值和标准差。以二维数据为例,这意味着群集可以采取任何类型的椭圆形(因为我们在x和y方向都有标准偏差)。 因此,每个高斯分布被分配给单个集群。
为了找到每个群集的高斯参数(例如平均值和标准偏差),我们将使用期望最大化(EM)的优化算法。 看看下面的图表,作为适合群集的高斯图的例证。然后我们可以继续进行使用GMM的期望最大化聚类过程
使用GMM的EM聚类
使用GMM有两个关键优势。首先GMM比K-Means在群协方面更灵活。由于标准偏差参数,集群可以采取任何椭圆形状,而不是限于圆形。K均值实际上是GMM的一个特例,其中每个群的协方差在所有维上都接近0。其次,由于GMM使用概率,每个数据点可以有多个群。因此,如果一个数据点位于两个重叠的簇的中间,我们可以简单地定义它的类,将其归类为类1的概率为百分之x,类2的概率为百分之y。
五、凝聚层次聚类
分层聚类算法实际上分为两类:自上而下或自下而上。自下而上算法首先将每个数据点视为单个群集,然后连续合并(或聚合)成对的群集,直到所有群集合并成包含所有数据点的单个群集。自下而上的层次聚类因此被称为分层凝聚聚类或HAC。该簇的层次结构被表示为树(或树状图)。树的根是收集所有样本的唯一聚类,叶是仅有一个样本的聚类。在进入算法步骤之前,请查看下面的图解。
凝聚层次聚类
分层聚类不需要我们指定聚类的数量,我们甚至可以选择哪个数量的聚类看起来最好,因为我们正在构建一棵树。另外,该算法对距离度量的选择不敏感;他们都倾向于工作同样好,而与其他聚类算法,距离度量的选择是至关重要的。分层聚类方法的一个特别好的用例是基础数据具有层次结构并且您想要恢复层次结构;其他聚类算法无法做到这一点。与K-Means和GMM的线性复杂性不同,这种层次聚类的优点是以较低的效率为代价,因为它具有O(n3)的时间复杂度。
结论
数据科学家应该知道的这5个聚类算法!我们将期待一些其他的算法的执行情况以及可视化,敬请期待Scikit Learn!
博客原址 https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180047.html原文链接:https://javaforall.cn