是否可以根据目标对数据进行聚类?

数据挖掘 聚类 预测建模 预测重要性
2021-10-06 09:17:30

我想知道是否存在根据目标对数据进行聚类的技术。例如,假设我们想要找到可能流失的客户组:

  • 目标是流失。
  • 我们希望根据它们可能流失(或不流失)的事实来找到表现出相同行为的集群。因此,不解释流失行为的变量不应影响集群的构建方式。

我通过以下方式进行了分析:

  1. 预测目标(例如使用随机森林)并检索“最重要的特征”(来自特征重要性分析)。
  2. 具有选定特征的聚类样本(例如使用 k-means)。

但是,我担心第二步中使用的聚类技术可能无法捕捉到第一步中发现的可能解释流失的行为(假设 RF 中的某些树中存在复杂的交互,这种交互可能不会在 k-表示算法)。

我正在考虑使用神经网络的另一种方法:

  1. 使用具有多个层的神经网络预测目标,并为每个样本从给定层检索激活。
  2. 聚类样本及其激活。

如果神经网络的性能良好,并且如果从中检索激活的层是经过仔细选择的(不太靠近输入或输出层),我想这些集群可以向客户展示解释目标的相同行为。

我没有找到任何具有这种方法的文章。有没有人处理过同样的问题或有其他想法?

4个回答

使用约束聚类

这允许您设置“必须链接”和“不能链接”约束。

然后,您可以通过bsettingn“无法链接”约束对您的数据进行聚类,以便没有集群包含“流失”和“非流失”条目。

我只是不知道有什么好的实现。

我会尝试的一种方法是监督降维(UMAP,例如https://umap-learn.readthedocs.io/en/latest/supervised.html),然后是聚类方法(例如 Hdbscan:https://hdbscan.阅读thedocs.io/en/latest/how_hdbscan_works.html)。这将允许您执行聚类,包括监督维度。请注意,我发现 UMAP 可能会“过度拟合”——从某种意义上说,它可能会在训练数据上提供干净的“组”,而在测试数据上提供非常不同的东西。

首先,你的方法很聪明,很有创意,但有一些评论:

  1. 这个问题没有很好地定义。您谈论使用目标进行聚类,这实际上是自相矛盾的,但是我理解您的观点。问题是,不关心这个悖论可能会损害你的第二点分析。
  2. 根据1,您根据目标对点进行分类,并尝试在那里找到密集的子组。这将不起作用,因为您将目标包括在分析中。这是我上面提到的自相矛盾的定义造成的混乱。
  3. 你有你的目标,所以根据它们划分你的数据并分别分析每个数据子集,关注它们的交互。

二是建议:

亚组发现

这是找到这些有趣的子群的正确、可靠和困难的方法。要将它应用到您的用例中,您需要修改算法,这可能会使它变得更加困难,但至少值得一看

创意方式

根据目标对数据进行分区。您最终会得到几个不相交的数据子集。然后开始对数据子集内和数据子集之间的变量关联进行统计分析。例如,如果该变量确实有助于该目标(ANOVA),则变量内的值分布在不同类别之间应该有显着差异。

这也有助于删除对目标没有贡献的变量(通过这样做1.您可以降低数据和分析的复杂性并通过删除它们来提高可解释性,2.您已经发现哪个目标没有贡献,这是您的一部分回答)

PS:我只是即兴发挥。请尝试一下,让我知道它是否有效,以便我们考虑另一种解决方案:)

预测目标(例如使用随机森林)并检索“最重要的特征”(来自特征重要性分析)。具有选定特征的聚类样本(例如使用 k-means)。

您还必须根据可变重要性进行扩展。

但是,我担心第二步中使用的聚类技术可能无法捕捉到第一步中发现的可能解释流失的行为(假设 RF 中的某些树中存在复杂的交互,这种交互可能不会在 k-表示算法)。

基于 varimp 的缩放将对此有所帮助。实际上,我不确定这是否正确。让我们说基于两个变量的条件异或。这会将平面分成 4 个偶数正方形,其中一类将在两个正方形的对角线上。这并不能完全解释正在发生的事情,但它确实表明了这一点。但那么如何看进多维空间呢?使用层次聚类图并按结果类为每个端点着色。

查看随机森林“邻近图”。第 15.3.3 节统计学习的要素