5

对不起,如果这个问题有点特定于 python Scikit-learn库。

我正在尝试执行网格搜索以找到 scikit-learn 的GradientBoostingRegressor的最佳参数。问题是,我不知道从哪里开始。过去我使用过 R 和 RStudio 设置,但我现在正试图迁移到 Python 进行数据挖掘,而 Scikit 似乎很有希望。

任何人都可以分享一些他们可能用于在 Amazon EC2 集群上计算的简单设置代码,或者可能指向该库的有用示例参考以用于其他机器学习算法吗?

谢谢你。

4

2 回答 2

7

据我所知,GBRT 是一种非常顺序的算法,因此没有简单的方法可以并行运行它。

随机森林/ExtraTrees 模型是令人尴尬的并行,因此更适合在集群上训练模型。

scikit-learn 对使用 joblib 的单机多处理有一些内置支持(检查接受n_jobs参数的模型的文档字符串)。我们计划在某个时候在 joblib 中实现一个任务调度框架。因此,我们可以例如利用 IPython 并行作为后端在集群上运行。但是,目前还没有任何现成可用的东西。

如果您准备花一些时间自己做,我建议您看看 StarCluster 及其 IPython 插件:

于 2012-10-30T18:45:42.067 回答
5

我完全同意 ogrisel - StarCluster 非常方便,因为它允许您立即设置 IPython 集群并支持点实例,这非常棒,因为它们比普通实例便宜得多。

您可以在此 gist中找到一些代码,向您展示如何在 IPython 集群上对 sklearn 的梯度提升估计器进行分布式网格搜索。

它结合交叉验证进行网格搜索,并将评估的网格点存储在 MongoDB 数据库中。

该代码会根据平均交叉验证分数自动选择最佳数量的树。

快乐调音!

于 2012-10-31T19:53:39.613 回答