怎样基于Spark举办用户画像? 架构&设计

来源:互联网 / 作者:SKY / 2016-07-27 19:43 / 点击:
假如你面临5万个匿名驾驶员线路的数据集,你知道怎样按照蹊径研发出一个驾驶范例的算法类署名,来表征驾驶员的特性吗?本文就从数据说明、呆板进修和功效等三个

近期,comSysto公司分享了该公司研发团队操作Spark平台办理Kaggle比赛题目的经验,为Spark等平台应用于数据科学规模提供了小心。

主办方提供了一个包括5万个匿名驾驶员线路的数据集,比赛的目标是按照蹊径研发出一个驾驶范例的算法类署名,来表征驾驶员的特性。譬喻,驾驶员是否长间隔驾驶?短间隔驾驶?高速驾驶?转头路?是否从某些站点急剧加快?是否高速转弯?全部这些题目的谜底形成了表征驾驶员特性的奇异标签。

面临此挑衅,comSysto公司的团队想到了涵盖批处理赏罚、流数据、呆板进修、图处理赏罚、SQL查询以及交互式定制说明等多种处理赏罚模子的Spark平台。他们正好以此挑衅赛为契机来加强Spark方面的履历。接下来,本文就从数据说明、呆板进修和功效等三个方面先容comSysto团队办理以上题目的进程。

数据说明

作为办理题目的第一个步调,数据说明起着很是要害的浸染。然而,出乎comSysto公司团队料想的是,比赛提供的原始数据很是简朴。该数据集只包括了线路的多少匿名坐标对(x,y),如(1.3,4.4)、(2.1,4.8)和(2.9,5.2)等。如下图所示,驾驶员会在每条线路中出发并返回到原点 (0,0),然后从原点挑选随机偏向再出发,形成多个折返的蹊径。

奈何基于Spark举行用户画像?

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

信息指纹的界说

因此,在原始数据云云简朴的环境,该团队面对的一个题目就是怎样将坐标信息转换为有效的呆板进修数据。颠末认证思索,其回收了成立信息指纹库的要领,来汇集每一个驾驶员故意义和非凡的特性。为了得到信息指纹,团队起首界说了一系列特性:

间隔:全部相邻两个坐标欧氏间隔的总和。

绝对间隔:出发点和终点的欧氏间隔。

线路中搁浅的总时刻:驾驶员搁浅的总时刻。

线路总时刻:某个特定线路的表项个数(假如假设线路的坐标值为每秒钟记录的数值,蹊径中表项的个数就是线路的总秒数)。

速率:某个点的速率界说为该点和前一个点之间的欧氏间隔。假设坐标单元为米、坐标之间的记录时距离断为1秒,该界说所给出的速率单元就为m/s。然而,本次说明中,速率首要用于比拟差异点可能差异驾驶员。只要速率的单元沟通即可,并不追求其绝对值。对付加快、减速和向心加快度,该声名同样创立。

加快度:加快时,该点和前一点速率的差值

减速率:减速时,该点和前一点速率的差值

向心加快度:

奈何基于Spark举行用户画像?

个中,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文件作为输出。流水线首要包括下列步调:

奈何基于Spark举行用户画像?

转换原始输入文件:将原有的55万个小的CSV文件转换为一个单独的Hadoop SequenceFile。

提取特性并计较统计数字:操作以上描写的界说计较特性值,中国站长站,并操作Spark RDD调动API计较均匀值和方差等统计数字,写入到一个CSV文件中。

计较聚类功效:操作以上特性和统计值以及Spark MLlib的API来对蹊径举办分类。

随机丛林实习:选取maxDepth和crossValidation等设置参数,团结每条线路的特性,开始随机丛林模子的实习。对付现实Kaggle提交的数据,ecoSysto团队只是加载了串行化的模子,并猜测每条线路属于驾驶员的概率,并将其以CSV名目生涯在文件中。

功效

最终,ecoSysto团队的猜测模子以74%的精度位列Kaggle排行榜的670位。该团队暗示,对付只花2天之间就完成的模子而言,其精度尚在可接管范畴内。假如再耗费必然的时刻,模子精度必定可以有所改造。可是,该进程证明白高机能漫衍式计较平台可用于办理现实的呆板进修题目。

阅读延展

1
3