生产中的 Scikit-learn 决策树

数据挖掘 Python scikit-学习 决策树
2022-03-03 02:28:08

我正在构建一个将在生产中使用的决策树模型。

此处的文档中, pickle 用于序列化模型,但是对这种技术的担忧让我认为可能有更好的解决方案将模型导出到生产环境。

pickle(以及扩展的 joblib)在可维护性和安全性方面存在一些问题。因为这,

  • 永远不要解开不受信任的数据,因为它可能导致在加载时执行恶意代码。
  • 虽然使用一个版本的 scikit-learn 保存的模型可能会在其他版本中加载,但这是完全不受支持且不可取的。还应记住,对此类数据执行的操作可能会产生不同的和意想不到的结果。

所以我的问题是:使用 scikit-learn,是否有一种安全便捷的技术可以将模型导出到生产环境中。

PS:将点数据转换为 python 函数可能是一个解决方案,但我很惊讶没有内置的解决方案。

1个回答

保留模型参数是 sklearn 中唯一的开箱即用解决方案。您应确保:

  1. 您的模型可以从数据中重现
  2. 使用的依赖项的版本(包括 sklearn)被锁定
  3. 您的 QA 系统检查模型的正确性

如果你把这些东西记下来,那么 sklearn 中模型持久性的可能变化就不是问题了。如果发生这种情况,您只需以受控方式更新 sklearn,像往常一样重新训练和部署。而且您避免了一系列其他问题,例如 sklearn/numpy/whatever 中的错误让您大吃一惊。或者新数据需要训练和部署的新模型。

您当然可以构建自己的持久性机制,但您需要保持兼容性。最好把精力花在上面。