我如何分发小批量 kmeans(scikit-learn)的处理?

Posted

技术标签:

【中文标题】我如何分发小批量 kmeans(scikit-learn)的处理?【英文标题】:How can i distribute processing of minibatch kmeans (scikit-learn)? 【发布时间】:2013-06-07 20:38:23 【问题描述】:

在 Scikit-learn 中,K-Means 有 n_jobs,但 MiniBatch K-Means 缺少它。 MBK 比 KMeans 快,但在大型样本集上,我们希望它跨多处理(或其他并行处理库)分配处理。

MKB 的部分拟合是答案吗?

【问题讨论】:

【参考方案1】:

我认为这是不可能的。您可以在小批量处理中使用 OpenMP 实现一些东西。我不知道有任何并行的小批量 k-means 程序。并行化随机梯度下降过程有点麻烦。

顺便说一句,KMeans 中的 n_jobs 参数仅分配不同的随机初始化 afaik。

【讨论】:

可以预热模型以达到局部最小盆地,然后使用原始模型的克隆对数据集的分区进行微调,并不时进行平均。不过我从来没有尝试过。 有什么特殊的原因会导致您热身而不是从分区开始吗?另外,你的平均水平如何?尝试找到集群之间的对应关系,然后平均中心?还是您热身开始进行一些良好的初始化并期望通信稳定? 模型#0 的质心#2 不太可能接近模型#1 的质心#2...热身是为了使质心的稳定匹配成为可能。 哦,好吧..不熟悉 OpenMP,所以我不走运。在 LinearSVC 这样的监督学习中很容易分布,所以我认为在 MBK 中这是可能的。那么具有多个节点的云如何使用 Kmeans?他们根本没有? 大家好,这个怎么样?看起来很有趣。 code.google.com/p/ddk-means-clustering-system 我也发现了这个 code.google.com/p/dynamic-distributed-kmeans-clustering-python/…

以上是关于我如何分发小批量 kmeans(scikit-learn)的处理?的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 中的 minibatch kmeans 是不是通过使用部分拟合进行增量学习?

Python质心中的KMeans位置不正确,我如何“取消缩放”它们?

matlab如何批量读取mat文件中的矩阵?

批量购买计划分发之前的临时分发和托管应用程序配置

十分种算法小故事之Kmeans聚类算法

在 Spark 中使用 Kmeans 对小短语进行聚类