【发布时间】:2012-08-22 17:07:35
【问题描述】:
我有一个数据集。该集合的每个元素都由数字和分类变量组成。分类变量是名义变量和有序变量。 这个数据集中有一些自然的结构。通常,专家使用他们的“专业知识”对我的数据集进行聚类,但我想自动化这个聚类过程。
大多数聚类算法使用对象之间的距离(欧几里得、Mahalanobdis 等)将它们分组到集群中。但是很难为混合数据类型找到一些合理的指标,即我们无法找到“玻璃”和“钢”之间的距离。所以我得出的结论是,我必须使用 条件概率 P(feature = 'something' | Class) 和一些依赖于它们的实用函数。这对于分类变量是合理的,并且假设它们是正态分布的,它适用于数值变量。
所以我很清楚像 K-means 这样的算法不会产生好的结果。
此时我尝试使用 COBWEB 算法,它完全符合我使用条件概率的想法。但我遇到了另一个障碍:集群化的结果真的很难解释,如果不是不可能的话。因此,我想得到一组描述每个集群的规则(例如if feature1 = 'a' and feature2 in [30, 60], it is cluster1),比如用于分类的决策树。
所以,我的问题是:
是否有任何现有的聚类算法适用于混合数据类型并产生可理解(并且对人类而言合理)的聚类描述。
其他信息:
据我了解,我的任务是在概念聚类领域。由于研究领域的原因,我无法像建议的那样定义相似函数(它是整个项目的最终目标) - 它在形式化方面非常复杂且无情。据我了解最合理的方法是COBWEB中使用的方法,但我不确定如何适应它,所以我可以得到一个难以理解的集群描述。
决策树
正如建议的那样,我尝试在聚类输出上训练决策树,从而将聚类描述为一组规则。但不幸的是,对这条规则的解释几乎和原始聚类输出一样难。首先,来自根节点的一些第一级规则确实有意义:更接近叶 - 我们拥有的意义较小。其次,这些规则不符合任何专业知识。
因此,我得出结论,聚类是一个黑箱,不值得尝试解释其结果。
还有
我有一个有趣的想法,以某种方式修改“回归决策树”算法:而不是计算组内方差,而是计算 category utility function 并将其用作拆分标准 .因此,我们应该有一个开箱即用的带有叶子集群和集群描述的决策树。但我没有尝试这样做,我不确定准确性和其他一切。
【问题讨论】:
-
为什么不能使用 class=cluster 的决策树?我假设您已经有了一些可以使用的标记示例...
-
@amit 这就是我没有标记示例的关键,我也没有任何现有的类。理想情况下,我想实现以下目标:输入数据集 -> 聚类算法 -> 聚类描述,当专家查看描述时,他说:“是的,就是这样。我理解它,我也会这样做”。
-
您是否先验地知道类别的数量或类别的成员?如果没有距离度量,就真的没有一个好方法来确定你的算法有多好。
-
对不起,我不能给你比下面更多的提示。我相信训练决策树是最好的主意,因为决策树是真正为您提供决策过程解释的少数方法之一。
-
与 Anony-Mousse 的建议有关,random forests 可以在“无监督”模式下运行,从而导致聚类算法,并且由于它是基于树的,因此它回避了度量定义问题。跨度>
标签: algorithm machine-learning computer-science data-mining cluster-analysis