Я использую h2o и R для задачи бинарной классификации. Мне было интересно, есть ли способ создать кривую обучения в h2o?
Я сам закодировал несколько разбиений и хорошо строю кривую, но я хотел бы знать, есть ли быстрый рецепт, предоставленный h2o? Известно, что H2O упрощает работу с данными.
Вот что я делал, основываясь на ответе здесь пакет каретки и R
Я настроил цикл:
library(data.table)
library(dplyr)
library(h2o)
#
sizes <- seq(0.05, 1.0, 0.05)
#
learnCurve <- data.frame(mid = character(length(sizes)),
m = integer(length(sizes)),
n1 = integer(length(sizes)),
n0 = integer(length(sizes)),
trainRMSE = double(length(sizes)),
cvRMSE = double(length(sizes)),
trainAUC = double(length(sizes)),
cvAUC = double(length(sizes)),
trainTPR = double(length(sizes)),
cvTPR = double(length(sizes)),
trainFPR = double(length(sizes)),
cvFPR = double(length(sizes))
)
#
h2o.init()
for (i in 1:length(sizes)) {
set.seed(3)
ind <- sample(nrow(ddf1s), sizes[i]*nrow(ddf1s))
tr <- ddf1s[ind, ]
dd <- ddf1 %>% filter(id %in% tr$id)
#
setDT(dd)
#
dmh2o <- dd[, c(response, predictors), with = FALSE]
setDT(dmh2o)
setnames(dmh2o, predictors, newNames)
#
ddhex <- as.h2o(dmh2o)
#
splitsx <- h2o.splitFrame(data= ddhex, ratios = .7, seed = 1234)
trainx <- splitsx[[1]]
validx <- splitsx[[2]]
#
gbmTreex <- h2o.gbm(x = newNames, y = response,
training_frame = trainx,
validation_frame = validx,
max_depth = 8,
seed = 1234)
#
learnCurve$mid[i] <- gbmTreex@model_id
learnCurve$m[i] <- nrow(dmh2o)
learnCurve$n0[i] <- nrow(filter(dmh2o, target == 0))
learnCurve$n1[i] <- nrow(filter(dmh2o, target == 1))
learnCurve$trainRMSE[i] <- gbmTreex@model$training_metrics@metrics$RMSE
learnCurve$cvRMSE[i] <- gbmTreex@model$validation_metrics@metrics$RMSE
learnCurve$trainAUC[i] <- gbmTreex@model$training_metrics@metrics$AUC
learnCurve$cvAUC[i] <- gbmTreex@model$validation_metrics@metrics$AUC
learnCurve$trainTPR[i] <- gbmTreex@model$training_metrics@metrics$cm$table$`1`[[2]] / gbmTreex@model$training_metrics@metrics$cm$table$`1`[[3]]
learnCurve$cvTPR[i] <- gbmTreex@model$validation_metrics@metrics$cm$table$`1`[[2]] / gbmTreex@model$validation_metrics@metrics$cm$table$`1`[[3]]
learnCurve$trainFPR[i] <- gbmTreex@model$training_metrics@metrics$cm$table$Error[[2]]
learnCurve$cvFPR[i] <- gbmTreex@model$training_metrics@metrics$cm$table$Error[[2]]
#
mstemp <- gbmTreex@model$model_summary
if(i == 1) {
ms <- mstemp
}
#
if (i > 1) {
ms <- rbind(ms, mstemp)
}
#
print(i)#
rm(gbmTreex, dmh2o, ddhex, splitsx, trainx, validx)
gc()
}
#
h2o.shutdown()
Я не включал данные, так как основной вопрос заключается в получении метрик модели путем изменения размеров данных. Я хотел бы знать, есть ли другой (более быстрый) способ, предоставляемый H2O?