机器学习中的集成与聚类

数据挖掘 机器学习 聚类 集成建模
2021-10-09 09:15:22

在 Kaggle 比赛中屡获殊荣后,随着 ensembling(例如 xgboost 学习者的 ensembling)的兴起,使用它已成为机器学习的传统。然而,有些人认为聚类是一种集成形式,我们首先在数据集上应用聚类,然后在每个生成的聚类上应用学习算法(进行分类或回归)。

我想了解聚类与集成有何不同?

编辑

我知道,如果我们简单地考虑“同质集成”,即在每个集群上训练相同的模型,那么集群可以类似于集成的概念。但我正在寻找聚类的潜在限制,其中使用异构集成(所有数据的不同学习)是解决问题的“唯一”方法。

3个回答

简短回答:集成和聚类是完全不相关的技术。

合奏:结合许多不同模型的优势。集成通常不涉及在单独的数据集上训练模型——不同的是模型本身。一般来说,模型越多样化越好。例如,一个集成可能包含以下模型:支持向量机 (SVM)、随机森林、梯度提升模型 (GBM)、逻辑回归、k-最近邻和神经网络。在 Kaggle 上,我还看到顶级竞争对手创建了包含相同类型模型(例如,随机森林)但具有各种调整参数(例如,一个有 100 棵树,另一个有 250 棵树等)的集成。聚类可能是集成中包含的模型之一。集成非常有效(尽管操作起来非常复杂),并且通常可以将您的错误提高约 2-5%。

聚类:将数据分成互斥的组,希望您的特定于集群的模型可以通过专门化来减少错误,除非在组不需要互斥的模糊聚类的情况下。在构建信用风险模型的金融公司中,这些集群专业模型有时被称为“子模型”,因为它们预测相同的目标变量,因此适合抽象/形象的父模型。这使得模型风险报告更容易,因为模型 1 比模型 1a、1b、1c、1d 更简单。这种情况下的聚类通常基于业务知识,而不是正式的聚类技术,例如 k-means 或其他类型的基于质心的聚类。对于监督学习任务,正式聚类通常被认为是一种很差的技术,因为衡量聚类的质量是主观的。根据您初始化中心的方式以及您指定的集群数量,您的集群也会有很大的不同。在实践中,聚类的使用频率远低于集成。

据我了解您的问题,这两种方法之间的区别在于您应用于模型的限制领域。在集成学习期间,例如 xgboost,您将训练多个增强树模型,每个模型都将在数据集中的(随机)特征子集和(随机)物种子集上进行训练。这样,您将获得 N 个分类器,例如,每个分类器对您的问题的体验略有不同,但每个分类器都将在随机有限(没有特定限制)的数据块上进行训练。

如果您在训练之前应用聚类(出于任何原因,无论是分类器的多样性还是减少数据集以使其适合内存),您首先依靠聚类算法在数据集中找到某种社区,然后训练单独的分类器每个集群。我不完全确定它们如何在您的示例中进一步使用,但一种简洁的方法是为新数据分配特定集群并为该实例使用“正确”分类器。

举一个现实世界的例子,以贷款审批问题为例。集成学习中,您将让三个人坐在同一个办公室,与不断需要资金的客户交谈,每个信贷审批人都有类似的经验,但会倾向于研究他们熟悉的特定数据,比如工作、婚姻状况或任何其他“特征”。

集群中,您将有三个人批准贷款,但一个人将严格与农民合作,另一个人将调查最近被解雇的人的案例,第三个人将与急于购买新智能手机的学生打交道。这三个人都将解决同一个问题,但他们的经验将集中在一小部分人身上,而学生管理人员不是决定农民贷款的好选择,因为他没有评估他们的财务状况的经验情况。

当您拥有在培训方面自相矛盾的多样化数据时,聚类方法更有意义(基于性别、基于婚姻状况等的负载批准标准会有所不同,并且已婚人士的批准概率高于单身一次)由于责任和其他东西,即使他们的收入低于单人的收入) - 但是对于每个集群,您将拥有一个工作模型,其他集群模型将提供随机结果,因为它没有接受过其他集群数据的训练。

集成学习的效果很好,因为您可以获得一组对您的问题具有不同“经验”的模型。每个分类器都有自己的精度/召回/一般性能指标,如果三个具有不同特征和示例集的分类器就一个结果达成一致,通常可以肯定地说,如果三个分类器说你是一个苹果,它应该是一个苹果(因为每个分类器 1% 的错误率会给你 1%*1%*1% = 0.0001% 的机会,所有三个分类器都不正确)。

联合分类器错误率的算术并不是那么简单,因为通常集成子模型(这里谈论 xgboost)不是独立的,因为它们共享一些特征,但总体思路是这样的。

这取决于您如何组合结果。

许多合奏技术将:

  1. 训练相同的分类器,但在数据的不同部分
  2. 在完整数据上训练不同的分类器
  3. 变化:分类器和数据子集

在任何一种情况下,您之后都必须合并结果;通常采用某种形式的多数投票。因此,如果 2 个分类器返回“A”,1 个分类器返回“B”,则结果为“A”。

为了获得好的结果,每个成员都需要优于随机;为了改进个别结果,它们不能太相似。

您可以将聚类用于第一种方法(获取数据的不同部分)。但问题是这些部分不是独立的,过于偏颇。您通常希望每个分类器都知道“一点点”。通过保留部分数据,您可以防止它们以同样的方式过度拟合。为此,随机通常是最好的。如果你进行聚类,你有可能得到 1 个认为一切都是“A”的分类器,1 个认为一切都是“B”的分类器,以及 1 个认为一切都是“C”的分类器。你甚至鼓励他们过拟合!所以你总是得到结果 1 A, 1 B, 1 C = 没有多数。