APP下载

魔镜—58视觉化资料智慧平台架构与实践

消息来源:baojiabao.com 作者: 发布时间:2024-05-21

报价宝综合消息魔镜—58视觉化资料智慧平台架构与实践

背景

魔镜是资料产品研发部基于大资料平台开发的一套视觉化资料智慧平台。传统机器学习建模流程对非资料科学专业人员来说,整体门槛较高,其中主要体现在几个方面:

1. 机器学习概念较为抽象

比如训练集、验证集、测试集、特征、维度、标签泄露、欠拟合、过拟合、学习曲线、验证曲线、ROC曲线、混淆矩阵等等,除了需要了解概念外,需要了解具体的使用场景、使用方法。

2. 机器学习建模流程复杂

资料准备、资料预处理、统计分析、特征工程、模型训练与建模、模型评估与对比等,尤其是统计分析以及特征工程,涉及大量的特征生成、特征变换、特征选择的过程,占用了资料探勘的大部分时间。

3. 数学推导以及开发能力

除了需要熟悉Python、R,在大资料环境下Java和Scala用得也相对较多。特别对于那些需要自己实现算法以匹配自己业务的场景,会涉及大量的公式推导、模型并行优化等相关高阶能力。

目标

对于那些了解业务需求、规则策略敏感、工程以及算法能力相对欠缺的人员,如:业务、运营、资料产品等,我们定义为非专家使用者;对具有丰富建模经验、出众工程和算法能力、业务理解稍弱的人员我们定义为专家使用者。

魔镜使用者囊括了这两类使用者,针对这两类使用者我们设计了视觉化的操作界面、丰富的算法元件、方便的调参方式、详细的评估对比报告。

魔镜目标旨在为非专家使用者降低机器学习门槛,加速其使用资料探勘手段进行业务探索;同时辅助专家使用者,加速其整体建模流程。

整体架构

1. 使用者体系

整合公司的SSO以及BSP,以OA账号作为唯一登入账号,使用者体系统一。

2. 安全体系

整合大资料平台的多租户体系,执行相关命令时根据OA账号获取所属部门的Hadoop账号,进而获取相应Hadoop账号下有许可权的Hive表、HDFS路径以及相应的资源伫列。

3. 资源层

目前的资料来源以及结果资料基于Hive储存,模型档案储存于HDFS。计算引擎基于Spark,基于Scala实现资料预处理、统计分析等逻辑,大部分模型算法来源于Spark MLLib,部分算法(XGBoost、LightGBM、FM等)整合第三方。

4. 逻辑层

目前逻辑层涵盖资料来源/目标,、资料预处理、统计分析、特征工程、机器学习、工具六类,共70个元件。

5. 应用层

针对实验提供了专案管理以及实验管理,提供了完善的许可权控制。资料管理功能与DP整合,可以直接读取大资料平台中自己有许可权的Hive表。模型管理目前主要针对二分类模型,提供了完善的模型对比、模型释出等功能。

同时魔镜提供了完善的排程功能,可以自动解析实验中多个元件的依赖关系,并提供多种灵活的排程策略。

6. 服务层

离线排程:线下训练好的模型整合排程可以形成离线排程服务,定期使用训练好的模型对新资料进行预测。下图为离线排程流程图:

线上预测:结合模型释出、模型关联可以将线下训练好的模型进行释出,提供给使用者使用HTTP界面进行实时预测的能力。

排程依赖

排程针对如下元件之间的依赖关系,该以什么方式快速判断其执行的先后顺序呢?

传统思路为使用递回方式判断其依赖关系,在魔镜中我们采用类似拓扑排序的方式,将相互依赖关系转换成二维阵列形态,只需简单判断横向座标里边的元素全为0即可及时判断出下一个即将要执行的任务节点,减少计算量,提高计算速度:

特征生成

特征工程占据了整个资料探勘的大部分时间,而特征工程里边的特征生成又占用了其中的大部分时间,如何减少特征生成的时间是魔镜关注的一个重点。

专家使用者常使用Python的一些第三方库实现特征生成,其中一个比较好的是FeatureTools,进行实体关系设定、实体关联、选择聚合和转换方法后,可以自动生成具有良好解释性的特征。

基于单机版的Python或者Python的并行框架去执行,无法直接和DP进行整合,并且没有办法利用到公司的丛集资源,基于这个背景,魔镜做了如下设计:

主旨思想为:资料驱动计算。

1. 资料定义

需要定义好特征主表以及各特征子表,主表和子表之间需要通过关联字段进行关联。

2. 资料切分

按主表主键将主表资料以及关联的子表资料进行切分,按照规则生成在指定的HDFS目录中。

3. 分布执行

使用Spark定义序列,并将序列号作为Python函式引数,传入到特征生成函式中。各路径中的资料由各自指定的Python程序进行运算并存储。

4. 汇总结果

由Spark的Driver程序汇总各Python程序的执行结果,进行最终输出。

总结:利用丛集的分散式计算能力加快了生成速度,同时利用了Python的第三方库能力进行了功能扩充套件。

自动建模(二分类)

目前业界对自动学习部分的支援力度越来越大,不仅国内的阿里PAI、第四正规化,国外的H2O、TransmogrifAI 等也做得很深入。

更有甚者DataRobot完全针对非专家使用者提供一键式执行,内部集成了资料预处理、特征生成、特征转换、特征选择等特征工程,内部更是集成了Spark、Python、R等等多种模型算法,算法并行执行、自动选择最优算法,并完成了模型一键部署以及模型部署后的效果跟踪。

魔镜也实现了类似的尝试,目标是针对非专家使用者生成基线模型。

整体流程如下:

1. 资料预处理

对特征维度进行统计,删除缺失值大于90%的特征。并对剩余特征按照60%、20%、20%的比例进行切分,分别作为训练集、验证机和测试集。

2. 特征工程

分别针对数值特征、非数值特征以及树形模型、非树形模型做了不同处理。

3. 模型训练

目前集成了4类算法(RF、GBDT、LR、XGBoost),分别针对每类算法提供了一组预设的引数组合,利用Spark的分散式能力,对各算法的各引数组合(网格式),在60%训练集以及20验证集上并行执行。

4. 评估报告

将各模型的结果按照评估指标进行排序,在评估报告中分别显示各算法的具体效果。提取最优模型的训练引数在前80%的资料上进行训练,并在最终20%测试集上进行最终效果评估。

展望

后期会在整合云窗排程、高维特征支援、Python模型支援、模型线上预测上进一步展开。

欢迎大家关注“58架构师”微信公众号,定期分享云端计算、AI、区块链、大资料、搜寻、推荐、储存、中介软件、移动、前端、运维等方面的前沿技术和实践经验。

2019-07-18 14:51:00

相关文章