论文部分内容阅读
支持向量(Support Vector Machine, SVM)是数据挖掘中基于统计学习的分类算法,其优点体现在很少出现过度拟合、对于特征过多造成维数灾难不明显、收敛解是全局最优解以及灵活运用核函数特点,但SVM无法适用于大样本系统,在使用SVM对较大数据集进行分类训练时,训练速度特别慢,无法在有效的时间内得到训练结果或者训练模型;尤其是对于针对大规模数据集进行分类训练并进行预测时,其得到训练模型的代价是十分高昂的。针对大规模数据集处理,并行处理是一种提高数据处理的有效方法,基于Hadoop的并行存储处理数据是目前处理大规模数据集的一种可行的方案,并行处理SVM是指将数据集划分成子数据集的方式来迭代训练这些数据集以及由于数据集训练得到的支持向量进行逐次训练得到SVM训练的训练模型。本论文结合Hadoop的分布式存储以及并行计算的特点来设计和实现基于Hadoop的并行SVM训练,在不降低训练精度的情况下改善SVM针对大数据的训练时间效率。本论文解决的几个主要问题是首先是需要应对极端情况对数据集进行简单预处理,使得SVM训练集各个类别的数据分布比较均匀,来避免在Hadoop上训练SVM时在极端情况下不能得到训练结果的情况;其次是基于Hadoop的并行SVM训练是通过迭代的方式去训练的,所以需要使用相应的迭代停止条件去结束并行SVM训练算法的训练,本文结合停机准则条件去设计和实现判断整个并行SVM的训练进度:其他的问题则由于Hadoop的MapReduce本身的计算特点,即Map和Reduce计算都是只能处理一条记录以及迭代过程中会出现上一次结果的输出为下一次的输入,导致需要解决重新设计散列、在训练数据集上添加额外信息、转换输出格式以及指定特定的输出文件或文件夹等问题。