产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

应用 Spark 解决 Kaggle 数据科学问题

  • 2015-11-18
  • 本文字数:2625 字

    阅读完需:约 9 分钟

如何利用高性能分布式计算平台来解决现实问题一直是人们所关心的话题。近期, comSysto 公司的 Danial Bartl 就分享了该公司研发团队利用 Spark 平台解决 Kaggle 竞赛问题的经历,为 Spark 等平台应用于数据科学领域提供了借鉴。

Danial 提到,comSysto 公司经常会举行一些讨论会,来评估未来的技术和共享以往的经验。在近期,大数据分析类的众包平台 Kaggle 的一道数据科学的挑战赛引起了他们的注意。该挑战赛的内容十分有趣:AXA 提供了一个包含 5 万个匿名驾驶员线路的数据集。本次竞赛的目的是根据路线研发出一个驾驶类型的算法类签名,来表征驾驶员的特征。例如,驾驶员是否长距离驾驶?短距离驾驶?高速驾驶?回头路?是否从某些站点急剧加速?是否高速转弯?所有这些问题的答案形成了表征驾驶员特征的独特标签。

面对此挑战,comSysto 公司的团队想到了涵盖批处理、流数据、机器学习、图处理、SQL 查询以及交互式定制分析等多种处理模型的 Spark 平台。他们正好以此挑战赛为契机来增强 Spark 方面的经验。为了对数据集进行分析并控制投入成本,他们搭建了一个包含只三个节点的集群——每个节点包含一个八核的 i7 处理器和 16GB 的内存。集群运行了携带 Spark 库的 MapR Hadoop,可以有效存储运算的中间结果。接下来,本文就从数据分析、机器学习和结果等三个方面介绍 comSysto 团队解决以上问题的过程。

数据分析

作为解决问题的第一个步骤,数据分析起着非常关键的作用。然而,出乎 comSysto 公司团队意料的是,竞赛提供的原始数据非常简单。该数据集只包含了线路的若干匿名坐标对 (x,y),如 (1.3,4.4)、(2.1,4.8) 和 (2.9,5.2) 等。如下图所示,驾驶员会在每条线路中出发并返回到原点 (0,0),然后从原点挑选随机方向再出发,形成多个折返的路线。

拿到数据后,comSysto 公司的团队有些气馁:只看坐标很难表征一个驾驶员吧?!

信息指纹的定义

因此,在原始数据如此简单的情况,该团队面临的一个问题就是如何将坐标信息转换为有用的机器学习数据。经过认证思考,其采用了建立信息指纹库的方法,来搜集每一个驾驶员有意义和特殊的特征。为了获得信息指纹,团队首先定义了一系列特征:

  • 距离:所有相邻两个坐标欧氏距离的总和。
  • 绝对距离:起点和终点的欧氏距离。
  • 线路中停顿的总时间:驾驶员停顿的总时间。
  • 线路总时间:某个特定线路的表项个数(如果假设线路的坐标值为每秒钟记录的数值,路线中表项的个数就是线路的总秒数)。
  • 速度:某个点的速度定义为该点和前一个点之间的欧氏距离。假设坐标单位为米、坐标之间的记录时间间隔为 1 秒,该定义所给出的速度单位就为 m/s。然而,本次分析中,速度主要用于对比不同点或者不同驾驶员。只要速度的单位相同即可,并不追求其绝对值。对于加速、减速和向心加速度,该说明同样成立。
  • 加速度:加速时,该点和前一点速度的差值
  • 减速度:减速时,该点和前一点速度的差值
  • 向心加速度

其中,v 为速度、r 为曲线路径所形成圆的半径。半径计算需要用到当前点、之前和之后的若干个点的坐标信息。而,向心加速度是对驾驶员高速驾驶风格的体现:该值越大表明转弯的速度越快。

一个驾驶员所有线路的上述特征组成了其简历(信息指纹)。根据经验,城市道路和高速道路上的平均速度是不同的。因此,一个驾驶员在所有线路上的平均速度并没有很多意义。ecoSysto 选择了城市道路、长距离高速道路和乡村道路等不同路线类型的平均速度和最大速度作为了研究对象。

数据统计:根据统计,本次竞赛的数据集中共包含了 2700 个驾驶员,共 54000 个线路的信息。所有的线路共包含 3.6 亿个 X/Y 坐标——以每秒记录一个坐标来算,共包含 10 万个小时的线路数据。

机器学习

在初步的数据准备和特征提取后,ecoSysto 团队开始选择和测试用于预测驾驶员行为的机器学习模型。

聚类

机器学习的第一步就是把路线进行分类——ecoSysto 团队选择 k-means 算法来对路线类型进行自动分类。这些类别根据所有驾驶员的所有路线推导得到,并不针对单个驾驶员。在拿到聚类结果后,ecoSysto 团队的第一感觉就是,提取出的特征和计算得到的分类与路线长度相关。这表明,他们能够作为路线类型的一个指针。最终,根据交叉验证结果,他们选择了 8 种类型——每条路线指定了一种类型的 ID,用于进一步分析。

预测

对于驾驶员行为预测,ecoSysto 团队选择一个随机森林(random forest)算法来训练预测模型。该模型用于计算某个特定驾驶员完成给定路线的概率。首先,团队采用下述方法建立了一个训练集:选择一个驾驶员的约200 条路线(标为“1”——匹配),再加随机选择的其他驾驶员的约200 条路线(标为“0”——不匹配)。然后,这些数据集放入到随机森林训练算法中,产生每个驾驶员的随机森林模型。之后,该模型进行交叉验证,并最终产生Kaggle 竞赛的提交数据。根据交叉验证的结果,ecoSysto 团队选择了10 棵树和最大深度12 作为随机森林模型的参数。有关更多Spark 机器学习库(MLib)中用于预测的集成学习算法的对比可参考 Databrick 的博客

流水线

ecoSysto 团队的工作流划分为了若干用 Java 应用实现的独立步骤。这些步骤可以通过“spark-submit”命令字节提交给 Spark 执行。流水线以 Hadoop SequenceFile 作为输入,以 CSV 文件作为输出。流水线主要包含下列步骤:

  • 转换原始输入文件:将原有的 55 万个小的 CSV 文件转换为一个单独的 Hadoop SequenceFile。
  • 提取特征并计算统计数字:利用以上描述的定义计算特征值,并利用 Spark RDD 变换 API 计算平均值和方差等统计数字,写入到一个 CSV 文件中。
  • 计算聚类结果:利用以上特征和统计值以及 Spark MLlib 的 API 来对路线进行分类。
  • 随机森林训练:选取 maxDepth 和 crossValidation 等配置参数,结合每条线路的特征,开始随机森林模型的训练。对于实际 Kaggle 提交的数据,ecoSysto 团队只是加载了串行化的模型,并预测每条线路属于驾驶员的概率,并将其以 CSV 格式保存在文件中。

结果

最终,ecoSysto 团队的预测模型以 74% 的精度位列 Kaggle 排行榜的 670 位。该团队表示,对于只花 2 天之间就完成的模型而言,其精度尚在可接受范围内。如果再花费一定的时间,模型精度肯定可以有所改进。但是,该过程证明了高性能分布式计算平台可用于解决实际的机器学习问题。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-18 18:003290
用户头像

发布了 268 篇内容, 共 122.3 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

虚谷未来CEO 唐佳娴:让虚拟人“灵” 动起来

阿里云弹性计算

XR 虚拟人

java培训 | API 接口如何实现统一格式返回

@零度

JAVA开发 API

全场景式全流程监控,博睿数据为券商IT运维难题提供范例

博睿数据

数字化转型 博睿数据 数据链DNA 证券行业

直播预告 | 服务网格规模化应用下的 Istio Sidecar 灵活配置实践

阿里巴巴云原生

阿里云 云原生 直播 服务网格 Istio Sidecar

web前端培训 | Tree shaking问题排查

@零度

web前端开发

技术分享| 浅谈IM 产品中的“缩略图”功能

anyRTC开发者

音视频 IM 实时消息 发送图片 缩略图

跨平台应用开发进阶(十四) :uni-app 实现IOS原生APP-本地打包集成极光推送(JG-JPUSH)详细教程

No Silver Bullet

uni-app App 5月月更 IOS原生 JG-JPUSH

汇顶科技GR551x系列开发板已支持OpenHarmony

科技汇

监控告警平台的国产化选择—Rancher与夜莺的集成

Rancher

Kubernetes k8s rancher

Python 编程

兮子

5月月更

亚马逊云基础架构:一场从未停歇的技术创新革命

亚马逊云科技 (Amazon Web Services)

架构 亚马逊云

大数据培训 | 数据仓库构建方法论和实践

@零度

数据仓库 大数据开发

单机GPU云服务器的深度学习训练和预测模型分析

Finovy Cloud

云服务器 GPU服务器

发现一个开源项目优化点,点进来就是你的了

捉虫大师

开源 性能优化 sentinel 5月月更

开发者玩转机器学习不能错过的15篇深度文章!

阿里云大数据AI技术

算法 数据处理 算法框架/工具 机器学习/深度学习 搜索推荐

创建自定义的配置信息

Wk

5月月更

开源夜聊栏目开播:聊聊新晋 CNCF 项目 sealer 背后的故事

阿里巴巴云原生

阿里云 开源 云原生 直播

JavaScript== 和 ===

源字节1号

软件开发 前端开发 后端开发 小程序开发

一种基于事件驱动架构的 SAP 产品集成方案介绍

汪子熙

Kubernetes 云原生 SAP Kyma 5月月更

什么!Sentinel流控规则可以这样玩?

牧小农

sentinel SpringCloud Alibaba

金融街资本携手索信达:助推金融行业数智化转型

索信达控股

洞见科技数据科学家王湾湾:隐私计算助推金融业数字化转型

洞见科技

数据挖掘 金融科技 隐私计算

海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

知识管理在企业创新中的作用

小炮

知识管理

直播预告丨 OpenHarmony 标准系统多媒体子系统之相机解读

OpenHarmony开发者

OpenHarmony

Wallys/QCN9074 /11ax 4x4 6G M.2

wallys-wifi6

wifi6 m.2

青藤《关键信息基础设施增强保护安全实践》论文入选中国科技核心期刊

青藤云安全

信息安全 关键信息 安全保护

数据预处理利器 Amazon Glue DataBrew

亚马逊云科技 (Amazon Web Services)

数据 处理器

土地市场分析,基于Python,基于Javascript,包含核心参数

梦想橡皮擦

5月月更

互联网公司实行目标管理(OKR)五点原则和基础

laofo

互联网 OKR 研发效能 快手 绩效考核

无聊科技正经事周刊(第8期):让子弹飞一会儿,用长期的眼光看中国开源

潘大壮

开源 程序员 周刊 开源中国 科技周刊

应用Spark解决Kaggle数据科学问题_语言 & 开发_张天雷_InfoQ精选文章