Функция predict.gbm
имеет аргумент type
, который может быть «ответом» или «ссылкой».Чтобы получить прогнозируемые вероятности, нужно установить «ответ».Затем, чтобы преобразовать эти прогнозы в класс, можно использовать пороговое значение (0.5 используется кареткой).Чтобы понять это, вот пример:
library(caret)
library(mlbench)
data(Sonar)
set.seed(7)
validation_index <- createDataPartition(Sonar$Class, p=0.80, list=FALSE)
validation <- Sonar[-validation_index,]
training <- Sonar[validation_index,]
set.seed(7)
control <- trainControl(method = "repeatedcv",
number = 2,
repeats = 2)
model_gbm <- train(Class~.,
data = training,
method = 'gbm',
trControl = control,
tuneLength = 3)
прогноз с использованием каретки:
preds1 <- predict(model_gbm, validation[,1:60], type = "prob")
прогноз с использованием gbm:
library(gbm)
preds2 <- predict(model_gbm$finalModel, validation[,1:60], n.trees = 100, type = "response")
all.equal(preds1[,1], preds2)
#output
TRUE
или в случае классов:
preds1_class <- predict(model_gbm, validation[,1:60])
, чтобы проверить, равны ли они предсказаниям gbm, порогам предсказаний:
all.equal(
as.factor(ifelse(preds2 > 0.5, "M", "R")),
preds1_class)
#output
TRUE