明确需求之后,算法平台的设计就比较明确了,业界可以参考的例子包括facebook的fblearner和Uber的Michelangelo(如下图)。
可以看到,算法平台包含几个环节:
* 数据准备
主要是如何准备数据,并且管理数据在离线、近线和在线模式之间的分布。
* 模型训练和评估
主要是使用各种基础平台(Spark/Tensorflow/Xgboost等)训练模型,从数据中获取可以应用的模型和规则。
训练出来的模型,需要进行验证和评估,评估包括在训练集、测试集和时间外验证集上的表现,检查模型的性能表现(KS、AUC等)、拟合程度和时间衰减。
* 模型服务与业务整合
在离线选择好模型之后,就可以把它放到线上做实际的应用了,在真实系统中验证假设是否成立。
落地路径:线上系统-》到训练平台
在充满遗留系统的老企业或者人力不足的新企业,往往需要从线上系统开始。对于训练过程,经常看到成立几年的数据团队,还在使用单机电脑训练模型,在数据量不大的场景,半人肉的训练短期是可以接受的,考虑到单机版的sklearn、keras这么流行,也可以理解这一点。
从收益角度来看,AI系统的最大价值体现在与业务结合的部分,例如促进增长、降低成本等,其次才是对人效的提升,例如自动运营、自动训练。看清楚这一点,也就认同了从线上到线下的落地路径。
线上系统设计
线上系统包含两个部分,一部分负责模型打分,也就是inference,另外一部分是策略,以及与业务系统对接。
inference部分面临的问题,是如何支持各种不同的建模工具,例如sas、python、spark等等,如果对性能并发要求不高,就可以使用pmml的对应语言实现,快速上线获取短期胜利。
策略部分,一般可以映射成规则,使用drools这样的规则引擎实现,可以解决最初一段时间的绝大部分需求。