一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 968|回复: 34
收起左侧

[DM|ML|计算] R处理数据好慢啊,有什么办法嘛?

[复制链接] |试试Instant~ |关注本帖
victorsterling 发表于 2015-11-15 08:35:12 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
如题,我现在做的一个project数据量有百万条,每条有10左右个attribute,用R读取.csv文件,然后导到model里面跑起来就没完没了了······
现在都快跑了24个小时了,不知道大家有什么好的解决办法没?

换成Python速度会快一些嘛??. 鍥磋鎴戜滑@1point 3 acres

 楼主| victorsterling 发表于 2015-11-16 00:14:57 | 显示全部楼层
是这样,大家有点误解我的意思了。对数据的预处理这块我跑的还好,时间虽然长点,但是还能忍受,主要是我把数据往model里面导之后(比如SVM),就跑起来没完没了了。

如果取一部分随机数据作为样本的话,还是可以跑出来结果的,但是如果用上所有的数据基本就 跑起来就不知道什么时候能停下来了。. more info on 1point3acres.com
. 1point 3acres 璁哄潧
有些人建议我换成java来做ML的工作,不知道大家怎么看?
回复 支持 反对

使用道具 举报

OnlyRabbit 发表于 2015-11-17 16:39:40 | 显示全部楼层
victorsterling 发表于 2015-11-17 06:00. visit 1point3acres.com for more.
K姐有空能甩我一个关于library(sparkR)在Rstudio里面使用的一些sample code的链接嘛?
.1point3acres缃
我其他都弄完 ...

就算使用Spark那也得建立在分布式环境下才有效果吧?如果依然是单机spark也没意义呀。数据量大还放在分布式下跑吧,虽然我也没玩过AWS之类的

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

martinss4040 发表于 2015-11-23 11:13:48 | 显示全部楼层
稍微配置一下多线程,速度会快很多。
另外在数据格式上,不要使用data frame这个已经过时了,太慢了,无法忍受,使用data table吧。下载一个包叫data.table,然后使用fread的函数,读取几G的csv文件瞬间搞定。
最后你使用一些data mining的算法或者模型的话,你去看看h2o这个project里面有没有相应的一些函数。之前我试过randomforest,然后发现原本的那个randomforest包的函数巨慢无比,然后试了下h2o的randomforest之后,快速了不少。 而且h2o也是一个很出名的项目,你自己谷歌看看吧。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

lukeutd 发表于 2015-11-18 09:11:44 | 显示全部楼层
venomtian 发表于 2015-11-15 11:58
这个一般是用apply, lapply, sapply, mapply系列的来代替很多loop的使用吧,当然这个级别的数据找个服务 ...

实际上apply类函数不能加快处理数据的速度 只是美观一些= =
回复 支持 1 反对 0

使用道具 举报

EdwardDeng 发表于 2015-11-15 11:19:16 | 显示全部楼层
1.换更强大的机子,大内存,高性能处理器。
2.向量化处理数据。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
3.date,char等类型数据处理起来是很慢的,没办法。
4.试试用SAS,当然数据导入都会比较慢,但处理起来SAS快点。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| victorsterling 发表于 2015-11-15 11:45:25 | 显示全部楼层
本帖最后由 victorsterling 于 2015-11-15 11:52 编辑
EdwardDeng 发表于 2015-11-15 11:19
1.换更强大的机子,大内存,高性能处理器。.1point3acres缃
2.向量化处理数据。
3.date,char等类型数据处理起来是很慢的 ...

向量化处理数据怎么说?求大神分享?
. visit 1point3acres.com for more.
我的数据只有factor和numeric,所以还好
数据本身就是一个data frame
回复 支持 反对

使用道具 举报

venomtian 发表于 2015-11-15 11:58:19 | 显示全部楼层
victorsterling 发表于 2015-11-15 11:45
向量化处理数据怎么说?求大神分享?

我的数据只有factor和numeric,所以还好

这个一般是用apply, lapply, sapply, mapply系列的来代替很多loop的使用吧,当然这个级别的数据找个服务器比较好吧,我觉得一般学校都会有的

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

EdwardDeng 发表于 2015-11-15 12:01:14 | 显示全部楼层
victorsterling 发表于 2015-11-15 11:45. From 1point 3acres bbs
向量化处理数据怎么说?求大神分享?
. 1point 3acres 璁哄潧
我的数据只有factor和numeric,所以还好

不敢当不敢当!我也是刚入门的**,只是之前有过对R处理数据慢的抱怨。我学R是野路子(基本靠Google),从没有系统地看过R相关书籍,所以之前在处理数据的时候总会有C的影子。 向量化处理,一个简单的例子,我有一个向量 a<-c(1,2,3,4), 如果我想double这个向量,直接向量化处理只需要 a <- 2*a, 而以前我会傻傻的用单个元素处理(当然不是这么简单的例子,这个例子傻子也不会用for循环的呀),for(i in i:4){a <- 2*a}
     现在深知系统了解R的重要性,所以在看这本《The Art of R Programming》,内容可能比较浅,但绝对是好书,读下来获益良多。 与君共勉!

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

EdwardDeng 发表于 2015-11-15 12:05:53 | 显示全部楼层
刚刚的回复有些问题,明明编辑好的,怎么上来以后就变了。。。望海涵!
回复 支持 反对

使用道具 举报

demonhunter 发表于 2015-11-16 00:45:02 | 显示全部楼层
本帖最后由 demonhunter 于 2015-11-16 00:50 编辑
victorsterling 发表于 2015-11-16 00:14
是这样,大家有点误解我的意思了。对数据的预处理这块我跑的还好,时间虽然长点,但是还能忍受,主要是我把 ...

用sklearn+Libsvm

http://scikit-learn.org/stable/modules/svm.html#svm
不建议用Java,Libsvm是世界上最强大的SVM库,是用C++优化好的。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

zwh_rsc 发表于 2015-11-16 04:28:04 | 显示全部楼层
不要用rbf kernerl哈哈哈

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

gamespeed 发表于 2015-11-16 05:06:25 | 显示全部楼层
如果问题仅仅是跑的慢(而不是比如代码里有某些bug),可以考虑搞个AWS扔上去跑,而且可以搞多个机器同时并行跑……一顿午饭的钱估计够你跑好一阵子了。另外他们给学校学生可能还有优惠或者免费额度之类

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| victorsterling 发表于 2015-11-16 11:25:40 | 显示全部楼层
demonhunter 发表于 2015-11-16 00:45
用sklearn+Libsvm. From 1point 3acres bbs

http://scikit-learn.org/stable/modules/svm.html#svm

所以用python喽?
回复 支持 反对

使用道具 举报

RARARAAAAA 发表于 2015-11-16 11:27:16 | 显示全部楼层
用readr,或者data.table啊,曾经用R读过最大的数据300K行, 2000列也就几分钟

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| victorsterling 发表于 2015-11-16 11:31:23 | 显示全部楼层
本帖最后由 victorsterling 于 2015-11-16 11:54 编辑
RARARAAAAA 发表于 2015-11-16 11:27
用readr,或者data.table啊,曾经用R读过最大的数据300K行, 2000列也就几分钟

然而我是一百万多行
话说,你说的是用data.table去读取数据或者是merge什么的吧?
. 1point3acres.com/bbs
我说的是将数据导入model里面跑,用data.table貌似影响不大?

求详细解释下!!!

. 1point3acres.com/bbs
回复 支持 反对

使用道具 举报

 楼主| victorsterling 发表于 2015-11-16 11:32:08 | 显示全部楼层
. 鍥磋鎴戜滑@1point 3 acres
K姐好像分享了什么很厉害的东西,我去研究下先
回复 支持 反对

使用道具 举报

RARARAAAAA 发表于 2015-11-16 12:07:01 | 显示全部楼层
victorsterling 发表于 2015-11-16 11:31. 1point3acres.com/bbs
然而我是一百万多行
话说,你说的是用data.table去读取数据或者是merge什么的吧?

你说的是哪种模型啊?如果是普通的线性模型的话可以试一下fastlm或者biglm
如果是machine learning 的模型的话可以试试h2o,里面常用的方法,像是gbm和rf都有也比普通的快一些,
再厉害点就要用到map reduce或者matrix partition了,对于matrix partition R 里面有专门的包,但是我忘记是什么的,具体我也只是看过一遍别人怎么做,本来要跑20小时的rf,5小时就搞定了,我去找一找找到告诉你。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

RARARAAAAA 发表于 2015-11-16 12:13:59 | 显示全部楼层
RARARAAAAA 发表于 2015-11-16 12:07
你说的是哪种模型啊?如果是普通的线性模型的话可以试一下fastlm或者biglm
如果是machine learning 的模 ...

找到了,叫snowfall,你可以研究一下
回复 支持 反对

使用道具 举报

 楼主| victorsterling 发表于 2015-11-16 12:16:55 | 显示全部楼层
RARARAAAAA 发表于 2015-11-16 12:13
找到了,叫snowfall,你可以研究一下

大神能甩个链接不?.1point3acres缃

我用的那些machine learning的model,比如svm regression tree啥的
回复 支持 反对

使用道具 举报

RARARAAAAA 发表于 2015-11-16 12:19:18 | 显示全部楼层
victorsterling 发表于 2015-11-16 12:16
大神能甩个链接不?

我用的那些machine learning的model,比如svm regression tree啥的

https://cran.r-project.org/web/packages/snowfall/snowfall.pdf. Waral 鍗氬鏈夋洿澶氭枃绔,
https://cran.r-project.org/web/packages/h2o/h2o.pdf

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

demonhunter 发表于 2015-11-16 13:41:15 | 显示全部楼层
R最靠谱的包我觉得还是e1071
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-3 10:28

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表