R中混合数据的鲁棒聚类方法


12

我正在寻找一个小的数据集(对4个区间变量和一个三因素分类变量的64个观察值)进行聚类。现在,我对聚类分析还很陌生,但是我知道自从层次聚类或k均值成为唯一可用选项以来,已有了相当大的进步。特别是,似乎有可用的基于模型的聚类的新方法,如chl指出的那样,可以使用“拟合优度指数来确定聚类或类的数量”。

但是,用于基于模型的群集的标准R包mclust显然不适合具有混合数据类型的模型。fpc由于连续变量的非高斯性质,我怀疑该模型会但很难拟合模型。我应该继续使用基于模型的方法吗?如果可能的话,我想继续使用R。如我所见,我有几种选择:

  1. 将三级分类变量转换为两个虚拟变量,然后使用mclust。我不确定这是否会使结果产生偏差,但是如果不是这样,则是我的首选。
  2. 以某种方式转换连续变量并使用该fpc包。
  3. 使用一些我还没有遇到过的R包。
  4. 使用Gower的度量创建一个相异矩阵,并使用传统的分层或重定位群集技术。

stats.se hivemind在这里有什么建议吗?


要将分类数据转换为伪编码(一种热编码),可以使用dummy.data.frame函数。作为输入,您可以提供混合数据,而作为输出,则仅对分类数据进行编码。
Naghmeh

Answers:


7

我建议您将Gower与后续的层次集群一起使用。在对象数量较少(例如64个)的情况下,分层聚类仍然是最灵活,最合适的方法。如果类别变量是名义变量,则Gower会在内部将其重新编码为虚拟变量,并在其上建立骰子相似度(作为Gower的一部分)。如果您的变量是序数,则应该知道高尔系数的最新版本也可以使用。

至于确定“最佳”群集数的众多指标,它们中的大多数独立于该群集算法或该群集算法而存在。您不必寻找必须包含此类索引的群集程序包,因为后者可能作为单独的程序包存在。您在群集程序包之后保留了一系列群集解决方案,然后通过另一个程序包的索引比较它们。


我最终选择了这条路线,谢谢小费。
fmark 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.