【问题标题】:Parallel version of K-Means clustering in R?R中K-Means聚类的并行版本?
【发布时间】:2019-12-18 16:01:02
【问题描述】:

我有一个包含 200,000 个观察值和三个维度的数据集。我正在尝试通过 Elbow 方法发现最佳集群数量,如下所示:

library(cluster)    # clustering algorithms
library(factoextra) # clustering algorithms & visualization
set.seed(123)
fviz_nbclust(df, kmeans, method = "wss")

但是,考虑到我的数据集的大小,这个方法在一个多小时后似乎没有产生效果。我一直在寻找可以识别“最佳”集群数量的 KMeans 并行版本,但无济于事。在大数据上运行 K-means 的最佳方法是什么?

【问题讨论】:

标签: r k-means


【解决方案1】:

据我所知,k-means 相对较快。 (clustering method performance) 我经历过保持初始化阶段,即使经过很长时间。我在k-means的情况下学习,如果初始点设置不正确,则知道学习到的聚类结果不稳定。(你必须google k-means Initialization issues)如果初始点选择相似点,学习结果,以及性能,都不好。我想告诉你找到初始点很重要(广泛传播)。

【讨论】:

  • 您发送的链接似乎引用了“mini-batch k mean”,这与标准算法不同。但也许我应该使用它......无论如何,我正在尝试找到一种非内存密集型 K-means 算法
【解决方案2】:

试试 h2o R 包。

https://cran.r-project.org/web/packages/h2o/index.html

http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/k-means.html

H2O-3 是开源机器学习平台。 H2O 的核心代码是用 Java 编写的。在 H2O 内部,分布式键/值存储用于跨所有节点和机器访问和引用数据、模型、对象等。这些算法在 H2O 的分布式 Map/Reduce 框架之上实现,并利用 Java Fork/Join 框架进行多线程处理。数据是并行读取的,分布在整个集群中,并以压缩的方式以列格式存储在内存中。 H2O 的 REST API 允许通过 HTTP 上的 JSON 从外部程序或脚本访问 H2O 的所有功能。 Rest API 被 H2O 的 Web 界面 (Flow UI)、R 绑定 (H2O-R) 和 Python 绑定 (H2O-Python) 使用。

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 2018-04-05
    • 2018-02-10
    • 2017-08-18
    • 2020-08-27
    • 2015-04-11
    • 2016-08-14
    • 2018-01-18
    • 2015-05-29
    相关资源
    最近更新 更多