我想到的第一篇文章是:通过决策树构造进行聚类
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模型的增长不要太大。例如,设置每个叶子的最小样本数,最大叶子节点数(首选)或最大深度。(可选)设置纯度或熵约束。您必须检查这给了您多少个群集,并评估该方法是否比真实群集更好。
这些技术和参数是否对您有效?哪个最好?要找出答案,您需要进行群集评估:性能指标以评估无监督学习
But I need it for unsupervised clustering, instead of supervised classification
仅此关键字短语太简短,并不能清楚地说明您想要什么。在上面,您描述了我认为是决策树的东西。您现在可以针对想要的算法给出类似的段落吗?