精密聚类变得简单:kscorer自动选择最佳K-means聚类的指南

精准聚类轻松掌握:kscorer自动选取最佳K-means聚类的指南

kscorer通过高级评分和并行化流程,简化了聚类过程,提供了实用的数据分析方法

根据作者的描述由DALL-E-2制作

无监督机器学习,特别是聚类,是数据科学中具有挑战性的任务。它对广泛的实用业务分析项目至关重要。聚类可以单独运行,但它也是复杂数据处理流程中的有价值组件,可以提高其他算法的效率。例如,在开发推荐系统时,聚类发挥着关键作用。

嗯,Scikit-Learn以其各种经过验证的聚类算法而闻名。然而,其中大多数都是参数化的,并且需要设置聚类数量,这是聚类中最大的挑战之一。

通常情况下,在处理数据时会使用迭代方法来确定最优聚类数量。这意味着您要多次进行聚类,每次使用不同的聚类数量,并评估相应的结果。尽管这种技术很有用,但它也有局限性。

yellowbrick软件包是一个常用的工具,可以帮助您轻松识别最优聚类数量。然而,它也有一些缺点。其中一个重要的缺点是在评估多个指标时可能出现冲突的结果以及在图表上识别拐点的挑战。

此外,无论使用哪个软件包,数据集的大小都会引起问题。当处理大型数据集时,资源消耗问题可能会妨碍您有效地迭代多个聚类。如果是这种情况,可以考虑探索诸如MiniBatchKMeans等可以进行并行聚类的技术。

但是,对聚类例程的高级优化可能需要使用较少人知的技术,下面将对此进行描述。您还将了解到kscorer软件包,它简化了这些技术,提供了一种更强大和高效的方法来确定最优聚类数量。

没有任何问题,这些技术包括:

  • 降维。在应用聚类算法之前,对数据进行主成分分析(PCA)可能是有益的。这将减少数据干扰,实现更可靠的聚类过程。
  • 余弦相似度。可以通过对数据应用欧几里得归一化的方式,以(近似)余弦距离的形式在K-means中使用。因此,您无需预先计算距离矩阵,例如在执行凝聚聚类时。
  • 多指标。为了找到最优聚类数量,应依赖多指标评估,而不是依赖单一指标。
  • 数据采样。为了解决资源消耗问题并改进聚类结果,可以从数据中获取随机样本进行聚类操作和评估指标。从多次迭代中平均得分可以减小随机性的影响,产生更一致的结果。

该工作流程如下图所示。

由作者提供的图像

幸运的是,无需从头开始构建整个流程,因为已经有一个实现可用在kscorer软件包中。

现在,让我们深入探讨一下

我曾经在一次会议演讲中听到一位数据科学家说:“基本上,只要您知道自己在做什么,您就可以做任何您想做的事情。” © Alex2006

建议在进行聚类之前对数据进行缩放,以确保所有特征在同一起跑线上,并防止某些特征因其数值大小而占主导地位。 标准化(基于平均值进行中心化,并通过标准差进行缩放)或 最小-最大缩放(将值缩放到指定范围)是常用的缩放技术。

值得注意的是,特征缩放的重要性不仅适用于 KNeighbors 模型,而且适用于各种数据科学方法。通过使用 z-score 归一化来标准化特征确保所有特征在相同尺度上,防止任何特征因其数值大小而在模型调整中占主导地位。此缩放过程可以显著影响模型的性能,与使用未缩放数据相比,导致不同的模型调整。

此外,K-means 聚类与 PCA 之间存在基本联系,这一点在 Ding 和 He 的论文 “K-means Clustering via Principal Component Analysis” 中得到了探究。虽然最初用于不同的目的,但这些技术最终目的都是以有效地表示数据并最小化重构误差。PCA 旨在将数据向量表示为少量特征向量的组合。相反,K-means 聚类旨在将数据向量表示为聚类质心向量的组合。这两种方法都努力将均方重构误差最小化。

在应用 PCA 后,由于可能出现计算问题(有些值可能接近零,而其他值可能非常大),我们将再次对数据进行缩放。由于我们已经失去了对初始特征的追踪(经过 PCA 后),所以数据将不会有解释。

另一个可能不被常知的有趣相关性是 余弦相似度 和欧氏距离之间的关系。当它们可以间接地互换使用时,了解这些度量之间的关系至关重要。这种知识在将传统的 K-means 聚类算法转变为球形 K-means 聚类算法时具有实际应用,其中余弦相似度是聚类数据的重要指标。如前所述,我们可以通过对数据应用欧氏归一化来“建立”余弦相似度和欧氏距离之间的连接。

在没有基本真实的聚类标签的情况下,对聚类模型的评估必须依赖内在度量指标,而 kscorer 包 提供了一套全面的指标来评估聚类的质量。这些指标为识别出的聚类之间的分离程度提供了有价值的洞察:

  • 轮廓系数。它通过计算一个数据点到最近的非所属聚类的平均距离与该数据点的簇内平均距离之间的差异来量化聚类的分离程度。结果进行标准化,并表示为两者之间的比例,较高的值表示较好的聚类分离。
  • Calinski-Harabasz 指数。它计算聚类间散射与聚类内散射之间的比率。在 Calinski-Harabasz 测试中得分更高表示更好的聚类性能,即表示明确定义的聚类。
  • Davies-Bouldin 指数。它通过计算聚类间离散度与聚类内离散度的比率来衡量聚类的分散程度,较低的值表示更好的聚类性能和更明显的聚类。
  • Dunn 指数。 它通过将簇间距离(任意两个聚类质心之间的最小距离)与簇内距离(任意两个点之间的最大距离)进行比较来评估聚类的质量。较高的 Dunn 指数表示更明确的聚类。

该包中用于计算指标的 Python 计算如下所示:

  • 贝叶斯信息准则 (BIC)。BIC 是一种附加的、在某种程度上独立的度量标准。虽然 K-means 模型不提供直接的概率模型,但 BIC 可以帮助估计应用 K-means 模型后的数据分布。这种方法提供了更全面的聚类质量评估。

所有指标都标准化,确保较高的分数始终表示明确定义的聚类。这种彻底的评估对于确定数据集中最佳聚类数至关重要。

为了克服内存限制并迅速执行K-means聚类的数据预处理和评分操作,kscorer软件包利用N个随机数据样本。这种方法确保无缝执行,并适应不同大小和结构的数据集。与交叉验证技术类似,即使每次迭代仅关注数据的有限子集,也能保持强大的结果。

亲手操作kscorer

因此,我们有一些用于聚类的数据。请注意,在这种情况下,我们假装不知道确切的聚类数。

继续进行,我们将将数据集分为训练集和测试集,并适应一个模型来检测最佳聚类数。该模型将自动搜索3到15之间的最佳聚类数。可以通过以下简单的方式轻松实现:

完成拟合过程后,我们可以查看应用于所有指标的缩放得分。这将帮助我们确定最适合我们可用数据的聚类数。在检查绘图时,您会注意到一些聚类点以及相应的得分高亮显示。这些带标签的点对应于所有指标的平均分数中的局部最大值,因此是选择最佳聚类数的最佳选项。

现在,我们可以评估我们的新聚类标签与真实标签的匹配程度。请确保在实际的业务场景中通常不提供此选项 😉

在聚类中,您可以尝试聚类以前未见过的数据,这是一种不寻常的行为。但请注意,这不是典型的聚类任务。一种不同且通常更有用的策略是使用聚类标签作为目标创建分类器。这将使将聚类标签分配给新数据变得更容易。

最后,对我们的数据进行新鲜的交互式视角

就是这样,我们已经深入研究了使用kscorer软件包进行K-means聚类的过程,该软件包简化了寻找最佳聚类数的过程。由于其复杂的指标和并行处理,它已被证明是一个实用的数据分析工具。