cra*_*ash 6 python cluster-analysis k-means
我正在探索用 python 对一些分类数据进行聚类的可能性。我目前有 8 个功能,每个功能大约有 3-10 个级别。
据我了解,在这个框架中可以使用 kmeans 和kmodes的单热编码,由于维数问题,kmeans 对于特征/级别的巨大组合可能并不理想。
它是否正确?
目前,我会遵循 kmeans 路线,因为它还可以让我灵活地添加一些数值特征,并且计算轮廓统计量和评估最佳簇数似乎要容易得多。
这有道理吗?对于在哪些情况下应优先选择一种方法而不是另一种方法,您有什么建议吗?
谢谢
参考Huang(Kmodes作者)的这篇论文。http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.83&rep=rep1&type=pdf
他提到,如果我们使用 Kmeans + 一种热编码,如果分类属性有大量类别,则会大大增加数据集的大小。这将使 Kmeans 的计算成本很高。所以是的,你关于维度诅咒的想法是正确的。
此外,聚类均值没有任何意义,因为 0 和 1 不是数据的真实值。另一方面,Kmodes 生成集群模式,它们是真实数据,因此使集群可解释。
对于您对数值和分类属性的要求,请查看 k-prototypes 方法,该方法将 kmeans 和 kmodes 与平衡权重因子的使用相结合。(在论文中再次解释)。
还有一些变体在分类属性上使用 k 模式方法,在连续属性上使用平均值。
K-modes 比 one-hot+k-means 有一大优势:它是可解释的。每个簇都有一个明确的原型分类值。使用 k 均值时,由于 SSQ 目标,如果独热变量处于中间值,则它们的误差最小。这是不可取的。