论文部分内容阅读
随着云计算与分布式集群技术的发展,大数据概念在容量、价值等方面都有了更广的扩展和延伸,机器学习技术近年来也得到了前所未有的重视。本文主要针对传统数据挖掘算法无法处理海量数据,近年来比较流行的MapReduce对机器学习算法不能有效并行化运行等问题,提出基于Spark来构建一个用于大规模机器学习的平台,该平台不仅能够兼容Hadoop集群利用现有计算资源灵活高效地处理海量数据,而且还具有良好的可扩展性,能够满足各类机器学习任务场景的需求。本文完成了如下几个方面的工作:论文主要针对机器学习任务中的常见场景,基于Spark平台设计和实现了其中经典的算法,包括并行化的线性回归、支持向量机、KMeans聚类算法,基于图计算模型抽象的矩阵分解、PageRank算法,以及数据流KMeans聚类算法。算法工作均以大规模机器学习的相关基础理论为有效支持,充分体现平台的运行效率和可扩展性;在算法设计过程中,本文针对大数据场景对经典算法进行一些改进优化工作。例如,基于集成学习理论方法,采用Bagging策略来提高模型的稳定性;为了提升计算效率,引入了基于采样的子梯度模型优化方法;为适应海量数据下评分数据矩阵特别稀疏的问题,提出基于图计算模型的矩阵分解算法。另外,在实现经典机器学习算法时,采用面向对象的设计思路,利用工厂和策略等设计模式来层次封装,方便平台扩展更多的功能和算法。平台遵循Lambda架构设计,分成三个层次,分别是:批量数据层、服务层以及数据流层。批量数据层主要采用Spark和Hadoop混合设计,完成对大批数据的批量建模;服务层对批量数据层的模型进行索引,以应对实时的并发请求;数据流层主要针对流式数据场景,完成数据的实时建模。请求将结合对数据的批量建模和实时建模,合并输出最终结果。最后,在平台的实验结果评估中,论文就本文工作分别对比了串行算法、基于Hadoop平台实现的算法,在运行时间、加速比以及吞吐量等实验中都有着突出的性能表现,证明了本文工作的有效性与实用性。