“Spark上流式机器学习算法实现”终期检查报告

    自6月底申请项目到现在9月初撰写项目结题报告,眨眼一瞬间两个半月很快成为过去,在这两个半月的时间里,在不断的看文章和调试代码,首先我得感谢和我一起合作的赖百胜同学与我并肩作战,是他给了我一次次战胜bug的勇气,是他让我感觉到整个项目做下来而不觉得孤单。当然还要感谢intel中国研究院的尹老师,是他指导我们一步步由浅入深地学习spark程序设计,给我们指明研究的方向。最后,必须要感谢CSDN能提供此次实习机会,让我们在暑假还能收获这么一段珍贵的实习经历。经历过这次开源实习后,我们团队成员都深深的感受到开源项目的重要性和巨大的意义。

   下面我们通过三个部分来介绍整个项目执行过程中的情况并进行总结。

一、项目实施情况

   在这两个半月的时间里面,我们牢牢按照项目初期安排实施项目的工作。

1、项目背景

   Scala语言是近10年来逐渐发展起来的一种函数式的面向对象语言,语法类似于java,其良好的并发特性受到很多开发者的喜爱。另外目前国外的大型网站如Twitter,Amazon等也宣布其后端程序都用的是Scala语言。可以说Scala语言有巨大的潜力等待着人们发掘。

   Spark是UCBerkeley开发的基于mapreduce算法实现的通用并行计算框架,其主要优点在于job的中间输出结果可以保存在内存中,从而不一定需要读写HDFS,因而spark能更好地适用于数据挖掘与及机器学习等算法。

   Spark streaming是构建在spark上的一个处理流数据的框架,接收到的数据流分成小的时间片,以类似批量处理的方式来处理这部分的数据,非常适合与一些需要历史数据和实时数据联合分析的场合使用。

   MLlib是spark中常用的机器学习算法的实现库,支持四种常见的机器学习问题:二元分类、回归、聚类以及协同过滤。但是spark自带的机器学习算法都是基于已有的数据进行模型训练然后对训练的模型进行预测和评估。如果需要对新的训练数据进行训练, MLlib中的模型需要重新训练,必将消耗很多的较多时间和CPU计算资源。

   随着机器学习领域的发展,近些年来一些在线的机器学习算法也不断涌现,这些在线的机器学习算法在能以较低的计算复杂度对模型中新进入的数据进行学习和改进模型,使得新得到的模型具有更高的预测准确性,在目前基于地理位置的带有推荐功能的软件(如大众点评、淘点点等)中有巨大的应用。我们的项目也即基于这个背景出发,希望能改进MLlib库中的现有的机器学习算法,使其能成为在线的机器学习算法,为开源社区做出一点贡献。

2、熟悉scala和spark开发环境和编程语言

   俗话说的好“工欲善其事,必先利其器”。我们在接到项目后花了大约一周左右的时间搭建开发环境,并购置了由瑞士洛桑理工(EPFL)的Martin Odersky撰写的scala语言的经典教科书《Programmingin Scala》。

   spark官方网站建议在linux平台上运行spark程序,我们借助scala和spark官方网站及其他一些网站的相关操作介绍在实验室的linux服务器上搭建好可以运行spark程序的环境。详见博文《基于linux的spark与scala开发环境搭建》和《基于spark运行scala程序》。在试着运行spark自带的计算π和单词统计的例程时候发现spark的独特的基于内存的分布式计算的特性,这个特性可以使程序的运行速度成倍的提高。为了更好地理解spark底层工作原理,我们还学习了项目导师(尹老师)在小象学院开设的公开课《Spark上机器学习方法的模式与性能》,受益匪浅。

   另外,由于linux上一般是用命令行或者脚本进行操作,执行程序很方便并且效率高,但是写程

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值