2017年发表在计算机工程于应用。
摘要
总结和分析了传统机器学习算法在海量数据场景霞出现的若干问题,基于当代并行机分类回顾了国内外并行机器学习算法的研究现状,并归纳总结了并行机器学习算法在各种基础体系下存在的问题。
引言
传统机器学习算法在海量数据下计算代价高、延迟性高、无法处理所有数据,从根本上无法处理大规模海量数据。因此大数据环境下需要并行化机器学习算法。
传统机器学习的问题
机器学习算法共分为5类:
- 聚类算法,采用各种距离度量技术将一系列的数据点划分到K类中,划分后的聚类结构具有类内相似、类间差距最大的特点
- 分类算法,事先按照一定的标准给一组对象集合进行分类,赋予标签,训练出学习模型,利用该模型对未知对象进行分类
- 回归算法,综合考虑整个数据集中因变量和自变量之间的关系进行建模,进而利用模型对给定的自变量进行计算得到预测值
- 关联规则算法,在整个事务型数据中分析同时出现次数较多的频繁项集,并将出现次数满足一定阈值的频繁项集作为关联项集
- 降维算法,降低计算复杂度利用各种度量技术将高维空间的数据转换成低维空间中的数据
存在问题:内存有限,无法将所有数据载入内存迭代计算;单计算机计算能力有限;串行执行需要花费大量时间。
并行机器学习算法
基于多核与众核的并行机器学习算法
多核与众核是指在一颗处理器中集成两个或者多个完整的计算内核。可以激发线程开销,因此采用中粒度与细粒度的任务划分策略。
基于集群的并行机器学习算法
集群是独立的计算机通过网络连接起来。由于采用分布式计算会增加节点的通信开销和数据迁移延迟,所以一般采用粗粒度的任务划分策略,将计算任务分配到各个集群节点并行执行。编程模型有MapReduce。
基于集群形式实现并行化机器学习算法主要用三种形式:
- 消息传递接口MPI,基于MPI的分布式计算存在开发复杂扩展性不好等问题
- MapReduce并行编程模型和分布式计算框架,有并行K近邻、并行朴素贝叶斯、并行决策树、并行Apriori算法
- Spark,内存计算的大数据并行计算框架。
基于Spark的机器学习算法的并行化研究还未全部展开,但国内外研究者已经在高度关注Spark平台并开发出一些并行机器学习算法。
加州大学伯克利分校Zaharia等基于Spark平台提出一种并行化逻辑回归算法。讲逻辑回归中重复使用的数据集缓存在内存中,并通过分布式计算梯度下降的方法优化参数。南京大学Liu等基于Spark平台利用SparkR语言包设计并实现了多项式贝叶斯分类、SVM和Logistics Regress并行化算法。南京大学Qiu等基于Spark的RDD编程模型提出一种并行的Apriori算法。
基于混合体系结构的并行机器学习算法
总结
以Spark异构云平台作为机器学习算法并行化的计算平台,为针对大规模数据处理的机器学习算法并行化创造了有利的条件。由于Spark集群的新颖性,基于Spark异构云平台的机器学习算法并行化研究较少,是一个研究的重要方向。