Just let it flow ChristopherShen 1.该不该换python? 就算换成Python,现在单机最常用的就是pandas库,其效率比data.table差一点,网上很多benchmark,你可以去搜一下,<https://github.com/Rdatatable/data.table/wiki/Benchmarks-:-Grouping> ,<https://stackoverflow.com/questions/8991709/why-are-pandas-merges-in-python-faster-than-data-table-merges-in-r> 所以我感觉没有必要。如果你想走工程路线或者玩一玩深度学习(不过R接口也完善了<https://tensorflow.rstudio.com/>),是应该学学Python。 2. 关于循环很慢 并不是因为数据存储的问题吧,根本问题是R是动态语言,运行时编译,肯定没有编译完再运行的语言(java,c/c++)快。向量存储是有很多好处,具体请见这篇blog: <https://privefl.github.io/blog/why-loops-are-slow-in-r/> xieshichen 建议不错的,我最近在研究h2o. dplyr 与数据库交互现在独立成了dbplyr, 原理是将dplyr的操作翻译成sql然后到服务器上执行(或者返回结果)。 我觉得可行的方案: 1、服务器处理sql 通过dbplyr将数据操作提交服务器,然后将最终的数据结果导出再来建模。这种方式避免将全量数据导入内存,只将最终的结果导入建模。 2、如果单机内存够用 使用data.table处理原始数据,将数据分块计算,中间结果可以用 fst 格式保存,fst目前R dataframe最快的写出方式:<https://github.com/fstpackage/fst> 然后将所有的块结果合并,用于建模。基于树的模型 lightgbm/xgboost 可以试试. 3、用于建模的数据单机都装不下 那这就需要spark了,但是需要你们公司的技术部门支持。 如果模型复杂,可以考虑h2o+spark = sparkling water. 对应的R包为 rsparkling,我贡献的demo: <https://github.com/h2oai/rsparkling/blob/master/inst/examples/using-sparkling-water-in-YARN.Rmd> spark R接口包,建议使用 sparklyr 以上是我的拙见,欢迎大家讨论。
ChristopherShen 前两天试图跑一个随机森林模型,也就是十几个特征,但是有50万行数据,结果就显示: Error: cannot allocate vector of size 2.0 Gb
HarryZhu-7harryprince data.table 配置 手动 gc 可以处理绝大部分单机的运算,比如特征准备工作,性能目前业界最优。 分布式场景处理一些更加low level 的原始数据可以用 sparklyr,学习成本低。 data.table + sparklyr 基本上可以实现大部分特征清洗的工作,机器学习模型可以考虑 keras/mxnet/xgboost/mlr 这些
ryo @just let it flow#428299 不过python在web driver网站编程方面就非常有效率哦。? 僕使用shiny编写了好几个应用(binary.Com Interview Question),首先就频频遇到connection error,频频断网线... 好像是shiny pro才不会出现断网问题哦。 打算之后使用reticulate程序包调用python程序包与代码,个人认为肯定会更有效率哦。