【问题标题】:How create cluster plots for large datasets in R如何在 R 中为大型数据集创建聚类图
【发布时间】:2017-08-14 19:40:41
【问题描述】:

我使用 Kaufman 和 Rousseeuw 的 CLARA algorithm 在 R 中对具有 N > 8*10^6 的大型数据集进行聚类。算法本身的实现允许用户通过以下方式控制执行时间例如将样本大小限制为 n=100

然而,R 中plot() 函数的使用似乎包括了绘图中的所有数据对象,这导致了非常长的处理时间和非常拥挤的绘图(请参阅下面的可重现示例)。

理论上应该可以只从CLARA而不是N绘制最佳样本。是否有针对此的实现或如何解决此问题?

## generate 2.5 mio objects, divided into 2 clusters.
x <- rbind(cbind(rnorm(10^6,0,0.5), rnorm(10^6,0,0.5)),
           cbind(rnorm(1.5*10^6,5,0.5), rnorm(1.5*10^6,5,0.5)))

library("cluster")
# get clusters solution
clara.x<-clara(x,k=2,sampsize = 100)
# see medoids
clara.x$medoids

# plot the cluster solution
plot(clara.x) # takes long time. creates crowded plot
clusplot(clara.x) # did not finish

【问题讨论】:

    标签: r plot cluster-analysis large-data


    【解决方案1】:

    首先,似乎 clara 对象的 plot() 给出了两个图,第一个与 clusplot() 返回的相同。如果前者完成但后者没有,我猜那只是因为你堵塞了情节历史。如果将大图保存为 png,则不会遇到此问题。他们仍然需要一段时间,但它不会干扰你正在做的任何其他事情。

    关于减少绘制点的数量,我们可以通过调整clara.x的列表元素来手动完成。您只需选择要绘制的点。下面,我举一个例子,我只使用来自clara 方法的样本。但是,如果您想绘制更多内容,可以使用sample() 或其他方式进行选择:

    # Manually shrinking clara object
    samp <- clara.x$sample
    clara.x$data <- clara.x$data[samp, ]
    clara.x$clustering <- clara.x$clustering[samp]
    clara.x$i.med <- match(clara.x$i.med, samp) # point medoid indx to samp
    
    # plot the cluster solution
    clusplot(clara.x)
    

    一个微妙之处是 medoid 样本必须始终位于您选择绘制的任何索引中,否则上面的第 5 行将不起作用。为确保任何给定的samp 都能做到这一点,请在上面的第二行之后添加以下内容:

    samp <- union(samp, clara.x$i.med)
    

    附录:刚刚看到第一个答案,与我的不同。他建议重新计算聚类。我的方法的一个好处是它保持了原始的聚类计算并且只调整你绘制的点。

    【讨论】:

      【解决方案2】:

      我不熟悉 CLARA 方法,因此此答案直接回答了您关于如何“从 CLARA 中绘制最佳样本”的问题。

      ?clara.object 的快速回顾表明,最终分区中使用的样本的案例编号位于sample 组件中,因此您可以通过

      best_samp <- x[clara.x$sample, ]
      

      输出:

      par(mfrow = c(1, 2))
      plot(best_samp, main = "scatterplot")
      clusplot(clara(best_samp, k = 2, sampsize = nrow(best_samp)),
        main = "clusplot")
      

      【讨论】:

        猜你喜欢
        • 2012-02-19
        • 2013-11-11
        • 2019-12-15
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 2019-01-10
        相关资源
        最近更新 更多