R:插入符号如何选择默认调谐范围?
R: how does caret choose default tuning range?
当使用 R
caret
比较同一数据集上的多个模型时,caret
足够聪明 select 如果相同,则不同模型的不同调整范围tuneLength
为所有型号指定,未指定特定型号 tuneGrid
。
例如,caret
为一个特定数据集选择的调整范围是:
earth(nprune)
: 2, 5, 8, 11, 14
gamSpline(df)
: 1, 1.5, 2, 2.5, 3
rpart(cp)
: 0.010, 0.054, 0.116, 0.123, 0.358
有谁知道 caret
如何确定这些默认调谐范围?我一直在搜索文档,但仍未确定选择范围的算法。
这取决于型号。对于 rpart
和其他一些人,它适合初始模型以了解合理的值应该是什么。在其他情况下,它不太聪明。例如,对于 gamSpline
,它是 expand.grid(df = seq(1, 3, length = len))
。
您可以使用 getModelInfo
查看每个模型的功能:
> getModelInfo("earth")[[1]]$grid
function(x, y, len = NULL) {
dat <- if(is.data.frame(x)) x else as.data.frame(x)
dat$.outcome <- y
mod <- earth( .outcome~., data = dat, pmethod = "none")
maxTerms <- nrow(mod$dirs)
maxTerms <- min(200, floor(maxTerms * .75) + 2)
data.frame(nprune = unique(floor(seq(2, to = maxTerms, length = len))),
degree = 1)
}
最大
当使用 R
caret
比较同一数据集上的多个模型时,caret
足够聪明 select 如果相同,则不同模型的不同调整范围tuneLength
为所有型号指定,未指定特定型号 tuneGrid
。
例如,caret
为一个特定数据集选择的调整范围是:
earth(nprune)
: 2, 5, 8, 11, 14
gamSpline(df)
: 1, 1.5, 2, 2.5, 3
rpart(cp)
: 0.010, 0.054, 0.116, 0.123, 0.358
有谁知道 caret
如何确定这些默认调谐范围?我一直在搜索文档,但仍未确定选择范围的算法。
这取决于型号。对于 rpart
和其他一些人,它适合初始模型以了解合理的值应该是什么。在其他情况下,它不太聪明。例如,对于 gamSpline
,它是 expand.grid(df = seq(1, 3, length = len))
。
您可以使用 getModelInfo
查看每个模型的功能:
> getModelInfo("earth")[[1]]$grid
function(x, y, len = NULL) {
dat <- if(is.data.frame(x)) x else as.data.frame(x)
dat$.outcome <- y
mod <- earth( .outcome~., data = dat, pmethod = "none")
maxTerms <- nrow(mod$dirs)
maxTerms <- min(200, floor(maxTerms * .75) + 2)
data.frame(nprune = unique(floor(seq(2, to = maxTerms, length = len))),
degree = 1)
}
最大