市场营销是金融畛域的一个重要方向,在机构倒退新客户的过程中,不容忽视老用户的散失状况。如果取得一个新客户的老本是保留一个老客户的老本的5倍,那么将其客户流失率升高5%,其利润就可能减少25%以上

在本文中,咱们将利用无服务器架构工作流,用于数据分析,模型部署,批量推理,从而实现提前发现可能的散失客户,及时保护防止散失。

想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~

计划概述

本文将以一个常见的应用案例,通过 Amazon Step Functions Data Science SDK创立基于无服务器架构的工作流,过程如下:

1.应用Amazon Glue进行ETL工作,生成样本数据集

2.应用Amazon SageMaker部署本地训练好的模型,用于机器学习推理

下图演示了上述Amazon Step Functions无服务器架构工作流:

后续操作应用了下列亚马逊云科技服务:

  • Amazon Step Functions
    https://www.amazonaws.cn/step...

是由多个离散步骤组成的状态机,其中每个步骤都能够执行工作、作出抉择、启动并行执行或治理超时。其中一个步骤的输入作为下一个步骤的输出,并反对将错误处理嵌入到工作流中。

Amazon Step Functions Data Science SDK
诞生前,只能应用基于JSON的Amazon States Language定义Amazon Step Functions;但当初能够借助此SDK应用Python代码轻松创立、执行和可视化Amazon Step Functions工作流。

  • Amazon Step Functions Data Science SDK
    https://docs.amazonaws.cn/zh_...

本文是以Amazon Step Functions Data Science SDK为主线,探讨如何创立Amazon Step Functions步骤、应用参数、集成服务特定的性能以及将这些步骤关联在一起以创立和可视化工作流。

Amazon SageMaker可为开发人员和数据科学家提供构建、训练和部署不同类型机器学习模型时所需的工具。

  • Amazon SageMaker
    https://www.amazonaws.cn/sage...

Amazon Glue是一项齐全托管的提取、转换和加载(ETL)服务,在分布式Apache Spark环境中运行,可能充分利用Spark而无需治理基础设施。将Glue指向受反对的数据存储,它将会生成代码以从指定的存储中提取数据并加载到指标存储中。

  • Amazon Glue
    https://www.amazonaws.cn/glue/

本文应用机器学习办法进行客户散失预测,采纳模仿的数据(近期生产记录,在线时长等)为示例数据集,首先应用Amazon Glue进行数据处理,再应用Amazon SageMaker进行模型部署,并进行批量转换。

该场景的应用的算法为XGBoost(eXtreme Gradient Boosting) ,它是一种监督式学习算法, 尝试将一组较简略且较弱模型的一系列估计值联合在一起,从而精确地预测指标变量,能够用来解决回归、分类(二进制和多类)和排名问题。利用XGBoost预测客户是否会散失,以及早进行干涉。

1.创立Jupyter Notebook

1.1 创立Amazon SageMaker 笔记本实例,部署模型

1.2 创立一个笔记本实例,类型抉择t2.medium。抉择或者创立一个IAM角色(IAM Role)

1.3 其余局部抉择默认选项,点击创立(Create)

1.4 在笔记本创立实现后,关上Jupyter,抉择New,新建一个ipynb,抉择内核为conda_python3

2. 应用Amazon Step Functions Data Science SDK创立和管理工作流

2.1 装置和加载所有必须的模块

2.2 依照代码中的正文要求,替换应用您本人的 S3 bucket/prefix

前面须要将数据上传到该项目标Amazon S3存储桶,用作训练模型的数据和Model Artifact的存储

2.3 依照代码中的正文要求,替换应用您本人的 S3 bucket/prefix

2.4 创立一个Role附加到Amazon Step Functions

关联的策略如下所示,能够依据理论应用的服务调整策略,并将策略附加到创立的Role

2.5 设置执行的Role

为确保Amazon SageMaker能够顺利运行相干的工作,这里获取笔记本实例的执行角色(创立Amazon SageMaker 笔记本实例的时候曾经创立/抉择的角色)。同理Amazon Step Functions顺利运行的前提也是要有相应的执行角色,可参考上图中角色的关联资源。

3. 验证模型

3.1 装置和加载所有必须的模块

因为须要应用joblib来加载模型,须要应用sklearn版本为0.22.1。

3.2 读取样本数据

样本数据上传到Notebook后,能够看到共有1000行74列数据(列没有显示完),包含主键(cust_id)和用户依照工夫维度统计的交易金额、在线换手率金额、在线赎回笔数等信息。

3.3 加载模型,返回预测标签

利用逻辑回归进行客户流失率建模,应用sklearn拆分测试集和训练集,提供回归的xgboost模型。

本文中的模型已在本地训练好,在Notebook中应用joblib加载模型。

4. 筹备环境工作(执行一次)

4.1 打包容器&推送容器到ECR

编辑Dockerfile,筹备镜像。

这个过程可能须要进行很屡次,因为不可避免地要批改Dockerfile或者某类程序以使得它们能够失常工作。

倡议应用官网镜像文件,在此基础上增加组件,国内镜像仓库地址参考如下链接:
https://docs.amazonaws.cn/sag...

在cn-north-1下应用sklearn的训练镜像和推理镜像的门路为:

450853457545.dkr.ecr.cn-north-1.amazonaws.com.cn

在拉取公共镜像之前,须要做根本身份验证

推送镜像到自有ECR镜像仓库

4.2 上传模型文件到S3

咱们须要将本地曾经训练好的模型放到之前创立的s3存储桶,prefix前缀是对象名称前的残缺门路。

比方一个对象model.tar.gz,
存储门路BucketName/Project/Demo/model.tar.gz,
则前缀是BucketName/Project/Demo/

4.3 推理脚本

4.3.1 打包代码并上传到s3

4.4 创立Amazon SageMaker模型对象

下图中的image_uri为4.1步骤中指定容器镜像地址,model_uri为4.2步骤中指定模型的s3门路,transform_script为4.3步骤中创立的推理脚本,code_uri为4.3.1步骤中上传在s3的代码门路。

5. 批量转换(模型推理)

5.1 应用Amazon SageMaker Batch Transform

要取得整个数据集的推理后果,能够应用批处理变换。应用批处理转换,能够应用训练好的模型和数据集创立批处理转换作业,这些数据必须存储在Amazon S3中。

  • Amazon SageMaker Batch Transform
    https://docs.amazonaws.cn/sag...

Amazon SageMaker将推理保留在创立批处理转换作业时指定的S3存储桶中。

批量转换治理获取推理所需的所有计算资源,并在批处理转换作业实现后将其删除。

5.1.1 输入后果整合输出id

指定model_name,实例的数量和机型

6. 应用Data Science SDK创立Amazon Step Functions Step

6.1 创立Glue Step,指定glue job name

下图中名为glue-demo-job-0223的Glue job是曾经创立好的作业,其目标是定期生成须要推理的样本数据。

6.2 创立Batch Transform Step,指定job name和model_name

6.3 串联上述的步骤

导入fields模块,更改attrs属性,本文中须要更改glue和Amazon SageMaker对应的Step

(1)把resource: “arn:aws:states:::glue:startJobRun.sync”
替换为resource: “arn:aws-cn:states:::glue:startJobRun.sync”

(2)把resource: “arn:aws:states:::sagemaker:createTransformJob.sync”
替换为resource:”arn:aws-cn:states:::sagemaker:createTransformJob.sync”

7. 运行上述workflow,指定workflow name

7.1 操作步骤

新建名为MyInferenceRoutine01的工作流

生成图示

创立和执行workflow,能够看到图示不同的色彩代表不同的状态

能够列出失败的events,正在执行的workflow和执行胜利的workflow

失常执行实现后的图示:

7.2 生成的文件

最初在s3对应的文件夹下,能够看到生成的推理文件:

客户ID和对应的分数,能够看到,分数越低的客户散失的可能性会更高。

8. 总结

本文探讨的是应用Amazon Step Functions Data Science SDK,从数据ETL,到模型部署,再到批量推理,创立一个基于无服务器架构的工作流。对于业务端的数据科学家来讲,这些步骤都能够在Notebook中实现,而且能够通过Amazon Step Functions监控每个工作的运行状态和日志记录,最终实现整个流程的自动化,缩小数据科学家的人工反复工作,进步生产开发效率。本文波及的示例代码下载链接:
https://github.com/hlmiao/sag...

参考资料

[1] amazon-step-functions-data-science-sdk-python
https://github.com/aws/aws-st...

[2] Amazon Step Functions Data Science SDK – Hello World
https://sagemaker-examples.re...

[3] Build a machine learning workflow using Step Functions and SageMaker
https://sagemaker-examples.re...

[4] Using the SageMaker Python SDK
https://sagemaker.readthedocs...

本篇作者


缪翰林
亚马逊云科技解决方案架构师
负责基于亚马逊云科技的计划征询,设计和架构评估。在运维,DevOps方面有丰盛的教训,目前侧重于大数据畛域的钻研。


王世帅
亚马逊云科技机器学习产品技术专家
负责基于亚马逊云科技的机器学习计划的征询与设计,对于机器学习利用等有浓重的趣味和激情,参加了多个客户的机器学习我的项目。