首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在嵌套交叉验证中转换“2级ParamUty”类?

如何在嵌套交叉验证中转换“2级ParamUty”类?
EN

Stack Overflow用户
提问于 2021-04-16 21:51:17
回答 1查看 84关注 0票数 1

在生存分析方面,我使用了R.

我的数据集包括39个特性(连续和因子,我将其全部转换为整数和数字)和目标(时间和状态)。

我想调优超参数: num_nodes,在Param_set中。

这是一个默认值为32,3232,32类参数。

所以我决定改变它。

我编写了以下代码,用于使用“嵌套交叉验证”优化surv.deephit学习者的超参数(10个内折叠和3个外折叠)。

代码语言:javascript
复制
#task definition
task.mlr <- TaskSurv$new(id = "id", backend = main.dataset, event = 'status', time = 'time')

#learner definition
dh.learner <- lrn('surv.deephit') 
   
#resampling method
resampling <- rsmp('cv', folds =10)
  
#tuner method
tuner <- tnr('random_search')

#measure method
measure <- msr('surv.harrellC')

#termination method
terminator <- trm('stagnation')

#search_space definition(for num_nodes)
search_space <- ps(num_nodes = p_fct(list(c(32,64,128,256)), trafo = function(x) c(sample(x,1), sample(x,1))))

#To check search_space
generate_design_random(search_space,10)$transpose()

当我使用transpose运行最后一行代码时,它演示了一个num_nodes列表,每个列表包含一个配对的类别,如下所示:

代码语言:javascript
复制
[[1]]$num_nodes
[1] 64 128

[[2]]$num_nodes
[1] 32 256

...

然后我编写了以下代码:

代码语言:javascript
复制
#defining autotuner
at <- AutoTuner$new(dh.learner, resampling, measure, terminator, tuner, search_space)

#outer cross validation
resampling_outer <- rsmp('cv', folds = 3)

# nested resampling
nest_rsm <- resample(task.mlr, at, resampling_outer)

但是在嵌套重采样的结果中,它将num_nodes显示为c(32,64,128,256),而不是一对节点。就像这样:

代码语言:javascript
复制
    num_nodes 
   c(32,64,128,256)
    num_nodes
   c(32,64,128,256)
   ... 

如何将“Param_Uty”转换为2级(例如。32,64)?

老实说,我已经仔细搜索过这个话题,毕竟我没有找到合适的答案,所以我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-17 08:46:43

嗨,谢谢你使用mlr3proba。实际上,我刚刚完成了一个完全回答这个问题的教程!它涵盖了mlr3proba中的神经网络的训练、调整和评估。对于您的具体问题,本教程的相关部分如下:

代码语言:javascript
复制
library(paradox)
search_space = ps(
  nodes = p_int(lower = 1, upper = 32),
  k = p_int(lower = 1, upper = 4)
)

search_space$trafo = function(x, param_set) {
  x$num_nodes = rep(x$nodes, x$k)
  x$nodes = x$k = NULL
  return(x)
}

这里我调优了两个新的超参数,一个表示每个层的节点数,另一个表示层数,然后创建一个转换,将它们组合成所需的超参数num_nodes

您应该能够将此应用于您的示例。

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

https://stackoverflow.com/questions/67132598

复制
相关文章

相似问题

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