预先聚类有助于建立更好的预测模型吗?


9

对于流失建模的任务,我正在考虑:

  1. 计算数据的k个聚类
  2. 分别为每个集群构建k个模型。

这样做的理由是,没有证据可以证明子代客群体是同质的,因此有理由假设数据生成过程可能因不同的“组”而异。

我的问题是,这是否合适?它违反任何东西,还是出于某种原因被认为是不好的?如果是这样,为什么?

如果不是,您是否会分享有关该问题的一些最佳实践?第二件事-做预聚类通常比模型树好还是坏(如Witten,Frank中定义的那样,分类/回归树在叶子上有模型。直觉上看来,决策树阶段只是聚类的另一种形式,但是如果它比“常规”群集有任何优势,请访问idk。)。

Answers:


3

有一种称为聚类回归的方法可以解决类似的问题(首先聚类数据,然后构建预测模型)。例如参见此。


1
我在这里查找:tandfonline.com/doi/abs/10.1080/00273170701836653,并在摘要中找到以下内容:“在某些情况下,响应变量的大部分变化是通过对对象进行聚类来解释的,而这样做几乎没有提供任何其他好处聚类内回归模型。因此,聚类回归具有巨大的过拟合潜力”。看起来似乎并不乐观。
Ziel 2012年

好的,但是他们并没有说它总是失败。我从未使用过这种方法,我只知道它可能是有监督方法和无监督方法的组合,但是使用这种方法的论文很少。
米洛斯拉夫·萨博

另外,我发现的大多数应用程序都是关于市场营销和金融的,因此也许特别适合此类数据。
米洛斯拉夫·萨博

1
对于市场营销领域-流失,交叉/追加销售,它似乎非常直观。
Ziel 2012年

2

两点太长了,无法发表评论:

  • 纯聚类(即仅包含一个类的情况)本身没有问题:所谓的一类分类器对每个类进行建模,使其独立于所有其他类。他们可以完美地解决这个问题。

  • 但是,如果数据聚类以类完全分离的方式(即聚类相当纯净)表示存在很强的结构,则聚类分析无需类标签的指导即可找到该结构。这意味着某些类型的分类器(例如基于聚类分析所使用的相同距离度量的最近邻方法)适用于数据。

  • 另一种可能性是,聚类不是纯净的,但是聚类和分类方法的组合可以很好地适用于树木。树将完成集群的一部分(并且纯节点不被视为问题。)这是一个人工示例,它是XOR问题的2个集群版本:
    XOR集群

  • 在不冒纯簇风险的情况下包含簇信息的另一种方法是将聚类用作特征生成步骤:将聚类分析的结果作为新变量添加到数据矩阵中。

  • 您问它是否由于某种原因而不好:一个陷阱是,这种方法导致模型具有许多自由度。您必须特别小心,不要过大。

  • 看看基于模型的树,例如mbq在这里的答案,我认为它们实现的概念非常接近您想要的模型。它们也可以实现为森林:例如R包mobForest


1

这些天我正在处理类似的问题。我有数百个功能可以构建分类器。在尝试了不同的模型(例如:随机森林,梯度提升等)之后,我的精度/召回率仍然很低。因此,我尝试进行一些聚类,然后在不同的组中构建分类器。就像Anony-Mousse所说的那样,我担心的是,如果我在聚类中使用所有信息,如何从分类器中获取更多信息?所以这是我下一步要做的:

  1. 使用某些功能(根据先验知识,较少)进行聚类。
  2. 使用其他功能(更多)来训练分类器。

我认为这也可能有助于降低复杂性,希望有帮助。


1

建造 ķ 集群然后 ķ相应的模型是绝对可行的。评论中指出的病理案例,其中聚类将结果变量完全分开将给分类器带来困难,这是一个理论问题,但我认为这不太可能(尤其是在高维案例中)。此外,如果您可以构建此类集群,则可以仅使用这些集群进行预测!

此外,如果流程开始于 ñ 样本,分类器只能使用 ñ/ķ样品。因此,一种更强大的方法是使用聚类来构建单个分类器,该分类器使用回归混合将聚类的异质性纳入其中。在基于模型的聚类中,假设数据是从混合物分布中生成的ÿ一世ñμ一世σ一世2 哪里 一世=1个 很有可能 π一世=2 很有可能 1个-πμ1个 μ2σ1个2σ22。混合回归是一种扩展,它使人们可以将数据建模为依赖于协变量。μ一世 被替换为 β一世X一世,其中 β一世必须估计。尽管此示例适用于单变量高斯情况,但该框架可以容纳许多数据(多项式对数适用于分类变量)。用于R 的flexmix软件包提供了更详细的描述,当然还提供了一种相对容易和可扩展的方式来实现此方法。

或者,在区分性设置中,可以尝试将群集分配(硬或软)作为一种功能来训练选择的分类算法(例如NB,ANN,SVM,RF等)。


0

好吧,如果您的集群真的很好,那么您的分类器将很糟糕。因为他们的训练数据没有足够的转移。

说您的集群是完美的,即纯净的。您甚至无法再在那里正确地训练分类器。分类器需要正面和负面的例子!

随机森林在做完全相反的事情上非常成功。他们随机抽取数据样本,在其上训练分类器,然后使用所有训练有素的分类器。

可能的工作是使用集群,然后在每集群上训练分类器,至少在它们之间的分歧很大时(如果将一个类分为两个集群,您仍然不能在那里训练分类器!)


聚类的目的不是要找到“纯”聚类,即在区分我的目标变量方面非常出色的聚类。聚类的目的是在“其他”区域中找到同质的组。举个例子:我认为,在流失中有“仅质量”客户和“成本优化”客户。我认为我不应该假设两组的分类功能相同,所以我想为每个组建立单独的模型。当然,我没有明确的“质量”和“成本”组,因此通过聚类首先从数据中得出此类组的想法。
Ziel 2012年

数据中任何种类的额外不平衡和相关性都可能会造成损害。可见,分类器可能希望识别“仅质量”和“成本优化”。如果他只得到一组,他将无法利用这一区别。
已退出-Anony-Mousse 2012年

1
但是只有当您采用两级方法时,才首先按聚类进行分类,然后评估聚类分类器。否则,常量分类器将无用。然后,您将所有负担都放在了集群上。
已退出–Anony-Mousse 2012年

1
好吧,这就是我对OP的理解。
cbeleite对SX不满意,2012年

1
您当然可以这样做,但是很有可能您的集群不是那么好,并且最好通过“重叠”分类器的适当集成来获得更好的收益。就像RandomForests一样。
已退出–Anony-Mousse 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.