福州公司网站设计,网站设计要如何做支付功能,中国域名后缀,济南市城乡建设部网站首页近期#xff0c;comSysto公司分享了该公司研发团队利用Spark平台解决Kaggle竞赛问题的经历#xff0c;为Spark等平台应用于数据科学领域提供了借鉴。主办方提供了一个包含5万个匿名驾驶员线路的数据集#xff0c;竞赛的目的是根据路线研发出一个驾驶类型的算法类签名#x…近期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)然后从原点挑选随机方向再出发形成多个折返的路线。拿到数据后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天之间就完成的模型而言其精度尚在可接受范围内。如果再花费一定的时间模型精度肯定可以有所改进。但是该过程证明了高性能分布式计算平台可用于解决实际的机器学习问题。欢迎加入本站公开兴趣群软件开发技术群兴趣范围包括JavaC/CPythonPHPRubyshell等各种语言开发经验交流各种框架使用外包项目机会学习、培训、跳槽等交流QQ群26931708Hadoop源代码研究群兴趣范围包括Hadoop源代码解读改进优化分布式系统场景定制与Hadoop有关的各种开源项目总之就是玩转HadoopQQ群288410967