Amazon AWS SageMaker中的随机森林?

4
我想重新创建一个本地构建的随机森林模型,并通过Sagemaker进行部署。该模型非常基础,但为了比较,我想在Sagemaker中使用相同的模型。我没有在Sagemaker的内置算法中看到随机森林(这似乎很奇怪)。我的唯一选择是走部署自己的定制模型的路线吗?我还在学习容器,而且似乎为了做一些本地简单的randomforestclassifier()调用,这需要做很多工作。我只想以随机森林模型为基准,并展示当通过AWS Sagemaker部署时,它与原来的模型效果相同。

一个随机森林演示刚刚被添加到SageMaker演示资料库 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb - Olivier Cruchant
2个回答

11

编辑于2020年3月30日:添加链接到SageMaker Sklearn随机森林演示


在SageMaker中,您有三种选项来编写科学代码:
  • 内置算法
  • 开源预编写容器(可用于sklearn、tensorflow、pytorch、mxnet、chainer。Keras可以在tensorflow和mxnet容器中编写)
  • 自己带容器(例如R语言)
在撰写本文时,内置库中没有随机森林分类器或回归器。内置库中有一个名为Random Cut Forest的算法,但它是一种用于异常检测的无监督算法,与以监督方式使用的scikit-learn随机森林(也在StackOverflow上回答了此问题)不同。但是,可以使用开源的预编写scikit-learn容器来实现自己的算法。有一个演示如何在SageMaker中使用Sklearn的随机森林,使用高级SDK和boto3进行训练编排。您还可以使用这个公共sklearn-on-sagemaker演示并更改模型。预编写容器相对于“Bring your own”选项的好处是dockerfile已经编写好,并且Web服务栈也已经准备好了。
关于您对随机森林未出现在内置算法中的惊讶,该库及其18个算法已经涵盖了丰富的用例。例如,对于结构化数据上的监督学习(随机森林的通常用例),如果您想坚持使用内置算法,则可以根据您的优先级(准确性、推理延迟、训练规模、成本等)使用SageMaker XGBoost(XGBoost已经赢得了大量数据挖掘比赛-2015年KDD杯前10名的所有获胜团队都使用了XGBoost 根据XGBoost论文 -并且具有良好的可扩展性)和线性学习器,它在推理方面非常快速,并且可以通过GPU进行小批量训练。分解机(线性+二次交互,权重为列嵌入点积)和SageMaker kNN是其他选项。此外,事情并不是一成不变的,内置算法的列表正在快速改进。

SageMaker演示库刚刚添加了一个随机森林演示 https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb - Olivier Cruchant

0

RandomForestClassifier在SageMaker中不支持,但XGBoost(梯度提升树)以及scikit-learn的decisionTreeClassifier都是受支持的。您可以直接从SageMaker SDK访问scikit-learn的decisionTreeClassifier()

这里有一个笔记本演示如何使用SageMaker内置的scikit-learn的decisionTreeClassifier

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


编辑:在评论中讨论后,我混淆了原始答案中的Random Forest和Random Cut Forest。这里提供SageMaker的Random Cut Forest算法文档:https://docs.aws.amazon.com/sagemaker/latest/dg/randomcutforest.html

Random Cut Forest(RCF)Jupyter笔记本示例:https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/random_cut_forest/random_cut_forest.ipynb


所以我在问随机切割森林模型,但有人说它与随机森林不同(无监督学习与监督学习)-https://stackoverflow.com/a/56738324/4458718。所以看起来它们是两种非常不同的算法? - L Xandor
抱歉,你是正确的。Random Cut Forest 用于无监督异常检测,而 Random Forest 是一组用于分类/回归的决策树集合。你是否坚持使用随机森林,或者愿意使用 xgboost(这是 SageMaker 内置算法)进行梯度提升树?https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html - Nick Walsh
@LXandor 为 xgboost 和 decisionTreeClassifier 添加了额外的选项,它们都是 SageMaker 内置的。 - Nick Walsh
我最终会使用xgboost,但我想使用randomforest作为基准。所以唯一的方法是通过自定义模型docker文件流程来获取randomforest?这似乎很奇怪,因为RF是如此受欢迎的算法。 - L Xandor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接