愈来愈多企业开始尝试使用机器学习算法来预测业务,并逐渐在线上部署。但机器学习和深度学习的技术栈繁渣。有多种编程语言,运行环境。稳定性,可用性,维护方式不一样以往的IT服务。技术负责人须要设计良好的架构,发掘业务潜力也要保障生产系统稳定性。本文主要介绍:html
1.理解机器学习算法训练流程。前端
2.提供线上模型部署架构方案java
3.掌握模型治理和运维的方案。python
电商: 推荐系统c++
金融:反欺诈,打分卡,信用评分算法
安全:攻击检测数据库
你们都知道机器学习训练是为了获得模型。那什么是模型呢?编程
假设以下算法用于预测房价。后端
Y=w1*x1+w2*x2+wn*xn +bapi
所谓模型训练就是找到预测最准的[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 中对其进行表达,而后将其移动到另外一个系统中,并在该系统中使用上述模型预测机器失效的可能性等
相关说明能够查看:
http://dmg.org/pmml/v4-1/GeneralStructure.html
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 .,
这种模式优势:
实现方式有主要两种,数据收集能够在前端完成或者后端,能够考虑实现难度和解耦承担来权衡。
所需数据所有由外部传入。基础服务通常使用这种架构。好比天然语言,图片处理,语音识别。
只有生成模型才能够在线学习。不是本文重点就不展开说明了。
须要设定一些业务指标,经过阈值,历史数据环比来进行监控和预警。
及时指标:响应时间,经过率,点击率,转化率
长期指标:反馈周期很长的指标。好比违约率,都须要2个月之后才能判断是否违约。因此数据库须要保留,贷款客户和模型版本的关系。
根据模型算法不一样,处理时间10ms到10分钟不等。
建议采用异步服务架构模式,通常能够考虑api-消息队列来处理。预测解决经过通知接口或者轮询获取
PMML有相应的版本说明。若是用原始模型文件须要本身添加一些机制,来处理。好比计算模型文件hash值。
若是模型一旦出现问题,很难debug. 并且修复时候会很长。只考虑回滚或下线。须要和业务方明确这一点并提早作好预案。
----------
http://www.cnblogs.com/codemind/