繁体   English   中英

R中使用hclust的加权观测频率聚类

[英]Weighted observation frequency clustering using hclust in R

我有一个500K观测值的大型矩阵,可以使用分层聚类进行聚类。 由于尺寸大,我没有计算能力来计算距离矩阵。

为了克服这个问题,我选择汇总我的矩阵以合并那些将我的矩阵减少到大约1万个观测值的观察值。 我有此汇总矩阵中每一行的频率。 现在,我需要将此频率作为权重合并到我的层次结构集群中。

数据是500K观测值的数字变量和分类变量的混合,因此我使用了菊花包来为我的聚合数据集计算出更高的相似度。 我想将stats包中的hclust用于聚合数据集,但是我想考虑每次观察的频率。 从hclust的帮助信息中,参数如下:

    hclust(d, method = "complete", members = NULL)

成员参数的信息为:NULL或长度为d的向量。 请参阅“详细信息”部分。 当您查看详细信息部分时,您将获得:如果members != NULL ,则d被视为聚类之间的差异矩阵,而不是单例之间的相似性,并且成员给出每个聚类的观察次数。 这样,可以“在树状图的中间开始”层次聚类算法,例如,以便在切割上方重建树的一部分(请参见示例)。 仅对于有限数量的距离/链接组合,可以有效地计算聚类之间的差异(即,没有簇本身),最简单的是平方的欧几里得距离和质心链接。 在这种情况下,聚类之间的差异是聚类平均值之间的平方欧几里德距离。

从上面的描述中,我不确定是否可以将频率权重分配给成员参数,因为尚不清楚这是否是此参数的目的。 我想这样使用它:

hclust(d, method = "complete", members = df$freq)

其中df$freq是聚合矩阵中每一行的频率。 因此,如果将一行重复10次,则该值为10。

如果有人可以帮助我,那将是很棒的,

谢谢

是的,这对于大多数链接(特别是单个链接,组平均链接和完整链接)都可以正常工作。 对于病房等,您需要自己正确考虑体重。

但是即使那部分也不难。 只需确保使用簇的大小,因为您需要传递两个簇的距离,而不是两个点。 因此,矩阵应包含位置x处n1个点和位置y处n2个点的距离。 对于最小值/最大值/平均值,此n消失或抵消。 对于病房,您应该获得类似于SSQ的公式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM