在 MapReduce 中组合 SVM 分类器
Posted
技术标签:
【中文标题】在 MapReduce 中组合 SVM 分类器【英文标题】:Combining SVM Classifiers in MapReduce 【发布时间】:2016-01-31 17:21:01 【问题描述】:我的任务是使用 scikit-learn、python 和 mapreduce 解决情感分类问题。我需要使用 mapreduce 来并行化项目,从而创建多个 SVM 分类器。然后我应该将分类器“平均”在一起,但我不确定它是如何工作的,或者它是否可能。分类的结果应该是一个分类器,经过训练的平均分类器。
我已经使用 scikit-learn SVM 线性内核编写了代码,它可以工作,但现在我需要将它带入 map-reduce 并行化上下文中,我什至不知道如何开始。
有什么建议吗?
【问题讨论】:
查看集成估计器,例如 bagging 和 boosting,它们允许您组合基本估计器。至少 bagging 可以很容易地分布在机器上。但我不知道分类器学习如何与 map-reduce 相关。也许你不明白你的任务对吗?或者您只需要在数据预处理阶段使用 Map-reduce?此外,如果您想以分布式方式训练一些算法 - 我建议您查看 Apache Spark 和 MLib,我包含一些现成的算法。 【参考方案1】:确保在集群中的每个节点上都安装了所有必需的库(scikit-learn、NumPy、pandas)。
您的映射器将处理每一行输入,即您的训练行并发出一个键,该键基本上代表您将训练分类器的折叠。
您的 reducer 将收集每个折叠的行,然后在该折叠的所有行上运行 sklearn 分类器。
然后您可以平均每个折叠的结果。
【讨论】:
以上是关于在 MapReduce 中组合 SVM 分类器的主要内容,如果未能解决你的问题,请参考以下文章