个推数据研发总监 峰少
机器学习作为近几年的一项热门技术,不仅在学术界接连取得突破,在业界也有人脸识别等场景的应用落地。然而在企业中,如何高效地发挥好机器学习的作用依然是很多团队面临的挑战。
本文以“机器学习平台建设”为主题,为大家讲解企业在机器学习实践中面临的挑战以及个推是如何通过建设机器学习平台来应对这些挑战的。
(文末附视频版讲解及完整资料下载)
01
机器学习的挑战
如上图所示,机器学习工作的常规流程是:
1)将商业问题转化为机器学习能够解决的问题;
2)进行数据的收集、清洗和聚合;
3)对数据进行分析,并基于分析结果构建特征工程;
4)选用不同的算法,并将算法进行训练,得到相应的应用模型;
5)利用实际数据进行验证,确保模型的可行性。
机器学习作为一门多领域交叉学科,是解决许多实际问题的有效工具。个推通过机器学习,构建了独有的用户画像冷、热、温标签。其中,“冷数据”是指用户的基础属性;“温数据”则可以回溯用户近期活跃的应用和场景,具有一定的时效性;“热数据”是指用户当下的场景及实时的用户行为偏好。三种标签共同用于分析不同群体的基础属性和行为偏好,进而进行智能推送和精准营销。
虽然机器学习的流程很清晰,但在具体落地的过程中也存在很多问题。
大数据问题。以往开发者在单台服务器上就可以完成机器学习的数据预处理、数据分析以及最终机器学习的分析和上线。但在海量数据的情况下,我们需要借助 Hadoop生态圈的技术,这就带来了较高的技术门槛。
工程化问题。算法工程师往往会聚焦在模型的实验构建上,但在很多高性能高并发的场景下,研发工程师需要对模型算法进行翻译集成、针对性优化,这给工程化开发带来了一定的挑战。
建模工程师资源紧张。许多业务都有建模分析场景,对建模工程师的依赖度较高。
为有效解决上述三个问题,我们进行了个推机器学习平台建设。
02
个推机器学习平台建设
上图是个推整体的解决方案。上半部分是个推数据生产环境,运行着数据处理pipeline,同时与下半部分的建模平台对接。
在数据生产环境中,模型对应的群体特征数据分两类:
一类是实时群体特征数据。我们通过实时计算生成群体特征数据,并根据不同的业务需求存储在不同的集群里。
另一类是离线群体特征数据,离线数据加工后会被存于Hive,供模型应用侧进行使用。
在数据生产环境中,个推为业务线提供在线的预测API或离线预测好的数据。
建模平台主要供算法工程师使用,包括以下三方面:
1)群体数据特征管理
对群体数据特征进行管理,方便符合权限的用户了解数据资产的使用情况。
2)函数库封装
在进行机器学习的过程中,除了基本的算法,实际上还有很多代码是重复或者相似的,我们需要把这些常用的代码进行函数化封装。
3) 对应IDE
在IDE平台上进行数据分析、开展数据实验,并且保证该平台能支持项目的管理和共享。除了以上几点,建模平台还包括模型管理监控等功能。
接下来本文将对建模平台的各个组件进行详细的介绍。
群体特征数据建设
群体特征数据主要聚焦在三点:特征的生产、查询和运营。
对于生产流程,个推建模工程师采用SQL的方式定期生产群体特征数据到离线群体数据特征库,再由工具导入到在线群体数据特征库,使得在离线和在线场景中可以使用同一套群体特征。
对于群体特征查询,我们设计了两层鉴权,严格限制访问身份的权限,确保数据安全。
最重要的其实是群体特征的运营,我们需要在运营过程中知道哪些群体特征是高频使用的,哪些群体特征在什么样的场景下使用效果比较好。在此过程中,我们把对于群体特征数据的使用经验沉淀下来,既能方便大家更深刻地理解数据,也能节约算力资源和时间成本。
建模平台建设
我们选择Jupyter作为主要建模IDE,便于进行交互式分析。这样保证了较高的建模效率,控制了研发成本,利于扩展。为了支持多租户特性,我们采用了Jupyterhub。我们采用了Tensorflow、Pyspark、Sklearn等来构建底层机器学习框架。在数据处理和数据探索过程中,结合sparkmagic,我们可以非常方便地将写在Jupyter上的Spark代码运行在Spark集群上。
Jupyter没有现成的版本管理控制和项目管理,我们借助git予以解决。
另外,为了提高建模人员在Jupyter上的工作效率,我们引入了比较多的插件。例如,我们把一些典型挖掘Pipeline做成Jupyter模板,以后遇到类似业务时,只需要基于模板进行扩展开发。这样就能比较好地解决代码不规范的问题,避免很多重复代码的产生,为实验代码转化为生产代码打下基础。
在探索平台上,我们内置了机器学习相关的函数库和工具:
1)非业务化的通用工具,可进行异常数据处理、数据分析的指标统计等;
2)业务相关的常用工具,比如对个推数据抽取的API;
3)其他周边工具。比如在应用部署方面,我们提供了Jupyter2AzkabanFlow,可以把原本在Jupyter上写好的代码或者脚本自动转化成AzkabanFlow,解决了特征工程阶段的代码复用问题。
除了标准化的函数库和工具,我们也提供了SQL建模方式,提高了分析工程师的工作效率。我们将常用的模型训练方法封装到SQL语法中,通过一行SQL就可以进行模型训练。众所周知,SQL 非常适合数据分析探索。基于数据分析的结果和现在机器学习的能力,我们可以完整地在SQL环境内完成数据分析到数据建模的过程。
最后我们还提供了极简使用的AutoML 平台。在这个平台上,任何人只需要上传一份csv格式的样本文件,定义好问题,就可以进行自动化的模型训练。模型训练好后,再上传一份csv格式的目标文件,还可以进行自动的模型预测。产品、运营甚至销售都可以通过这个平台来快速评估这个业务场景的预计效果。
在模型产出结果时,平台还会输出一些重要指标和结果依据。在咨询场景中,依据平台的跑数结果、指标数据,我们可以产出较为完善的咨询报告。目前基于AutoML平台,很多业务可以先进行自助建模,这样极大地解放了建模工程师的生产力。
03
总结和展望
本文主要介绍了个推机器学习平台的建设实践。个推作为机器学习领域的长期实践者,也将在群体特征数据共享沉淀、端到端的平台建设方面继续探索,不断打磨自身技术,与开发者一同分享机器学习平台建设的最新思路及方法。
完整版分享材料获取
关注【个推技术学院】微信公众号
(微信号:getuitech)
回复关键词“人工智能”
即可领取机器学习平台建设完整版分享材料!
此外,通过视频链接还可观看本文配套解析:
http://live.vhall.com/181945995
网友评论