我正在探索使用python集群某些类别数据的可能性。我目前有8个功能,每个功能约有3-10个级别。
据我了解,使用kmeans和kmodes的一键编码都可以在此框架中使用,由于维度问题的诅咒,kmeans在功能/级别的巨大组合中可能不理想。
这正确吗?
此刻,我将遵循kmeans路线,因为它也使我可以灵活地添加一些数字特征,并且计算轮廓统计量和评估最佳聚类数似乎要容易得多。
这有意义吗?您对其中一种方法应优先于另一种方法有何建议?
谢谢
答案 0 :(得分:0)
还有一些变体在分类属性上使用k-modes方法,在连续属性上使用均值。
相对于一键式+ k均值,k模式具有很大的优势:它是可解释的。每个群集对原型都有一个明确的分类价值。对于k均值,由于SSQ目标,如果一个热门变量介于两个值之间,则它们的误差最小。这是不可取的。
答案 1 :(得分:0)
请参阅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-原型方法,该方法将kmeans和kmodes与平衡权重因子结合使用。 (再次在论文中解释)。