【发布时间】:2017-04-02 21:00:48
【问题描述】:
我将数据表示为单个变量的多个不同直方图。我想使用无监督聚类确定哪些直方图相似。我还想知道要使用的最佳集群数量。
我已经阅读了有关 Earth Mover Distance 度量标准作为直方图之间距离度量的信息,但不知道如何在常见的聚类算法中使用它(例如,k 均值)。
Primary:我使用哪些包和函数来聚类直方图?
次要:如何确定“最佳”集群数量?
示例数据集 1(3 个单模式集群):
v1 <- rnorm(n=100, mean = 10, sd = 1) # cluster 1 (around 10)
v2 <- rnorm(n=100, mean = 50, sd = 5) # cluster 2 (around 50)
v3 <- rnorm(n=100, mean = 100, sd = 10) # cluster 3 (around 100)
v4 <- rnorm(n=100, mean = 12, sd = 2) # cluster 1
v5 <- rnorm(n=100, mean = 45, sd = 6) # cluster 2
v6 <- rnorm(n=100, mean = 95, sd = 6) # cluster 3
示例数据集 2(3 个双模式集群):
b1 <- c(rnorm(n=100, mean=9, sd=2) , rnorm(n=100, mean=200, sd=20)) # cluster 1 (around 10 and 200)
b2 <- c(rnorm(n=100, mean=50, sd=5), rnorm(n=100, mean=100, sd=10)) # cluster 2 (around 50 and 100)
b3 <- c(rnorm(n=100, mean=99, sd=8), rnorm(n=100, mean=175, sd=17)) # cluster 3 (around 100 and 175)
b4 <- c(rnorm(n=100, mean=12, sd=2), rnorm(n=100, mean=180, sd=40)) # cluster 1
b5 <- c(rnorm(n=100, mean=45, sd=6), rnorm(n=100, mean=80, sd=30)) # cluster 2
b6 <- c(rnorm(n=100, mean=95, sd=6), rnorm(n=100, mean=170, sd=25)) # cluster 3
b7 <- c(rnorm(n=100, mean=10, sd=1), rnorm(n=100, mean=210, sd=30)) # cluster 1 (around 10 and 200)
b8 <- c(rnorm(n=100, mean=55, sd=5), rnorm(n=100, mean=90, sd=15)) # cluster 2 (around 50 and 100)
b9 <- c(rnorm(n=100, mean=89, sd=9), rnorm(n=100, mean=165, sd=20)) # cluster 3 (around 100 and 175)
b10 <- c(rnorm(n=100, mean=8, sd=2), rnorm(n=100, mean=160, sd=30)) # cluster 1
b11 <- c(rnorm(n=100, mean=55, sd=6), rnorm(n=100, mean=110, sd=10)) # cluster 2
b12 <- c(rnorm(n=100, mean=105, sd=6), rnorm(n=100, mean=185, sd=21)) # cluster 3
【问题讨论】:
-
EMD 非常昂贵,因此您需要使用下限和索引来加速集群。 K-means 仅适用于 Bregman 散度,我不认为 EMD 是其中之一。
标签: r histogram cluster-analysis k-means