越来越多企业开始尝试使用机器学习算法来预测业务,并逐渐在线上部署。但机器学习和深度学习的技术栈繁渣。有多种编程语言,运行环境。稳定性,可用性,维护方式不同以往的IT服务。技术负责人需要设计良好的架构,发掘业务潜力也要保障生产系统稳定性。本文主要介绍:
1.理解机器学习算法训练流程。
2.提供线上模型部署架构方案
3.掌握模型治理和运维的方案。
机器学习应用的领域:
电商: 推荐系统
金融:反欺诈,打分卡,信用评分
安全:攻击检测
什么是模型:
算法训练是为了得到模型。那什么是模型形呢?
假设如下算法用于预测房价。
Y=w1*x1+w2*x2+wn*xn +b
所谓模型训练就是找到预测最准的[w1,w2,wn,b]参数。 训练结束后,将[w1,w2,wn,b] .存储到文件中,可以称为模型。模型就等于训练参数
部署到生产时候,使用保存的[w1,w2,wn,b] 初始化 Y=w1*x1+w2*x2+wn*xn+b。这个模型就可以用来预测房价。
整个过程类似序列化,反序列化过程。
机器学习工具集:
Scikit learn (python)
Tensorflow (python,c++)
spark mlib (java)
Mahout (java)
Dl4j
R
各种工具都不能互相替代。生成的模型文件格式不同,编程语言不同。
甚至是同样参数用不同工具预测结果会相差很大。
模型表达通用标准:
PMML 是一种事实标准语言,用于呈现数据挖掘模型。预测分析模型 和数据挖掘模型 是指代数学模型的术语,这些模型采用统计技术了解大量历史数据中隐藏的模式。预测分析模型采用定型过程中获取的知识来预测新数据中是否有已知模式。PMML 允许您在不同的应用程序之间轻松共享预测分析模型。因此,您可以在一个系统中定型一个模型,在 PMML 中对其进行表达,然后将其移动到另一个系统中,并在该系统中使用上述模型预测机器失效的可能性等
相关说明可以查看:
https://www.ibm.com/developerworks/cn/opensource/ind-PMML1/
有几点需要注意:
PMML支持部分模型。
各种工具都有生成PMML功能。
可以通过开源Openscoring 来部署PMML模型。Drools 也只支持PMML.
模型评测标准:
主要是准确率和召回率,AUC. 比如复杂场景,需要自己设计标准。网上资料比较多这里就不详细说明
模型训练过程(离线学习)
数据处理->特征处理-模型训练-模型选择->生产部署
模型部署方案:
可以考虑直接dump.然后在生产环境load运行。可以使amazon s3做模型管理,md5做个hash用来管理版本管理。
比较标准做法是使用PMML.特别需要对外交付。
PMM是一种标准化的模型表示方式。托管平台openscoreing .,
架构模式A:
这种模式优点:
可以减少数据交互。比如推荐系统,输入是个user id ,返回推荐列表。