[英]R caret: Tuning GLM boost prune parameter
我正在嘗試調整GLM增強模型的參數。 根據有關此型號的Caret包文檔 ,有2個參數可以調整,mstop和prune。
library(caret)
library(mlbench)
data(Sonar)
set.seed(25)
trainIndex = createDataPartition(Sonar$Class, p = 0.9, list = FALSE)
training = Sonar[ trainIndex,]
testing = Sonar[-trainIndex,]
### set training parameters
fitControl = trainControl(method = "repeatedcv",
number = 10,
repeats = 10,
## Estimate class probabilities
classProbs = TRUE,
## Evaluate a two-class performances
## (ROC, sensitivity, specificity) using the following function
summaryFunction = twoClassSummary)
### train the models
set.seed(69)
# Use the expand.grid to specify the search space
glmBoostGrid = expand.grid(mstop = c(50, 100, 150, 200, 250, 300),
prune = c('yes', 'no'))
glmBoostFit = train(Class ~ .,
data = training,
method = "glmboost",
trControl = fitControl,
tuneGrid = glmBoostGrid,
metric = 'ROC')
glmBoostFit
輸出如下:
Boosted Generalized Linear Model
188 samples
60 predictors
2 classes: 'M', 'R'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 169, 169, 169, 169, 170, 169, ...
Resampling results across tuning parameters:
mstop ROC Sens Spec ROC SD Sens SD Spec SD
50 0.8261806 0.764 0.7598611 0.10208114 0.1311104 0.1539477
100 0.8265972 0.729 0.7625000 0.09459835 0.1391250 0.1385465
150 0.8282083 0.717 0.7726389 0.09570417 0.1418152 0.1382405
200 0.8307917 0.714 0.7769444 0.09484042 0.1439011 0.1452857
250 0.8306667 0.719 0.7756944 0.09452604 0.1436740 0.1535578
300 0.8278403 0.728 0.7722222 0.09794868 0.1425398 0.1576030
Tuning parameter 'prune' was held constant at a value of yes
ROC was used to select the optimal model using the largest value.
The final values used for the model were mstop = 200 and prune = yes.
prune參數保持不變( Tuning parameter 'prune' was held constant at a value of yes
),盡管glmBoostGrid
也包含prune == no
。 我在boost_control
方法中查看了mboost
包文檔,只能訪問mstop
參數,那么如何使用train
方法的tuneGrid
參數調整prune
參數?
不同之處在於glmboost的這部分調用:
if (param$prune == "yes") {
out <- if (is.factor(y))
out[mstop(AIC(out, "classical"))]
else out[mstop(AIC(out))]
}
不同之處在於如何計算aic。 但是在插入符號中使用glmboost運行各種測試我懷疑它是否表現得如預期的那樣。 我在github中創建了一個問題,看看我的懷疑是否正確。 如果開發人員提供更多信息,我會編輯我的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.