越来越多企业开始尝试使用机器学习算法来预测业务,并逐渐在线上部署。但机器学习和深度学习的技术栈繁渣。有多种编程语言,运行环境。稳定性,可用性,维护方式不同以往的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。这个模型就可以用来预测房价。
整个过程类似序列化,反序列化过程。
Scikitlearn(python)
Tensorflow(python,c++)
sparkmlib(java)
Mahout(java)
Dl4j
R
各种工具都不能互相替代。生成的模型文件格式不同,编程语言不同。
甚至是同样参数用不同工具预测结果会相差很大。
PMML是一种事实标准语言,用于呈现数据挖掘模型。预测分析模型和数据挖掘模型是指代数学模型的术语,这些模型采用统计技术了解大量历史数据中隐藏的模式。预测分析模型采用定型过程中获取的知识来预测新数据中是否有已知模式。PMML允许您在不同的应用程序之间轻松共享预测分析模型。因此,您可以在一个系统中定型一个模型,在PMML中对其进行表达,然后将其移动到另一个系统中,并在该系统中使用上述模型预测机器失效的可能性等
有几点需要注意:
PMML支持部分模型。
各种工具都有生成PMML功能。
可以通过开源Openscoring来部署PMML模型。Drools也只支持PMML.
主要是准确率和召回率,AUC.比如复杂场景,需要自己设计标准。网上资料比较多这里就不详细说明
数据处理->特征处理-模型训练-模型选择->生产部署
可以考虑直接dump.然后在生产环境load运行。可以使amazons3做模型管理,md5做个hash用来管理版本管理。
比较标准做法是使用PMML.特别对外交付的场景。
PMM是一种标准化的模型表示方式。托管平台openscoreing.,
这种模式优点:
实现方式有主要两种,数据收集可以在前端完成或者后端,可以考虑实现难度和解耦承担来权衡。
所需数据全部由外部传入。基础服务一般使用这种架构。比如自然语言,图片处理,语音识别。
只有生成模型才可以在线学习。不是本文重点就不展开说明了。
需要设定一些业务指标,通过阈值,历史数据环比来进行监控和预警。
长期指标:反馈周期很长的指标。比如违约率,都需要2个月以后才能判断是否违约。所以数据库需要保留,贷款客户和模型版本的关系。
建议采用异步服务架构模式,一般可以考虑api-消息队列来处理。预测解决通过通知接口或者轮询获取
PMML有相应的版本说明。如果用原始模型文件需要自己添加一些机制,来处理。比如计算模型文件hash值。
如果模型一旦出现问题,很难debug.而且修复时候会很长。只考虑回滚或下线。需要和业务方明确这一点并提前做好预案。