SQLFlow|让AI造福金融,支付宝端到端AI系统SQLFlow实践

_原题为 让AI造福金融 , 支付宝端到端AI系统SQLFlow实践

端到端机器学习是一种由输入端的数据直接得到输出端结果的AI系统 , 它可以对业务人员屏蔽复杂技术细节 , 同时给模型以更多自动调节空间 , 增加模型整体契合度 。 近两年来 , 端到端机器学习成为AI领域研发热点 , 蚂蚁集团于2019年4月发布端到端AI系统SQLFlow开源项目 , 受到业界广泛关注 。 今天 , 就让我们来看看它对端到端AI的思考与解答 。

SQLFlow 是蚂蚁集团开源的使用 SQL 完成 AI 工作流构建的编译系统 。 SQLFlow 将多种数据库系统(MySQL, Hive, MaxCompute)和多种机器学习引擎(Tensorflow, Keras, XGBoost)连接起来 , 将 SQL 程序编译成可以分布式执行的工作流 , 完成从数据的抽取 , 预处理 , 模型训练 , 评估 , 预测 , 模型解释 , 运筹规划等工作流的构建 。
接下来我们会根据以下内容逐步介绍SQLFlow:
- 为什么要使用 SQL 语言描述端到端 AI 任务
- 使用 SQLFlow SQL 语句构建 AI 任务
- 使用 SQL 程序构建端到端 AI 工作流
- 使用 SQLFlow Model Zoo 沉淀模型
- 应用 SQLFlow 的场景案例
为什么要使用SQL语言描述端到端AI任务 首先 , 思考一个问题 , 人工智能和金融有哪些耳熟能详的结合呢?
1、在智能征信风控方向 , 可以运用大数据进行机器学习 , 刻画用户画像 , 抽取个性化典型特征 , 推进反欺诈评估、用户征信评估 。
其中用到的技术包括:聚类(将有相似特征的群体聚类 , 确定人群标签)、分类(学习已有分类标签的用户特征 , 识别新用户所属的类型、标签)、模型解释
2、在智能投资顾问方向 , 我们以人工智能算法为基础 , 为客户提供自动化投资管理解决方案 , 包括提供投资资讯、构建投资组合、直接投资管理等服务 。
用到的技术:时序模型、回归、运筹规划
3、智能营销方向 , 上世纪90年代沃尔玛超市将「啤酒」与「尿布」摆在同一区域的做法 , 大大增加了商品销售收入 , 成为借助数据分析实现智能营销的经典案例 。 而今天 , 在人工智能等新技术的加持下 , 数据分析技术正在不断进化 , 千人千面的智能营销已有广泛的应用 。
用到的技术:推荐算法、Ranking、CTR、运筹规划
然而 , 构建传统的机器学习工作流程 , 需要经历非常多的步骤并使用复杂的技术栈:
SQLFlow|让AI造福金融,支付宝端到端AI系统SQLFlow实践
文章图片

构建完整的 AI 应用 , 首先需要获取用于构建模型的数据 , 这些数据通常可以从日志、订单数据、交易记录等获得 。 之后通过数据抽取 , 将其中我们需要用到的部分信息 , 从多个存储位置抽取出来 。 抽取数据之后需要进行数据预处理 , 比如去掉错误的数据 , 填充缺失的数据 , 整理 , 排序等 。 预处理完成之后 , 我们需要从这部分数据中得到用于训练模型的特征 , 比如提取时间序列的周期性特征 , 获取交叉特征等 , 最后将构建的特征转换成训练框架可以接收的数据格式 , 才能开始训练 。
另外 , 在开始训练之前 , 我们还需要确定使用哪个模型 , XGBoost模型还是深度学习模型 , 哪个模型更适合当前的场景?模型可以从现有模型库中获取并根据需要修改 , 或者从头编写新的模型使用 。 另外在构建机器学习模型时 , 我们需要不断的评估模型的表现如何 , 以获得最优的模型 , 这是就要使用各种评价指标描述训练好的模型 。 当模型评估结果验证达标之后 , 就需要将模型代码发布一个新的版本 , 部署到线上环境 。 发布之前还要通过线下测试 , 小流量ABTest , 然后推全部署 。 如果是离线任务则需要更新定时任务使用新的模型代码 。
当模型的时效性比较强的时候 , 我们还需要不断的使用新的数据更新模型 , 就是“增量训练“ , 这样每次增量训练就不得不再次从头走一次完整的流程 。
要完成这一整套流程 , 需要用到复杂的技术栈 。
SQLFlow|让AI造福金融,支付宝端到端AI系统SQLFlow实践
文章图片

我们需要的数据可能存储在磁盘 , 或者像 HDFS这样的分布式文件系统 , 或者可以从结构化的数据库系统中获得 , 或者是 NoSQL 引擎(比如mongodb)存储的数据;在预处理阶段 , 有可能需要编写 MapReduce Job 来处理 HDFS 上的大量的数据 , 或者使用 Hive 编写 SQL 语句完成处理 , 亦或直接编写 Python 代码处理数据;在特征工程阶段 , 又需要使用类似statsmodels, tsfresh 或者编写 Python 程序使用诸如 Pandas 之类的库完成预处理;在模型训练阶段 , 算法工程师首先需要掌握各种建模的能力 , 算法原理和基础知识 , 也需要熟练使用各种机器学习引擎如 sklearn, XGBoost, Tensorflow, Pytorch等;最后在上线部署阶段 , 还需要了解模型如何接入Serving系统 , 怎么样做ABTest , 怎么编写CI/CD任务保证模型上线不影响线上业务 。
构建AI应用 , 不仅需要冗长的链路和复杂的技术 , 从业务需求到 AI 系统上线也需要特别长的沟通链路 。


推荐阅读