e-works数字化企业网  »  文章频道  »  基础信息化  »  大数据

利用已有的大数据技术,如何构建机器学习平台

2017/11/18    来源:网络大数据    作者:冯煜策      
关键字:大数据  机器学习  
人脑具备不断积累经验的能力,依赖经验我们便具备了分析处理的能力,比如我们要去菜场挑一个西瓜,别人或者自己的经验告诉我们色泽青绿、根蒂蜷缩、纹路清晰、敲声浑响的西瓜比较好吃。
    机器如何学习?
 
    人脑具备不断积累经验的能力,依赖经验我们便具备了分析处理的能力,比如我们要去菜场挑一个西瓜,别人或者自己的经验告诉我们色泽青绿、根蒂蜷缩、纹路清晰、敲声浑响的西瓜比较好吃。
 
    我们具备这样的能力,那么机器呢?机器不是只接收指令,处理指令吗?和人脑类似,可以喂给机器历史数据,机器依赖建模算法生成模型,根据模型便可以处新的数据得到未知属性。以下便是机器学习与人脑归纳经验的类别图:
 
利用已有的大数据技术,如何构建机器学习平台
 
    平台设想
 
    在同程内部,我们对应用机器学习的一些团队做了了解,发现他们普遍的处理步骤如下:
 
利用已有的大数据技术,如何构建机器学习平台
 
    这个过程中存在一些痛点:
 
    线上数据到线下搬运耗时
 
    训练数据量难均衡,如果训练数据量较大,用 R 或者 Python 做单机训练将会非常耗时。如果训练数据量较小,训练出来的模型容易过拟合。
 
    对分析和挖掘人员的编码能力有一定的要求。
 
    因此我们觉得可以构建一套平台化的产品直接对线上数据进行建模实验,节省机器学习的开发成本,降低机器学习的应用门槛。
 
    平台构建
 
    设计目标
 
    支持大数据量的建模实验,通过并行计算缩短耗时
 
    抽象出最小执行单元,配置简单。通过拖拽以及连线的形式构建建模流程
 
    支持常用的机器学习学习算法处理回归、分类、聚类等问题支持常用的特征工程组件,如标准化、归一化、缺失值处理等
 
    支持算法评估结果可视化
 
    算法库
 
    在算法库方面,我们选择了 Spark,相比于 R 或者 Python,Spark 具备分布式计算的能力,更高效。
 
    ml 和 mllib 都是 Spark 中的机器学习库,目前常用的机器学习功能两个个库都能满足需求。ml 主要操作的是 DataFrame,相比于 mllib 在 RDD 提供的基础操作,ml 在 DataFrame 上的抽象级别更高,数据和操作耦合度更低。
 
    ml 提供 pipeline,和 Python 的 sklearn 一样,可以把很多操作 (算法 / 特征提取 / 特征转换) 以管道的形式串起来,对于任务组合非常便利,如 StringToIndexer、IndexerToString、VectorAssembler 等。
 
    组件化设计
 
    从架构设计上来说,不管是算法单元、特征工程单元、评估单元或者其他工具单元,我们认为都可以以组件的形式来设计。借助通用的接口行为以及不同的实现可以达到松耦合、易扩展的目的。
 
利用已有的大数据技术,如何构建机器学习平台
 
    上图是整个设计类图的一部分,实际上我们做了较多层次的抽象以及公用代码。下面看看核心类 BaseTask:
 
利用已有的大数据技术,如何构建机器学习平台
 
    run 方法的实现是一套模板,步骤如下:
 
利用已有的大数据技术,如何构建机器学习平台
 
    每个组件只要实现自己的核心逻辑 execute 方法就可以了。
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐