我有一個500K觀測大型矩陣使用層次聚類進行聚類。由於尺寸較大,我沒有計算能力來計算距離矩陣。使用hclust加權觀測頻率聚類R
爲了克服這個問題,我選擇聚合我的矩陣,合併那些相同的觀測值,以便將我的矩陣約化爲10K個觀測值。我有這個聚合矩陣中每一行的頻率。我現在需要將這個頻率作爲分層聚類中的權重。
該數據是500K觀測的數值和分類變量的混合,因此我使用雛菊包計算了我的聚合數據集的高爾異質性。我想在聚合數據集的統計數據包中使用hclust,但是我想要考慮每個觀測的頻率。從hclust幫助信息的參數如下所示:
hclust(d, method = "complete", members = NULL)
爲成員參數的信息是:,NULL或與d的長度尺寸的向量。請參閱「詳細信息」部分。當您查看詳細信息部分時,您會得到:如果members != NULL
,那麼d
被認爲是羣集之間的差異矩陣,而不是單身人士和成員之間的差異給出每個羣集的觀察數量。這樣,層次聚類算法可以'在樹形圖的中間開始',例如,爲了重構剪切之上的樹的部分(參見示例)。只有有限數量的距離/連接組合纔能有效地計算簇之間的不相似性(即,沒有hclust自身),最簡單的是平方歐幾里得距離和質心連接。在這種情況下,羣集之間的差異是羣集均值之間的平方歐幾里德距離。
從以上描述中,我不確定是否可以將我的頻率權重分配給成員參數,因爲不清楚這是否是此參數的目的。我想用這樣的:
hclust(d, method = "complete", members = df$freq)
哪裏df$freq
是每行的已匯聚矩陣的頻率。因此,如果一個行復制10倍這個值是10
如果有人可以幫助我,將是巨大的,
感謝
嗨,感謝您的評論。我不太清楚你最後一段的含義。你能再擴充一點嗎?由於我彙總了原始數據集,因此我擁有的距離矩陣將僅包含唯一觀測值,但成員參數將爲每次觀測包含原始數據集中發生的次數。由於我混合了我的變量的數據類型,我只能計算Gower的差異,所以我不能使用病房鏈接,但很高興知道,所以謝謝! –
我沒有病房方程,所以你必須自己做這個微不足道的微積分。可能是'n * m * d * d'。 –