当使用R
caret
对同一数据集中的多个模型进行比较时,如果为所有模型指定了相同的tuneLength
,而没有指定特定于模型的tuneGrid
,则caret
足够聪明地为不同的模型选择不同的调优范围。
例如,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
是如何确定这些默认调优范围的吗?我一直在搜索文档,但仍然没有确定选择范围的算法。
发布于 2015-04-29 19:57:19
这取决于模型。对于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)
}
最大值
https://stackoverflow.com/questions/29913901
复制相似问题