可理解的聚类

Art*_*ykh 14 algorithm computer-science cluster-analysis machine-learning data-mining

我有一个数据集.该集合的每个元素由数字和分类变量组成.分类变量是名义上的和有序的.该数据集中有一些自然结构.通常,专家使用他们的"专家知识"对我的数据集进行聚类,但我希望自动化这个聚类过程.

大多数聚类算法使用对象之间的距离(Euclidean,Mahalanobdis等)将它们分组.但很难找到混合数据类型的一些合理指标,即我们找不到"玻璃"和"钢铁"之间的距离.所以我得出结论,我必须使用条件概率 P(feature = 'something' | Class)和一些依赖于它们的效用函数.对于分类变量是合理的,并且假设它们正常分布,它对数值变量很好.

所以我很清楚像K-means这样的算法不会产生好的结果.

这时我尝试使用COBWEB算法,这完全符合我使用条件概率的想法.但是我遇到了另一个障碍:如果不是不可能的话,聚类的结果很难解释.因此,我希望获得类似于描述每个聚类(例如if feature1 = 'a' and feature2 in [30, 60], it is cluster1)的一组规则,例如用于分类的决策树.

所以,我的问题是:

是否存在适用于混合数据类型的现有聚类算法,并产生可理解的(对于人类而言合理的)聚类描述.

附加信息:

据我所知,我的任务是在概念聚类领域.由于研究领域的原因,我不能像它所建议的那样定义一个相似性函数(它作为呐喊项目的最终目标) - 它在形式化方面非常复杂和无情.据我所知,最合理的方法是COBWEB中使用的方法,但我不确定如何调整它,所以我可以得到一个不可靠的集群描述.

决策树

正如建议的那样,我尝试在聚类输出上训练决策树,从而将聚类描述作为一组规则.但不幸的是,对这个规则的解释几乎和原始聚类输出一样难.根节点中只有少数第一级规则确实没有任何意义:更接近叶子 - 我们没有意义.其次,这些规则与任何专业知识都不相符.

所以,我得出的结论是聚类是一个黑盒子,不值得尝试解释它的结果.

我有一个有趣的想法是以某种方式修改"回归决策树"算法:而不是计算组内方差,计算类别效用函数并将其用作拆分标准.因此,我们应该有一个带有叶子集群和集群描述的决策树.但我没有尝试这样做,我不确定准确性和其他一切.

Ano*_*sse 11

对于大多数算法,您需要定义相似性.它不需要是适当的距离函数(例如满足三角不等式).

K-means特别糟糕,因为它还需要计算手段.因此,如果你不能计算平均值,或者使用与欧几里德不同的距离函数,最好远离它.

但是,请考虑定义一个距离函数,该函数捕获您的域相似性知识.它可以由其他距离函数组成,比如说你使用欧几里德距离的调和平均值(可能用一些比例因子加权)和一个分类相似度函数.

一旦你有一个不错的相似性函数,你就可以使用一大堆算法.例如DBSCAN(维基百科)OPTICS(维基百科).您可能对ELKI感兴趣,他们有一个关于编写自定义距离函数教程.

口译是另一回事.不幸的是,很少有聚类算法能够为您提供人类可读的解释.他们可能会给你一些代表性的东西(例如k-means中的聚类的平均值),但不多.但是,接下来您可以在聚类输出上训练决策树,并尝试解释从聚类中学到的决策树.因为关于决策树的一个非常好的特征是,它们在某种程度上是人类可以理解的.但就像支持向量机不会给你一个解释一样,大多数(如果不是全部)聚类算法都不会这样做,对不起,除非你做这种后处理.此外,它实际上适用于任何聚类算法,如果您想比较多个算法,这是一个不错的属性.

去年有一则相关的出版物.它有点模糊和实验性(在ECML-PKDD的研讨会上),并且要求数据集在排名方面具有相当广泛的基础事实.在该示例中,他们使用颜色相似性排名和一些标签.关键的想法是分析集群并使用给定的基本事实找到最佳解释.他们试图用它来说,"发现这个群集主要是基于这种特殊的绿色阴影,所以它不是很有趣,但其他群集不能很好地解释,你需要仔细研究它 - 也许是算法在这里发现了一些东西.但这是非常实验性的(研讨会是针对正在进行的研究类型).您可以通过使用您的功能作为基本事实来使用它.然后,它应该检测是否可以通过诸如"attribute5约为0.4且具有低方差"的事物来容易地解释群集.但它不会强行创造这样的解释!