是否有类似决策树的无监督聚类算法?


20

我有一个由5个要素组成的数据集:A,B,C,D,E。它们都是数字值。我要做的不是以密度为基础的聚类,而是以类似决策树的方式对数据进行聚类。

我的意思是这样的:

该算法可以基于特征C将数据划分为X个初始簇,即,X个簇可以具有小C,中等C,大C和非常大的C值等。接下来,在X个簇节点的每个下,算法进一步划分根据特征A将数据分为Y个簇。算法将继续进行,直到使用了所有特征。

我上面描述的算法就像决策树算法。但是我需要它用于无监督的聚类,而不是有监督的分类。

我的问题如下:

  1. 这样的算法已经存在吗?这种算法的正确名称是什么
  2. 是否有一个R / python包/库实现了这种算法?

3
But I need it for unsupervised clustering, instead of supervised classification仅此关键字短语太简短,并不能清楚地说明您想要什么。在上面,您描述了我认为是决策树的东西。您现在可以针对想要的算法给出类似的段落吗?
ttnphns 2014年

1
@ttnphns大家知道,决策树是一种受监督的方法。您可以将每个特征向量标记为Class1或Class2。该算法根据已知标签确定每个特征的阈值。但是,我面临集群问题。我不知道每个特征向量的正确标签。我想找到一种可以自动确定每个功能的阈值的算法,以便构造一棵树。这样,可以容易地将生成的聚类解释为:聚类1:高A-低B-中C-高D-低E,聚类2为低A-高B-中C-中D-低E.
nan

不太了解您。以CHAID树为例。您必须选择因变量。使其为A。该算法在B,C,D,E中选择与A最相关的变量,并将该变量(例如,它的预测变量为D)“优化”划分为两个或多个类别-从而使相关(在分类的变量D和变量A之间最大化。假设,它留下了D1,D2,D3 3个组。接下来,在D的每个类别(组)内分别重复相同的过程,并且是B,C中最佳的预测变量,E会在分箱中寻找。等等。究竟什么不适合您?
ttnphns 2014年

2
@ttnphns我刚刚找到了这篇论文,我想他们做了我的意思。ftp.cse.buffalo.edu/users/azhang/disc/disc01/cd1/out/papers/...

1
@nan您找到了此类树的任何实现吗?他们没有提供文章中任何代码的链接
Alleo,2015年

Answers:


12

您可能需要考虑以下方法:

  • 使用适合您数据的任何聚类算法
  • 假设结果集群是类
  • 在集群上训练决策树

这将允许您尝试不同的聚类算法,但是您将获得每种算法的决策树近似值。


1
同意这是“适当的”,但是当然需要始终牢记,从聚类算法创建标签不是观察的“实际”特征。根据群集的质量和类型,引入的偏差或多或少会存在。
NiuBiBang '16

您能指出我讨论该策略的论文吗?
nCessity

2

我想到的第一篇文章是:通过决策树构造进行聚类 https://pdfs.semanticscholar.org/8996/148e8f0b34308e2d22f78ff89bf1f038d1d6.pdf

正如另一个提到的那样,“分层”(自上而下)和“分层集聚”(自下而上)都是使用树进行聚类设计的众所周知的技术。Scipy有这个。

如果因为我不知道任何库而可以使用自定义代码,那么我可以推荐两种技术。请注意,由于它们所依赖的机制,它们在技术上并不是集群。您可以将其称为伪集群。

1)有监督:这有点类似于论文(值得一读)。建立一个决策树模型以学习一些目标(您确定什么才有意义)。目标可以是随机生成的列(需要重复并评估最佳迭代,请参见下文)。将树的每个完整路径都定义为“集群”,因为落入该系列分支的点在技术上与目标相似。这仅在某些问题上效果很好,但在大规模上是有效的。您最终得到了K个群集(请参见下文)。

2)使用#1进行半监督(某种无监督,但在机械上进行监督):您可以尝试构建树以预测留出模式中的列。即,如果模式为[A,B,C],则构建3个模型[A,B]-> C,[A,C]-> B,[B,C]-> A。您将获得KN群集(请参见下文)。N = len(模式)。如果其中某些功能不有趣或过于不平衡(对于类别而言),请不要将其用作目标。

简介:模型将基于信息或纯度按顺序选择特征,而聚类将仅基于少数特征而不是全部特征。在这些聚类中没有距离的概念,但是您当然可以根据中心设计一个。

优点:易于理解和解释,快速训练和推理,在具有几个强大功能的情况下可以很好地工作,并且可以与类别一起工作。当要素本质上是异构的并且拥有许多要素时,您不必花费太多时间来决定在距离函数中使用哪个要素。

缺点:不是标准的,必须写出来的,天真的偏见,与目标的共线性会导致不好的结果,具有1000个同样重要的特征将不能很好地工作(此处具有欧氏距离的KMeans更好)。

您得到几个集群?您必须绝对限制DT模型的增长不要太大。例如,设置每个叶子的最小样本数,最大叶子节点数(首选)或最大深度。(可选)设置纯度或熵约束。您必须检查这给了您多少个群集,并评估该方法是否比真实群集更好。

这些技术和参数是否对您有效?哪个最好?要找出答案,您需要进行群集评估:性能指标以评估无监督学习


2

您正在寻找的是分裂聚类算法。

最常见的算法是聚集算法,该算法以自下而上的方式对数据进行聚类-每个观察都从其自身的聚类开始,并且聚类合并。分裂聚类是自上而下的-观察始于一个逐渐划分的聚类。

看起来像决策树的愿望限制了选择,因为大多数算法都是在整个数据空间内的距离上操作,而不是一次拆分一个变量。

DIANA是我所知道的唯一分裂式聚类算法,我认为它的结构类似于决策树。如果没有其他人,我会感到惊讶。

如果您将拆分规则修改为不考虑已定义因变量的度量标准,而是使用聚类优度度量标准,则可以使用标准决策树算法。


0

要考虑的一个想法是,假设您有k个特征和n个点。您可以使用(k-1)功能和1功能作为因变量来构建随机树。Y。您可以选择一个高度h,之后将在根中具有数据点。您可以选择不同种类的投票树。只是一个想法。

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.