聚类作为降维技术,如何为每个聚类选择代表元素?

时间:2018-11-17 00:37:06

标签: r cluster-analysis

我有一些观测值高度相关的数据集。我正在对从相关矩阵获得的距离矩阵进行聚类分析。此数据集中的某些元素是多余的,我想选择一些相互关联性最小的代表性元素。我认为暴力破解方法是从每个群集中简单选择一个元素。但是我想知道是否有更正式的方法来降低R中的这种降维? 例如,我们以以下方式对mtcars数据集进行聚类:

> m=cor(t(mtcars))
> hc=hclust(as.dist(m),"ave")
> plot(hc)

我们正在获得以下树状图:

enter image description here

如何从上述树状图中提取必需元素?这意味着元素之间的相互关联程度最低?

1 个答案:

答案 0 :(得分:1)

一种选择是使用caret包中的某些预处理功能。

使用您的示例,下面的代码将删除与另一列具有0.95相关性的所有列。

library(caret)
m <- cor(t(mtcars))
highlyCor <- findCorrelation(m, cutoff = .95)
t(mtcars)[,-highlyCor]

以上代码改编自Max Kuhn's excellent book。请参阅该文档和caret文档以获取更多背景信息。