在 R 中验证聚类分析

机器算法验证 r 聚类 验证
2022-03-23 19:33:18

我正在尝试根据 Guy Brock 等人的论文验证层次聚类分析结果。clValid:用于集群验证的 R 包( pdf )。我必须使用所有这些方法吗?最常见的验证方法是什么?我也被困在以下代码中:

emp <- as.matrix(emp)
library(clValid)
intern <- clValid(emp, 4:10, clMethods = c("hierarchical", "kmeans", "diana", "fanny", 
                                           "som", "pam", "sota", "clara", "model"), 
                  validation = "internal")
summary(intern)

Error in if (xx != 0) xx/10 else z/10 : argument is of length zero
In addition: There were 50 or more warnings (use warnings() to see the first 50)

如何处理矩阵中的零点?

2个回答

这绝对不是这个网站的问题。我将其标记为要迁移到 cv。“我必须使用所有这些方法”是什么意思?因为在您的代码中,您添加了所有聚类技术:k-means、分层、自组织地图。但是在问题的开头,您说您想要执行层次聚类。无论如何,这一切都在你提到的论文中。

如果我是你,我会先做内部验证。所描述的技术通常考虑了集群的内部差异,这意味着您的目标是找到尽可能“同质”的集群。请注意,这些可能会受到您用于聚类的变量的性质的影响。If you have only continuous variables then an appropriate choice for the distance on which the hierarchical clustering will be based on would be the euclidean distance which is fitting for the idea of​​ internal variation. 配备另一个距离层次聚类甚至可以聚类混合类型的变量,但这里的内部变化可能会变得更加复杂。K-means 应该只应用于连续变量,因此这些技术通常用于找到“k”的最佳数字。

稳定性度量用于确定您的聚类的稳固程度。这对于区分真实模式和虚假模式特别有用,尤其是在涉及具有随机性质的聚类算法时。例如k-means,由于它的迭代性质,它依赖于初始化点(算法开始的初始k个中心)。我见过层次聚类的稳定性研究,但我从未使用过它们。快速的谷歌搜索可能会对此有所了解。

他们在你引用的论文中谈到的生物学验证对我来说是个谜。

您是否尝试收到任何警告?警告()

大多数情况下,相关矩阵生成中的多个警告是因为 NA 单元而不是因为 0 单元。检查要关联的两列中的任何一列是否绝对没有变化,从而无法生成相关系数。

另一个建议是先尝试 HC 方法,然后一次深入研究每种方法。这可能能够发现您的错误。

使用简单的 corrplot 预先可视化数据也会对您有所帮助。好运