我有一个数据集。该集合的每个元素都由数字和分类变量组成。分类变量是名义变量和有序变量。这个数据集中有一些自然的结构。通常,专家使用他们的“专业知识”对我的数据集进行聚类,但我想自动化这个聚类过程。
大多数聚类算法使用对象之间的距离(欧几里得、马氏距离等)将它们分组到集群中。但是很难为混合数据类型找到一些合理的度量标准,即我们无法找到“玻璃”和“钢”之间的距离。所以我得出结论,我必须使用条件概率 P(feature = 'something' | Class)
和一些依赖于它们的效用函数。这对于分类变量是合理的,并且假设它们是正态分布的,它适用于数值变量。
所以我很清楚,像K-means这样的算法不会产生好的结果。
此时我尝试使用COBWEB算法,这完全符合我使用条件概率的想法。但是我遇到了另一个障碍:集群化的结果真的很难解释,如果不是不可能的话。结果,我想得到一组描述每个集群的规则(例如if feature1 = 'a' and feature2 in [30, 60], it is cluster1
),比如用于分类的决策树。
所以,我的问题是:
是否有任何现有的聚类算法适用于混合数据类型并产生可理解的(并且对人类来说是合理的)集群描述。
附加信息:
据我了解,我的任务是在概念聚类领域。由于研究领域的原因,我无法像建议的那样定义相似函数(它是整个项目的最终目标) - 它在形式化方面非常复杂且无情。据我了解,最合理的方法是COBWEB中使用的方法,但我不确定如何适应它,所以我可以得到一个难以理解的集群描述。
决策树
正如建议的那样,我尝试在聚类输出上训练决策树,从而将聚类描述为一组规则。但不幸的是,对这条规则的解释几乎和原始聚类输出一样难。首先,来自根节点的一些第一级规则确实有意义:更接近叶 - 我们拥有的意义较小。其次,这些规则不符合任何专业知识。
因此,我得出结论,聚类是一个黑箱,不值得尝试解释其结果。
还
我有一个有趣的想法,以某种方式修改“回归决策树”算法:而不是计算组内方差,而是计算类别效用函数并将其用作分割标准。因此,我们应该有一个开箱即用的带有叶子集群和集群描述的决策树。但我没有尝试这样做,我不确定准确性和其他一切。