前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Spark机器学习实战】 ML Pipeline 初探

【Spark机器学习实战】 ML Pipeline 初探

作者头像
fishexpert
发布2018-11-21 16:00:22
8400
发布2018-11-21 16:00:22
举报

人类经历了从农业革命到工业革命,再到信息革命。信息革命,起源于互联网的诞生,它将会经历三个阶段的跃迁。第一阶段,人与人的连接(网络的雏形),比如:Facebook;第二个阶段,让人们生活更便捷(移动互联网、物联网);第三个阶段,让人们生活更智能(机器人,无人汽车等)。机器学习作为人工智能的一个分支,它更注重解决实际问题,所以,得到工业界的大力推广,目前已经应用于多个领域,比如个性化推荐,金融反作弊等。

  • 数据科学家 vs 软件工程师的代沟
  • 数据科学家 vs 软件工程师的桥梁
  • Why ML Pipeline 是Spark机器学习的未来?
  • Spark机器学习库

目前,spark提供两套算法库,分别是:mllib和ml。其中,Mllib是基于spark 原生RDD开发,从学习的角度来看,只要你有机器学习基础,熟悉api就可以很容易上手。但是,构建机器学习系统是一个复杂的过程,从原始数据的清洗、解析,再到特征的提取,模型的构建,模型的优化,是一个循环迭代的过程。尤其是,多模型的融合,基于mllib编写的代码不易维护,迭代速度减慢。所以,Spark开发者,受到目前优秀的python机器学习库—scikit-learn 的启发,从Spark 1.2版本以后,开始基于DataFrame,开发一套高级的api,将构建机器学习系统,做成一个流水线 Pipeline。一个Pipeline由多个PipelineStage构成,每个PipelineStage完成一个任务。

  • What ML pipeline ?
  • DataFrame

熟悉Spark SQL的都了解,sparkSQL的核心 DataFrame+Schema。那么为什么ML会采用DataFrame作为基础的存储结构,个人认为,有两个原因:1.数据处理的本质是,做数学集合操作,DataFrame是类似传统数据库的二维表格,操作方便。Spark SQL 已经可以支持多种数据类型的操作,这样可以很好的和机器学习融合。对于机器学习前期的准备工作,数据预处理、清洗、数据分析很方便。2.构建pipeline机器学习工作流,多工程师、多数据科学家可以更好的协作。DataFrame可以保存清洗完毕的数据、提取的特征数据、各个训练模型。协作更方便,更容易迭代、优化模型,尝试更多的模型算法。

  • Transformer

它的字面意思,就是转换的意思,比如,可以把一个不含有预测标签的“测试数据集”(dataframe)转换为包含预测标签的数据集(dataframe)。一般,就是为DataFrame添加一列或者多列,它是一个PipelineStage。

  • Estimator

它是一个抽象的概念,其实,就是一个机器学习算法在数据上fit或者train的过程。Estimator实现了一个fit函数,fit()函数接收 Dataframe 产生一个Model。比如:LR算法就是一个Estimator,它可以通过fit()函数产生一个LR模型。它是一个模型,因此也是一个Transformer。

  • Parameter

Transformer和Estimator中的参数,是公用一套api。这个就是由Parameter共同提供。

  • PipeLine

构建一个机器学习工作流,首先要设计各个pipelineStage的处理逻辑,也就是任务的切分。比如,数据的清洗、特征的抽取等,然后,有序的组织各个pipelineStage,这样就创建了一个pipeline。

  • 数据集说明

数据集来自stackoverflow公开的数据集,内容为stackoverflow网站上帖子的数据,格式为XML格式。

  • 标题-文章标题
  • 主体-文章文本
  • 标签-文章的标签列表
  • 实战演示
  • step 1 import依赖库
  • step 2 加载数据集&XML解析
  • step 3 创建Dataframe
  • step 4 准备训练和测试数据集
  • step 5 训练LR模型
  • step 6 测试模型
  • step 7 评估模型
  • 总结

通过本例可以了解ML Pipeline的工作流程,对于刚接触spark 机器学习的读者,建议先从MLlib学起,MLlib是基于原生的RDD,相对好理解,也容易上手。对于已经熟悉MLlib的读者,构建复杂机器学习系统时,尝试ML Pipeline ,因为它集成了从数据清洗,到特征抽取,再到模型训练,模型保存的各个组件,结构和逻辑很清晰,也有利于算法模型工程师和ETL工程师的更好协作。

  • 参考
  • spark 1.6.2 官方文档,spark 2016 summit 会议资料
  • https://fullstackml.com/2015/10/29/beginners-guide-apache-spark-machine-learning-scenario-with-a-large-input-dataset/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习与数据挖掘实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档