【问题标题】:Randomforest in amazon aws sagemaker?亚马逊aws sagemaker中的随机森林?
【发布时间】:2019-11-06 11:58:34
【问题描述】:

我希望重新创建本地构建的随机森林模型,并通过 sagemaker 进行部署。该模型非常基本,但为了比较,我想在 sagemaker 中使用相同的模型。我没有在 sagemaker 的内置算法中看到随机森林(这看起来很奇怪)——是我走deploying my own custom model 的唯一选择吗?仍在学习容器,对于仅在本地进行简单的 randomforestclassifier() 调用的东西似乎需要做很多工作。我只是想以开箱即用的随机森林模型为基准,并证明它在通过 AWS sagemaker 部署时的工作原理是一样的。

【问题讨论】:

标签: amazon-web-services docker containers random-forest amazon-sagemaker


【解决方案1】:

SageMaker 不支持开箱即用的 RandomForestClassifier,但 XGBoost (gradient boosted trees)decisionTreeClassifier from scikit-learn 均受支持。您可以直接从 SageMaker SDK 访问 scikit-learn 的 decisionTreeClassifier()

这是一个笔记本,演示如何使用来自SageMaker's built-in scikit-learn.decisionTreeClassifier

当然也可以通过 Dockerfile 部署您自己的自定义模型(一开始可能会让人望而生畏,但并不是那么糟糕),但我同意这对于已经存在的简单算法来说并不理想包含在 SageMaker 中 :)


编辑:在评论中讨论的原始答案中混合了随机森林和随机森林。 SageMaker 的 Random Cut Forest 算法文档可在此处获得:https://docs.aws.amazon.com/sagemaker/latest/dg/randomcutforest.html

随机森林 (RCF) Jupyter 笔记本前:https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/random_cut_forest/random_cut_forest.ipynb

【讨论】:

  • 所以我问的是随机森林模型,但有人说它不同于随机森林(无监督与监督学习)-stackoverflow.com/a/56738324/4458718。所以看起来它们是两个非常不同的算法?
  • 糟糕——你说得对,我很抱歉。随机森林用于无监督异常检测,而随机森林是用于分类/回归的决策树集合。您是设置在随机森林上,还是愿意将 xgboost(这是 SageMaker 内置算法)用于梯度提升树? docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html
  • @LXandor 为 xgboost 和 decisionTreeClassifier 添加了额外的选项,这两个都是 SageMaker 内置的
  • 我最终将使用 xgboost,但我想使用随机森林作为基准。那么获得随机森林的唯一方法是通过自定义模型 docker 文件流程吗?好像很奇怪,RF 这么流行的算法
【解决方案2】:

编辑 03/30/2020:添加指向SageMaker Sklearn random forest demo的链接


在 SageMaker 中,您有 3 个选项来编写科学代码:

  • 内置算法
  • 开源预写容器(可用 用于 sklearn、tensorflow、pytorch、mxnet、chainer。 Keras 可以 写在 tensorflow 和 mxnet 容器中)
  • 自带容器(例如 R)

在撰写本文时,内置库中没有随机森林分类器或回归器。内置库中有一个称为Random Cut Forest 的算法,但它是一种用于异常检测的无监督算法,与以监督方式使用的scikit-learn random forest 不同的用例(也称为answered in StackOverflow here)。但是很容易使用开源的预先编写的 scikit-learn 容器来实现你自己的。有一个demo showing how to use Sklearn's random forest in SageMaker,来自高级SDK 和boto3 的训练编排麻烦。您也可以使用其他public sklearn-on-sagemaker demo 并更改模型。与“自带”选项相比,预先编写的容器的一个好处是 dockerfile 已经编写好了,Web 服务堆栈也是如此。

对于您对随机森林未在内置算法中的功能感到惊讶的是,该库及其 18 种算法已经涵盖了丰富的用例集。例如,对于结构化数据的监督学习(随机森林的常见用例),如果您想坚持使用内置插件,则取决于您的优先级(准确性、推理延迟、训练规模、成本......)可以使用 SageMaker XGBoost(XGBoost 已经赢得了大量的数据挖掘比赛 - 2015 年 KDDcup 前 10 名中的每个获胜团队都使用 XGBoost according to the XGBoost paper - 并且可以很好地扩展)和线性学习器,它的推理速度非常快,可以进行大规模训练, 在 GPU(s) 上以 mini-batch 方式。 Factorization Machines(线性+二度交互,权重是列嵌入点积)和SageMaker kNN是其他选项。此外,事情并非一成不变,内置算法列表正在快速改进。

【讨论】:

猜你喜欢
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2014-04-20
  • 2015-01-23
相关资源
最近更新 更多