聚类作为一种降维技术,以及如何为每个聚类挑选代表元素?

Clustering as a dimension reduction technique, and how to pick representatives elements for each cluster?

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

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

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

如何从上述树状图中提取必要元素?这意味着相互关联最小的元素 ?

一个选择是使用 caret 包中的一些预处理函数。

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

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

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