首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入符号训练中的bartMachine错误:维数不正确

插入符号训练中的bartMachine错误:维数不正确
EN

Stack Overflow用户
提问于 2020-07-23 02:28:06
回答 1查看 151关注 0票数 0

在尝试使用插入符号训练R中的模型时,我遇到一个奇怪的问题:

代码语言:javascript
复制
> bart <- train(x = cor_data, y = factor(outcome), method = "bartMachine")
Error in tuneGrid[!duplicated(tuneGrid), , drop = FALSE] : 
 nombre de dimensions incorrect 

但是,当使用rfxgbTreeglmnetsvmRadial而不是bartMachine时,不会引发错误。此外,dim(cor_data)length(outcome)分别返回[1] 3056 134[1] 3056,这表明我的数据集的维度确实没有问题。

我尝试在train中更改tuneGrid参数,这解决了问题,但却导致了这个问题:

代码语言:javascript
复制
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "pool-89-thread-1"

我的数据集不包含NA,并且所有变量都是数值或二进制的。

我的目标是提取bart模型中最重要的变量。例如,我对随机森林使用:

代码语言:javascript
复制
rf <- train(x = cor_data, y = factor(outcome), method = "rf")
rfImp <- varImp(rf)
rf_select <- row.names(rfImp$importance[order(- rfImp$importance$Overall)[1:43], , drop = FALSE])

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-05-13 13:00:38

由于您的目标是提取bart模型中最重要的变量,因此我假设您愿意绕过插入符号包装器,直接在R bartMachine中执行此操作,这是我成功运行它的唯一方法。

对于我的系统,解决内存问题需要另外两件事:

  1. 重新启动R并在加载任何内容之前,按如下方式分配8 8Gb内存:

代码语言:javascript
复制
options(java.parameters = "-Xmx8g")

  1. 运行bartMachineCV时,请关闭mem_cache_for_speed

代码语言:javascript
复制
library(bartMachine)
set_bart_machine_num_cores(16)
bart <- bartMachineCV(X = cor_data, y = factor(outcome), mem_cache_for_speed = F)

这将迭代k (2,3和5)的3个值和m (50和200)的2个值,每次运行5次交叉验证,然后使用最佳超参数组合构建bartMachine。根据您的系统,您可能还必须减少内核的数量,但这需要在16个内核上进行20,000个观察值x 12个变量训练集,这需要大约一个小时。您还可以使用k_cvs和num_tree_cvs参数减少它测试的超参数组合的数量。

然后获取变量重要性:

代码语言:javascript
复制
 vi <- investigate_var_importance(bart, num_replicates_for_avg = 20)
print(vi)

您还可以将其用作具有类似于caret::train()通常返回的对象的predict(bart, new_data=new)的预测模型。这适用于R4.0.5、bartMachine_1.2.6和rJava_1.0-4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63040889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档