我希望重新创建本地构建的randomforest模型,并通过sagemaker进行部署。该模型非常基本,但是为了进行比较,我想在sagemaker中使用相同的模型。我看不到Sagemaker的内置算法中的randomforest(看起来很奇怪)-我唯一选择走deploying my own custom model的路线吗?仍在学习容器,似乎只是在本地进行一个简单的randomforestclassifier()调用就需要做很多工作。我只是想以现成的randomforest模型作为基准,并显示通过AWS sagemaker部署时,它的工作原理相同。
答案 0 :(得分:3)
在SageMaker中,您有3种选择来编写科学代码:
在撰写本文时,内置库中没有随机的森林分类器或回归器。内置库中有一种称为Random Cut Forest的算法,但它是用于异常检测的无监督算法,与以监督方式使用的scikit-learn random forest不同(但answered in StackOverflow here )。但是,使用开源的预先编写的scikit-learn容器来实现自己的容器很容易。您可以使用此public sklearn-on-sagemaker demo并更改模型。预先编写的容器相对于“自带”选项的好处是,已经写入了dockerfile,并且Web服务堆栈也已构建。
令您惊讶的是,内置算法未包含随机森林,该库及其18个算法已经涵盖了丰富的用例集。例如,对于结构化数据的监督学习(随机森林的通常用例),如果您要坚持使用内置函数,则取决于您的优先级(准确性,推理延迟,训练规模,成本...),可以使用SageMaker XGBoost(XGBoost已经赢得了无数的数据挖掘竞赛-KDDcup 2015前10名中的每个获胜团队都使用XGBoost according to the XGBoost paper-并且可以很好地扩展)和线性学习器,其推理速度非常快并且可以训练在GPU上以小批量的方式进行大规模生产。 Factorization Machines(线性+ 2度交互,权重为列嵌入点积)和SageMaker kNN是其他选项。而且,事情不会一成不变,内置算法的列表正在快速改进。
答案 1 :(得分:0)
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 Noetbook,例如:https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/random_cut_forest/random_cut_forest.ipynb