【发布时间】:2017-12-02 01:12:09
【问题描述】:
我正在使用 Scikit-learn 构建分类模型(例如 LogisticRegression)。构建模型后,我可以使用什么工具将模型投入生产并在新数据集上按计划运行?即在 Spark MLlib 中,我们可以序列化模型并使用 Oozie 工作流定期进行评分。但是 Python 模型的等效工具是什么?
【问题讨论】:
标签: python scikit-learn apache-spark-mllib
我正在使用 Scikit-learn 构建分类模型(例如 LogisticRegression)。构建模型后,我可以使用什么工具将模型投入生产并在新数据集上按计划运行?即在 Spark MLlib 中,我们可以序列化模型并使用 Oozie 工作流定期进行评分。但是 Python 模型的等效工具是什么?
【问题讨论】:
标签: python scikit-learn apache-spark-mllib
对于我的自定义 ML 模型,我经常倾向于使用 pickle 模块来腌制它们。但是,sklearn 建议使用 joblib(也可以查看 sklearn 中的 Model persistence 部分)来序列化具有大型 numpy 数组的对象。
现在,我不知道你的生产环境是什么,我也不会做任何假设。我会给你一个例子。
我有一个提供建议的网站。生产中使用的几种模型必须尽可能接近实时或定期更新。这些模型都存在于网站中,即它们在网站启动时被加载,存在于网站的配置中,并且可以由网站更新。即预测是作为数据流进行的。
当您说“定期进行评分”时,我假设您的意思是您正在检查模型在已收集的新数据上的性能。在我的情况下,模型会定期更新,但出于验证目的,我将保留旧版本的模型以针对看不见的数据进行测试。
例如,我将从每个月的第一天开始保留一个模型,并在月底收集所有新数据作为测试集。然后根据这些新数据对模型进行“评分”,我可以看到性能是否随时间而变化。该模型会定期更改(添加新用户、新项目或新评级),因此一个月前的模型并不是当前模型的精确表示,但这种方法让我知道我在决定该模型的结构仍然成立。这让我知道我是否需要重新审视那个特定的模型并考虑修改它的结构。整个过程可以编写脚本并安排为 cron 作业。
我会注意到,可以将 Oozie 与 pyspark 一起使用,如 run pyspark on oozie 和 Oozie python workflow example walkthrough 中所述,但由于我从未使用过 Oozie,因此无法评论它与任何其他 python 工具的相似性。
【讨论】: