我有一个包含 500K 观察值的大型矩阵,可以使用层次聚类进行聚类。由于体积大,我没有计算距离矩阵的计算能力。
为了克服这个问题,我选择聚合我的矩阵来合并那些相同的观察值,从而将我的矩阵减少到大约 10K 观察值。我有这个聚合矩阵中每一行的频率。我现在需要将此频率作为权重合并到我的层次聚类中。
数据是 500K 观测值的数值和分类变量的混合体,因此我使用 daisy 包来计算聚合数据集的 gower 差异。我想在聚合数据集的 stats 包中使用 hclust 但是我想考虑每个观察的频率。从 hclust 的帮助信息中,参数如下:
hclust(d, method = "complete", members = NULL)
members 参数的信息是:、NULL 或长度为 d 的向量。请参阅“详细信息”部分。当您查看详细信息部分时,您会得到: If members != NULL
, thend
被认为是集群之间的相异矩阵,而不是单例和成员之间的相异矩阵,给出了每个集群的观察次数。这样,层次聚类算法可以“在树状图的中间开始”,例如,为了重建切割上方的树部分(参见示例)。仅对于有限数量的距离/链接组合,可以有效地计算集群之间的差异(即,没有 hclust 本身),最简单的一种是平方欧几里得距离和质心链接。在这种情况下,聚类之间的差异是聚类均值之间的平方欧几里得距离。
从上面的描述中,我不确定我是否可以将我的频率权重分配给成员参数,因为不清楚这是否是这个参数的目的。我想这样使用它:
hclust(d, method = "complete", members = df$freq)
哪里df$freq
是聚合矩阵中每一行的频率。因此,如果一行重复 10 次,则该值将是 10。
如果有人可以帮助我,那就太好了,
谢谢