原文:LINK
作者:George Seif
文章目录
聚类是一种将数据点分组的机器学习技术 。给定一组数据点,我们可以使用聚类算法将每个数据点分类为一个特定的组。从理论上讲,同一组中的数据点应具有相似的属性或特征,而不同组中的数据点应具有高度不相似的属性或特征。聚类是一种无监督学习方法,是许多领域中用于统计数据分析的常用技术。
在数据科学中,可以使用聚类分析通过查看当应用聚类算法时数据点属于哪些组来从数据中获得一些有价值的见解。本文将研究数据科学家需要了解的5种流行的聚类算法,以及它们的优缺点!
1. K-Means Clustering
K-Means 可能是最著名的聚类算法。在许多数据科学和机器学习课程中都介绍过它,它很容易理解和用代码实现!其聚类过程如下图所示。
- 首先,选择要使用的类/簇数量,然后随机初始化它们各自的中心点,中心点是由与数据点向量相同长度的向量。要弄清楚要使用的类的数量,最好快速查看数据并尝试识别任何不同的分组。上图中,中心点用“X”表示。
- 通过计算该点与每个簇中心之间的距离,对每个数据点进行分类,然后将其分类为中心最接近该点的组中的点。
- 基于这些分类点,我们通过取组中所有向量的平均值来重新计算组中心。
- 重复这些步骤以设置一定的迭代次数,或者直到组中心在两次迭代之间变化不大为止。您也可以选择随机初始化组中心几次,然后选择看起来效果最好的运行。
K-Means 的优点是速度很快,因为我们真正要做的就是计算点与组中心之间的距离,这只需要很少的计算!因此,它的复杂度是线性的,即 O ( n ) O(n) O(n)。
另一方面,K-Means有两个缺点。首先,必须选择有多少个簇(类)。理想情况下,使用聚类算法,我们希望它为我们解决这些问题,因为它的目的是从数据中获得一些洞察力。K-Means还始于对聚类中心的随机选择,因此它可能在算法的不同运行中产生不同的聚类结果。因此,结果可能无法重复且缺乏一致性。其他聚类方法更加一致。
K-Medians是与K-Means相关的另一种聚类算法,除了不是使用均值重新计算组中心点,而是使用组的中值矢量。该方法对异常值不太敏感(因为使用了中值),但对于较大的数据集则要慢得多,因为在计算中值矢量时,每次迭代都需要排序。
2. Mean-Shift Clustering
均值漂移聚类是一种基于滑动窗口的算法,试图找到数据点的密集区域。这是一种基于质心的算法,意味着目标是找到每个组/类的中心点,该工作原理是将中心点的候选对象更新为滑动窗口中点的平均值。然后在后处理阶段中过滤这些候选窗口,以消除几乎重复的部分,从而形成最终的一组中心点及其对应的组。
-
为了解释均值漂移,我们将考虑二维空间中的一组点,如上图所示。我们从一个圆形的滑动窗口开始,该窗口的中心是点C(随机选择),半径为r。均值漂移是一种爬山算法,它涉及在每个步骤上迭代地将此内核移至更高的密度区域,直到收敛为止。
-
在每次迭代中,通过将中心点移动到窗口内各点的平均值,滑动窗口便朝着密度更高的区域移动(因此而得名)。滑动窗口内的密度与其中的点数成正比。自然地,通过移动到窗口中点的平均值,它将逐渐移向点密度较高的区域。
-
继续根据平均值移动滑动窗口,直到没有方向可以在内核内部容纳更多点的移动为止。上图一直移动圆,直到不再增加密度(即窗口中的点数)为止。
-
步骤1到3的过程是使用许多滑动窗口完成的,直到所有点都位于窗口内。当多个滑动窗口重叠时,将保留包含最多点的窗口。然后,根据数据点所在的滑动窗口对它们进行聚类。
下面显示了所有滑动窗口从头到尾的整个过程。每个黑点代表一个滑动窗口的质心,每个灰点代表一个数据点。
与K均值聚类相反,由于均值漂移会自动发现聚类数,因此无需选择聚类数。这是巨大的优势。聚类中心向最大密度点收敛也是非常可取的,因为它非常直观,易于理解,并且很自然地适合数据驱动。缺点是窗口半径“r”的选择可能不容易。
3. DBSCAN
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种类似于均值漂移的基于密度的聚类算法,但具有两个显著的优势。
- DBSCAN从一个尚未访问的任意起始数据点开始。使用距离ε提取该点的邻域(ε距离内的所有点均为邻域点)。
- 如果在该邻域内有足够数量的点(根据minPoints),则聚类过程开始,当前数据点将成为新聚类中的第一个点。否则,该点将被标记为噪声(此噪点可能会成为群集的一部分)。在两种情况下,该点都标记为“已访问”。
- 对于新群集中的第一个点,其ε距离邻域内的点也将成为同一群集的一部分。然后,对刚刚添加到群集组的所有新点重复执行使ε邻域中的所有点都属于同一群集的过程。
- 重复步骤2和3的过程,直到确定了群集中的所有点,即群集ε邻域内的所有点都已被访问并标记。
- 一旦完成了当前群集的处理,便会检索并处理一个新的未访问点,从而导致发现其他群集或噪声。重复此过程,直到所有点都标记为已访问。由于在此结束时已访问了所有点,因此每个点将被标记为属于群集或为噪声。
与其它聚类算法相比,DBSCAN具有一些巨大的优势。首先,它完全不需要预先设置聚类数量。它也将离群值识别为噪声,这与均值漂移不同,均值漂移即使将数据点非常不同,也会将它们简单地放入群集中。另外,它可以很好地找到任意大小和形状的簇。
DBSCAN的主要缺点是,当群集的密度不同时,它的性能不如其它聚类算法。这是因为当密度变化时,用于识别邻近点的距离阈值ε和minPoint的设置将随着簇而变化。由于距离阈值ε再次变得难以估计,因此在非常高维的数据中也会出现此缺点。
4. Expectation–Maximization (EM) Clustering using Gaussian Mixture Models (GMM)
K-Means的主要缺点之一是简单地使用了聚类中心的平均值。通过查看下图,可以看出这不是最佳的处理方式。在左侧,人眼看起来很明显,有两个以相同平均值为中心的不同半径的圆形簇。K-Means无法处理此问题,因为聚类的平均值非常接近。再次由于使用均值作为聚类中心,聚类不是圆形的情况下,K-Means也会失败。
高斯混合模型(GMM)提供了比K-Means更大的灵活性。对于GMM,假设数据点是高斯分布的。与使用均值说它们是圆形的相比,这是一个限制性较小的假设。这样,有两个参数来描述聚类的形状:均值和标准差!以二维为例,这意味着聚类可以采用任何一种椭圆形(因为在x和y方向上都有标准差)。因此,每个高斯分布都分配给单个群集。
为了找到每个聚类的高斯参数(例如均值和标准差),使用称为“期望最大化”(EM)的优化算法。请看下面的图形,使用GMM进行“期望最大化”聚类的过程。
- 首先选择簇的数量(就像K-Means一样),然后随机初始化每个簇的高斯分布参数。也可以通过快速查看数据来尝试为初始参数提供一个很好的估计。如上图所示,但这并不是必要的,因为该算法初始化效果并不好,但很快就得到了优化。
- 给定每个群集的这些高斯分布,请计算每个数据点属于特定群集的概率。距离高斯中心越近,则该点越可能属于该群集。这应该具有直觉的意义,因为在高斯分布的情况下,假设大多数数据都更靠近群集的中心。
- 基于这些概率,为高斯分布计算了一组新的参数,从而使聚类中数据点的概率最大化。使用数据点位置的加权总和来计算这些新参数,其中权重是属于该特定群集的数据点的概率。为了直观地说明这一点,可以看一下上面的图形,特别是以黄色簇为例。分布在第一次迭代时随机开始,但是可以看到大多数黄点在该分布的右侧。当我们计算由概率加权的总和时,即使中心附近有一些点,但大多数都在右边。因此,自然而然地,分布的均值就更接近那些点集。还可以看到,大多数点是“从右上到左下”。因此,标准差会更改以创建更适合这些点的椭圆,以使概率加权的总和最大化。
- 迭代地重复执行步骤2和3,直到收敛为止,此时迭代之间的分布变化不大。
使用GMM有两个主要优点。首先,就聚类协方差而言,GMM比K-Means 灵活得多。由于标准差参数的原因,聚类可以采用任何椭圆形,而不仅限于圆形。K-Means实际上是GMM的一种特殊情况,其中每个聚类在所有维度上的协方差接近0。第二,由于GMM使用概率,因此每个数据点可以具有多个聚类。因此,如果数据点位于两个重叠集群的中间,我们可以简单地定义它的类别,只需说它属于类别1的X-百分比和类别2的Y-百分比。即GMM支持混合成员资格。
5. Agglomerative Hierarchical Clustering
层次聚类算法分为两类:自顶向下或自底向上。自下而上的算法从一开始就将每个数据点视为一个群集,然后依次合并(或凝聚)成对的群集,直到所有群集都已合并为包含所有数据点的单个群集。因此,自下而上的层次聚类称为层次聚类聚类(hierarchical agglomerative clustering,HAC)。群集的这种层次结构表示为树(或树状图)。树的根是聚集所有样本的唯一簇,叶子是只有一个样本的簇。
- 首先将每个数据点视为一个聚类,即,如果数据集中有X个数据点,那么就有X个聚类。然后,选择一个距离度量标准,该度量标准可测量两个聚类之间的距离。例如,使用平均链接将两个群集之间的距离定义为第一个群集中的数据点和第二个群集中的数据点之间的平均距离。
- 在每次迭代中,将两个群集合并为一个。将要组合的两个集群选择为平均链接最小的集群。即,根据选择的距离度量,这两个群集彼此之间的距离最小,因此最相似,应将其合并。
- 重复步骤2,直到到达树的根为止,即只有一个包含所有数据点的群集。这样,只需选择何时停止组合群集,即何时停止构建树,就可以选择最终需要多少个群集!
层次聚类不需要指定聚类的数量,而且由于正在构建树,因此可以选择哪个集群数量最好。另外,该算法对距离度量的选择不敏感。它们都趋于平等地工作,而对于其它聚类算法,距离度量的选择至关重要。层次结构聚类方法的一个特别好的用例是,基础数据具有层次结构,以便恢复层次结构。其它聚类算法无法做到这一点。层次聚类的这些优点是以较低的效率为代价的,因为它的时间复杂度为 O ( n ³ ) O(n³) O(n³),与K-Means和GMM的线性复杂度不同。
6. Sklearn 不同聚类算法对比
【sklearn:添加链接描述】