我如何分发小批量 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 是不是通过使用部分拟合进行增量学习?