我正在使用分类数据进行聚类。我遇到了Kmodes算法,发现它非常适合我的要求。现在,我想针对所有群集测量群集内的差异。我正在考虑使用群集来衡量差异,并尽可能减少它。有什么办法吗? 另外,是否有任何方法可以检查我的数据集群的效率? 由于我的数据是分类数据,因此将距离视为指标的方法可能无济于事。
答案 0 :(得分:0)
要测量集群中的差异,您需要提出某种度量标准。对于分类数据,计算不相似度的可能方法之一可能是:
d(i, j) = (p - m) / p
其中:
p
是数据中类别/类别的数量m
是样本i
和j
之间的匹配数例如,如果您的数据具有3个分类特征,并且样本i
和j
如下:
Feature1 Feature2 Feature3
i x y z
j x w z
因此,在这里,我们具有3个分类特征,因此p=3
和这三个特征中,两个特征对于样本i
和j
具有相同的值,因此m=2
。因此
d(i,j) = (3 - 2) / 3
d(i,j) = 0.33
另一种替代方法是将分类变量转换为单热编码特征,然后计算jaccard simmilarity。
因此,为了衡量集群中的差异,您可以计算集群中每个对象之间的成对差异,然后取其平均值。
基于这些度量,您还可以使用silhoutte score来评估聚类的质量(但是您需要带着一粒盐来接受,有时评分会很好,而聚类可能不是您所期望的)。