R 中使用 randomForest 进行内存高效预测

2024-05-10

TL;DR我想知道使用基于大型数据集(数百个特征、数十万行)构建的随机森林模型执行批量预测的内存有效方法。

Details:

我正在处理一个大型数据集(内存中超过 3GB),并且想要使用以下方法进行简单的二进制分类randomForest。由于我的数据是专有的,我无法共享它,但可以说以下代码运行

library(randomForest)
library(data.table)

myData <- fread("largeDataset.tsv")
myFeatures <- myData[, !c("response"), with = FALSE]
myResponse <- myData[["response"]]

toBePredicted <- fread("unlabeledData.tsv")

rfObj <- randomForest(x = myFeatures, y = myResponse, ntree = 100L)

predictedLabels <- predict(rfObj, toBePredicted)

然而,它需要几 GB 的内存。

我知道我可以通过关闭一堆邻近度和重要性度量来节省内存keep.*论点:

rfObjWithPreds <- randomForest(x = myFeatures,
                               y = myResponse,
                               proximity = FALSE,
                               localImp = FALSE,
                               importance = FALSE,
                               ntree = 100L,
                               keep.forest = FALSE,
                               keep.inbag = FALSE,
                               xtest = toBePredicted)

然而我现在想知道这是否是获得预测的最有效的内存方式toBePredicted。我可以做到这一点的另一种方法是并行种植森林并积极执行垃圾收集:

library(doParallel)
registerDoParallel(ncores = 5)

subForestVotes <- foreach(subForestNumber = iter(seq.int(5)),
                          .combine = cbind) %dopar% {
    rfObjWithPreds <- randomForest(x = myFeatures,
                               y = myResponse,
                               proximity = FALSE,
                               localImp = FALSE,
                               importance = FALSE,
                               ntree = 100L,
                               keep.forest = FALSE,
                               keep.inbag = FALSE,
                               xtest = toBePredicted)
   output <- rfObjWithPreds[["test"]][["votes"]]
   rm(rfObjWithPreds)
   return(output)
}

有谁有更聪明的方法来有效预测toBePredicted?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中使用 randomForest 进行内存高效预测 的相关文章

随机推荐

  • 云函数定时器

    我需要创建一个云函数来启动一个计时器 该计时器在 X 分钟后调用另一个云函数 它应该重复此 N 次 除非在达到 N 之前被告知停止 这可能吗 我一直在读到您只能使用外部 cron 作业或应用程序引擎来设置计时器 有可能以这种方式做我想做的事
  • 将 C++ 字符串发送到 C# 字符串。互操作性

    我是进程间通信的新手 需要一些帮助 我希望能够将字符串从 C 程序发送到 C 程序 我的问题是生成的字符串是乱码 这是我的代码 发送程序 C void transmitState char myStr HWND hWnd FindWindo
  • Python ctypes,C++ 对象销毁

    考虑以下 python ctypes c 绑定 C class A public void someFunc A A new return new A void A someFunc A obj obj gt someFunc void A
  • 如何使用 PHP 调整缩略图大小时提高图像质量?

    我在网上找到了这个脚本 它可以从图像中创建缩略图 但创建的缩略图质量很差 如何提高图像的质量 有没有更好的方法来创建缩略图 如果有的话 您能给我指点一下如何使用 PHP 创建缩略图的教程吗 这是下面的代码
  • 如何提取括号(圆括号)之间的文本?

    我有一根绳子User name sales 我想提取括号之间的文本 我该怎么做 我怀疑子字符串 但我无法弄清楚如何阅读 直到右括号 文本的长度会有所不同 如果您希望远离正则表达式 我能想到的最简单的方法是 string input User
  • 如何将数字格式化为货币字符串

    我想用 JavaScript 格式化价格 我想要一个需要一个函数float作为参数并返回string格式如下 2 500 00 我怎样才能做到这一点 国际数字格式 https developer mozilla org en US docs
  • 如何在 Swiftui 中使列表项行内的按钮不可点击?

    有没有办法让列表的整行都不可点击 我正在尝试使按钮行上只有按钮可单击 正如您所看到的 如果我尝试单击按钮行中的任何位置 无论是按钮本身 还是按钮周围的空白区域 它都会将其视为点击 有没有办法让您只能单击按钮本身 而不能单击按钮周围的白色间距
  • 为格子中的每个面板添加不同的独特标签

    很清楚如何在格子中标记面板 https stackoverflow com questions 8508269 how to label panels in lattice using panel text or ltext论据 但是 如果
  • asp.NET 2.0网站无法访问App_Code中的类

    将我的网站部署到服务器后 我在访问课程时遇到问题 请注意 这是一个网络Site不是网络应用 错误是 编译器错误消息 CS0246 找不到类型或命名空间名称 Order 是否缺少 using 指令或程序集引用 版本信息 Microsoft N
  • 获取动态图像的宽度和高度

    我有一个img嵌入隐藏标签内div 当用户单击具有图像名称的动态超链接时 图像必须显示在模式窗口中 为了将 div 定位在模态窗口内 需要图像高度 但是当点击超链接后 src被分配 高度为0 所以图像不能在中间对齐 请帮助我在浏览器中显示图
  • 将 Python 中创建的 pandas 数据框插入 SQL Server

    如前所述 我在 Python 中创建了一个数据集合 40k 行 5 列 我想将其插入 SQL Server 表中 通常 在 SQL 中我会做一个 select into myTable from dataTable 调用来执行插入 但是 p
  • 什么是悲观主义?

    该问题有评论可以使用C 11的吗auto提高性能 https stackoverflow com questions 32510183 can the use of c11s auto improve performance这获得了很多选票
  • 从 CSV 输入 Python 中查找最后一行

    我没有真正找到与我的问题相关的示例 因为我不了解 Pandas 所以我将其发布在这里 如果不清楚或已经得到答复 请告诉我 我有一个 CSV 输入 我像这样导入 def import csv csvfilename data with ope
  • 生成 C / C++ 代码时表达式的结合性和优先级?

    我编写了一个生成 AST 的基本编译器 正确考虑了表达式中运算符的优先级 但是 在执行代码生成以生成 C 代码时 我不确定如何处理括号的使用 对于这个表达式 A B c AST如下 A B C 应该正确生成包含括号的前一个表达式 但是如果第
  • C#中的FsCheck:生成形状相同的二维数组列表

    假设我正在编写一些用于视频分析的代码 这是 Video 类的简化版本 public class Video public readonly int Width public readonly int Height public readon
  • 一种简单、干净的方式来切换/交换视图?

    我已经看了几个来源 但我仍然很困惑 我想创建一个具有多个视图的应用程序 只有标准视图 没有表视图或其他任何内容 我可以在其中单击每个视图上的按钮来访问其他视图 我已经看到了多种方法来做到这一点 但对我来说唯一有意义的方法是让应用程序委托负责
  • 在 ionic 中从 Base64 打开 pdf

    因此 我将 Jasper 报告转换为 pdf 然后在 REST 控制器中转换为 base64 我该如何将其传输到我的 ionic 3 应用程序 我研究了 Ionic Native Document Viewer 但为了做到这一点 我需要将文
  • Java:带有 unicode 字符的 String.toCharArray()

    我知道 char 不能包含 Unicode 字符 例如 char c u1023 那么我该怎么做 String s ABCDEFG u1023 char c s toCharArray 出于性能原因 我想将 s 转换为 CharArray
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • R 中使用 randomForest 进行内存高效预测

    TL DR我想知道使用基于大型数据集 数百个特征 数十万行 构建的随机森林模型执行批量预测的内存有效方法 Details 我正在处理一个大型数据集 内存中超过 3GB 并且想要使用以下方法进行简单的二进制分类randomForest 由于我