对二进制数据进行聚类



我想对以下数据(示例)执行聚类分析:

    ID     CODE1     CODE2     CODE3     CODE4      CODE5      CODE6
   ------------------------------------------------------------------
   00001     0         1         1         0          0          0
   00002     1         0         0         0          1          1
   00003     0         1         0         1          1          1
   00004     1         1         1         0          1          0
    ...

其中1表示一个人存在该代码,0表示不存在。。k-means或层次聚类最适合对这类数据的代码进行聚类吗(对于大约一百万个不同的id),以及使用哪个距离度量?如果这两种方法都不合适,你认为哪种方法最合适?

感谢

不,k-means对二进制数据没有多大意义。

因为k-means计算意味着。但是二进制数据的平均矢量是多少?

您的集群"中心"将不是您的数据空间的一部分,与您的输入数据完全不同。对我来说,当它与你的对象完全不同时,这似乎不是一个合适的"中心"。

最有可能的是,您的集群"中心"最终会比实际的集群成员更相似,因为它们位于中心的某个位置,而您的所有数据都在角落里。

说真的,调查一下你的数据类型的相似性函数。然后选择一个适用于该距离函数的聚类算法。层次聚类是相当普遍的,但确实很慢。但你不必使用40年前的算法,你可能想研究更现代的东西。

最新更新