R数据预处理和并行计算简介

简介:

R语言数据预处理有很多包,但由于历史原因,部分包读写数据、数据转化速度较慢,本文主要介绍部分常用的高效的R语言数据预处理包。推荐使用Revolution Analytics公司提供的R版本,同时Rstudio的免费IDE也非常适合编写R脚本程序。 

  • 快速读取数据readr包 

基于C++的SourceFileSourceStringSourceRaw的文件API接口,避免了数据的复制和分配,能更加快速的读取格式化的数据。同时,readr将读取的数据列转化为多种不同类型的vector,如BigInteger (64 bit)和Time类型。 

读取文件时建议使用read_csv()和write_csv() ,可以加快IO性能。

  • 使用dplyr和tidyr清洗数据 

dplyr相比plyr更快更高效,能和tidyr一起高效清洗数据。同时也能读取数据库的数据、处理超过内存容量的数据。dplyr能对数据进行行和列的筛选select、group、combine(类似sql中的左连接(保存左表中的数据行、右表中未出现的数据行删除)、右连接、全连接、内连接等)、summarise等。除此之外R采用%>%来对于数据进行类似linux中的pipline处理,能保证数据处理更高效,可读性更好。 

tidyr能有效整理数据,经常和dplyr配合使用。更多详细的函数命令可以参考tidyR和dplyr用法

  • 并行计算包doParallel

使用randomForest等包时,由于需要生成多个CART树,需要较大的计算量和内存,通常可使用foreach、doParallel、parallel等包进行处理数据。比如使用如下代码。 

library(randomForest) 

library(foreach) 

 cl <- makeCluster(4) 

 registerDoParallel(cl) 

 rf .model<- foreach(ntree=rep(250, 4),  .combine=combine, 

          .packages='randomForest') %dopar% 

          randomForest(x = data.matrix(train[,feature.names]),y= train$target,ntree=ntree) 

stopCluster(cl) 

  • 安装OpenBLAS、revolutionary R的 MKL加速矩阵运算 

通常R语言采用单个CPU进行矩阵运算,这样对于计算密集型的任务很慢,可以安装OpenBLAS、MKL等包进行多核的矩阵运算。比如Revolution R就提供了专门的MKL安装包,推荐https://mran.revolutionanalytics.com/download/#download,可以加速矩阵运算。 

  • 使用openMP和CPP编写R包 

R语言底层的代码可以基于C\C++\Fortran语言进行计算,并打包为R packages进行使用,应此对于很多需要并行计算的R语言程序,可以使用gcc、openMP等支持共享内存系统中的的多核并行包,可以非常快的加速计算。

参考资料:

(1)http://www.revolutionanalytics.com/get-revolution-r

(2)http://www.r-bloggers.com/r-r-with-atlas-r-with-openblas-and-revolution-r-open-which-is-fastest/

(3)http://www.r-bloggers.com/lang/chinese/1131

目录
相关文章
|
8天前
|
存储 人工智能 PyTorch
基于PyTorch/XLA的高效分布式训练框架
基于PyTorch/XLA的高效分布式训练框架
18 2
|
27天前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据处理到性能优化
在数据驱动的时代,构建高效的机器学习模型已经成为解决复杂问题的关键手段。本文将详细讨论如何通过有效的数据处理、特征工程、模型选择以及性能优化策略来构建一个高效的机器学习模型。我们将重点关注数据处理的重要性,特征选择的影响,以及如何通过调整模型参数和采用集成学习方法来提高模型的性能。我们的目标是为读者提供一套实用的指南,帮助他们在构建自己的机器学习模型时能够更加高效和有效。
|
2天前
|
分布式计算 并行计算 数据处理
NumPy的并行与分布式计算实践
【4月更文挑战第17天】本文探讨了如何使用NumPy进行并行和分布式计算以提升效率。介绍了利用`numexpr`加速多核CPU计算,设置`NUMPY_NUM_THREADS`环境变量实现多线程,并通过Dask和PySpark进行分布式计算。Dask允许无缝集成NumPy,而PySpark则将NumPy数组转换为RDD进行并行处理。这些方法对处理大规模数据至关重要。
|
3天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从特征工程到模型调优
【4月更文挑战第16天】 在数据驱动的时代,机器学习已成为解决复杂问题的关键工具。本文旨在分享一套实用的技术流程,帮助读者构建高效的机器学习模型。我们将重点讨论特征工程的重要性、选择合适算法的策略,以及通过交叉验证和网格搜索进行模型调优的方法。文章的目标是为初学者提供一个清晰的指南,同时为有经验的实践者提供一些高级技巧。
|
13天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第6天】本文聚焦于机器学习模型的开发流程,旨在提供一套系统的方法论以构建出更高效的模型。我们将深入探讨数据预处理的重要性,特征工程的策略,以及如何通过交叉验证和超参数调优来提升模型性能。文章不仅涉及理论分析,还包括了实际案例的代码实现,为读者呈现一个从数据处理到模型部署的完整蓝图。
13 0
|
29天前
|
机器学习/深度学习 数据采集 算法
构建高效的机器学习模型:从数据预处理到模型优化
【2月更文挑战第30天】 在机器学习的实践中,构建一个高效且准确的预测模型是每个数据科学家的核心任务。本文将深入探讨如何通过一系列策略性步骤来提升模型的性能,包括数据预处理、特征选择、模型训练以及超参数调优。我们将讨论各种技术方法,并通过实例展示这些策略是如何在实际问题中应用的。目标是为读者提供一套实用的工具和思路,以应对机器学习项目中遇到的挑战。
|
28天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【2月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过有效的数据处理策略、合理的特征工程、选择适宜的学习算法以及进行细致的参数调优来提升模型性能。我们将剖析标准化与归一化的差异,探索主成分分析(PCA)的降维魔力,讨论支持向量机(SVM)和随机森林等算法的适用场景,并最终通过网格搜索(GridSearchCV)来实现参数的最优化。本文旨在为读者提供一条清晰的路径,以应对机器学习项目中的挑战,从而在实际应用中取得更精准的预测结果和更强的泛化能力。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【2月更文挑战第24天】 在机器学习领域,构建一个高效的模型并非易事。它不仅要求算法的选择得当,更在于数据处理与模型优化的精细操作。本文将深入探讨机器学习模型构建的关键步骤,包括数据预处理的重要性、特征工程的策略、选择合适的学习算法、以及模型评估与调优的技巧。通过实例分析与经验分享,我们旨在为读者提供一个清晰、系统的构建高效机器学习模型的指南。
9 0
|
1月前
|
算法 数据处理 异构计算
CatBoost高级教程:分布式训练与大规模数据处理
CatBoost高级教程:分布式训练与大规模数据处理【2月更文挑战第15天】
227 14
|
8月前
|
机器学习/深度学习 并行计算 算法
PyTorch并行与分布式(一)概述
PyTorch并行与分布式(一)概述
129 0