首页 > 业内资讯 > 大数据工具比较:R语言和Spark谁更胜一筹?

大数据工具比较:R语言和Spark谁更胜一筹?

时间:2015-12-09 | 来源:数据挖掘与数据分析 | 阅读:193

话题: 数据挖掘与数据分析

分析的目标是得到一个可以从像素数值中识别数字是几的模型。

选择这个数据集的论据是,从数据量上来看,实质上这算不上是一个大数据的问题。

对比情况

针对这个问题,机器学习的步骤如下,以得出预测模型结束:

  • 在数据集上进行主成分分析和线性判别式分析,得到主要的特征。(特征工程的步骤)[译者注百度百科传送门主成分分析线性判别式分析]。

  • 对所有双位数字进行二元逻辑回归,并且根据它们的像素信息和主成分分析以及线性判别式分析得到的特征变量进行分类。

  • 在全量数据上运行多元逻辑回归模型来进行多类分类。根据它们的像素信息和主成分分析以及线性判别式分析的特征变量,利用朴素贝叶斯分类模型进行分类。利用决策树分类模型来分类数字。

在上述步骤之前,我已经将标记的数据分成了训练组和测试组,用于训练模型和在精度上验证模型的性能。

大部分的步骤都在R语言和Spark上都运行了。详细的对比情况如下,主要是对比了主成分分析、二元逻辑模型和朴素贝叶斯分类模型的部分。

主成分分析

主成分分析的主要计算复杂度在对成分的打分上,逻辑步骤如下:

  • 通过遍历数据以及计算各列的协方差表,得到KxM的权重值。(K代表主成分的个数,M代表数据集的特征变量个数)。

  • 当我们对N条数据进行打分,就是矩阵乘法运算。

  • 通过NxM个维度数据和MxK个权重数据,最后得到的是NxK个主成分。N条数据中的每一条都有K个主成分。

在我们这个例子中,打分的结果是42000 x 784的维度矩阵与784 x 9的矩阵相乘。坦白说,这个计算过程在R中运行了超过4个小时,而同样的运算Spark只用了10秒多

矩阵相乘差不多是3亿次运算或者指令,还有相当多的检索和查找操作,所以Spark的并行计算引擎可以在10秒钟完成还是非常令人惊讶的。

我通过查看前9个主成分的方差,来验证了所产生的主成分的精度。方差和通过R产生的前9个主成分的方差吻合。这一点确保了Spark并没有牺牲精度来换取性能和数据转换上的优势。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网