随着在卡格勒竞赛中不断获胜的团体(如xgboost学习者的组合)的提高,使用它已经成为机器学习中的一种传统。然而,有些人认为聚类是一种集合形式,我们首先将聚类应用于一个数据集,然后对每个聚类应用一种学习算法(进行分类或回归)。
我想了解聚类和集合有什么不同?
我理解,如果我们简单地考虑“同质集成”,即我们在每个集群上训练相同的模型,那么聚类可能类似于集成的想法。但是我正在寻找聚类的潜在局限性,在这种情况下,使用异构集群(对所有数据进行不同的学习)是解决这个问题的“唯一”方法。
发布于 2016-04-06 14:47:58
简短的回答:包含和聚类是完全不相关的技术。
Ensembling:结合许多不同模式的优点。集合通常不涉及在不同的数据集上训练模型--模型本身是不同的。一般来说,模式越多样化,效果越好。例如,集合可以包括以下模型:支持向量机(SVM)、随机森林、梯度增强模型(GBM)、logistic回归、k近邻和神经网络。在Kaggle,我还看到顶级竞争对手创造了由相同类型的模型(例如随机森林)组成的组合,但是具有各种调谐参数(例如,一个有100棵树,另一个有250棵树,等等)。聚类可能是集合中包含的模型之一。集合是非常有效的(虽然操作非常复杂),并且通常可以将您的错误提高2-5%。
聚类:将数据划分为相互排斥的组,希望您的集群特定模型能够通过专门化来减少错误,但模糊聚类的情况除外,在这种情况下,组不需要相互排斥。在建立信用风险模型的金融公司,这些专门的集群模型有时被称为“子模型”,因为它们预测相同的目标变量,因此适合于抽象/具象的父模型。这使得模型风险报告变得更容易,因为参考模型1比模型1a、1b、1c、1d更简单。在这种背景下,聚类一般基于业务知识,而不是一种正式的聚类技术,例如k均值或其他类型的基于质心的聚类。对于有监督的学习任务,形式聚类通常被认为是一种很差的技术,因为聚类的质量是主观的。您的集群也可能因您如何初始化中心和指定多少集群而发生巨大的变化。在实践中,聚类的使用频率远低于集成。
发布于 2016-04-06 09:36:47
就我理解您的问题而言,这两种方法之间的区别在于您对模型的适用范围。在集成学习期间,例如xgboost,您将训练多个增强树模型,每个模型都将根据数据集中的(随机)特征子集和(随机)子集进行训练。这样,您就可以得到N个分类器,例如,每个分类器对您的问题都有不同的体验,但是每个分类器都会接受随机限制(没有特定限制)数据块的训练。
如果在训练前应用聚类(无论出于任何原因,无论是分类器的多样性还是数据集的缩减以将其放入内存),则首先依赖聚类算法在数据集中查找某种社区,然后为每个集群训练单独的分类器。在您的示例中如何使用它们,我还不完全确定,但是一个简洁的方法是为一个新的数据分配一个特定的集群,并为那个实例使用'right‘分类器。
举个现实世界的例子,以贷款审批问题为例。在集成学习中,你会有三个人坐在同一间办公室里,与不断流动的需要钱的客户交谈,每个信贷审批者都会有类似的经历,但会倾向于查看他们熟悉的特定数据,如工作、婚姻状况或任何其他“特征”。
在聚类中,将有三人批准贷款,但其中一人将严格与农民合作,另一人将调查最近被解雇的人的案件,第三人将与急于购买一部新智能手机的学生打交道。三人都将致力于解决同样的问题,但他们的经验将集中在一小部分人身上,而一名学生管理人员对农民贷款作出决定并不是一个好选择,因为他没有评估他们经济状况的经验。
当你有不同的数据时,聚类方法就更有意义了(基于性别的、基于婚姻状况等的负载审批标准可能会有所不同,而已婚人士因责任和其他原因而获得批准的概率也会高于单身,即使他们的收入会低于单身人的收入)--但对于每个集群来说,您将有一个单一的工作模式,而其他--集群模型会提供随机的结果,因为它还没有接受过其他聚类数据的培训。
合奏学习的效果很好,你可以得到一套对你的问题有不同“经验”的模型。每个分类器都有自己的精度/召回/一般性能度量,如果三个具有不同特征和示例集的分类器对结果一致,通常可以肯定地说,如果三个分类器说你是一个苹果,那么它应该是一个苹果(因为每个分类器的错误率为1%* 1% *1% = 0.0001%,所有三个分类器都不正确)。
联合分类器错误率的算法并不那么简单,因为通常集成子模型(这里讨论的是xgboost )并不是独立的,因为它们有一些共同的特性,但是一般的思想是这样的。
发布于 2016-04-06 16:02:45
这取决于你如何组合结果。
许多合奏技术要么是:
在任何一种情况下,你之后都必须把结果结合起来,通常是以某种形式的多数投票。因此,如果两个分类器返回"A",一个分类器返回"B",则结果是"A“。
要获得好的结果,每个成员都需要比随机的更好;要比个别的结果更好,就不能太相似。
对于第一种方法,您可以使用集群(获取数据的不同部分)。但问题是,这些部分不是独立的,而且过于偏颇。你通常希望每个分类器都知道“每件事的一点”。通过保留部分数据,您可以防止它们以相同的方式过度使用。因此,随机通常是最好的。如果你进行聚类,你有可能得到一个分类器,它认为一切都是"A",一个认为一切都是"B",还有一个认为一切都是"C“。你甚至鼓励他们过度适应!所以你总是得到结果,1A,1B,1C=不多数。
https://datascience.stackexchange.com/questions/11057
复制相似问题