Как провести поиск по сетке Catboost с помощью графического процессора в R? - PullRequest
0 голосов
/ 31 марта 2020

Я настраиваю поиск по сетке, используя пакет catboost в R. Следуя документации по catboost (https://catboost.ai/docs/), поиск по сетке для настройки гиперпараметра можно выполнить с помощью 3 отдельных команд в R ,

fit_control <- trainControl(method = "cv", number = 4, classProbs = TRUE)
grid <- expand.grid(depth = c(7,8,9,10), learning_rate = c(0.1,0.2,0.3,0.4), iterations = c(10,100,1000))
report <- train(df.scale, as.factor(make.names(as.matrix(tier1))), method = catboost.caret, logging_level = 'Verbose', preProc = NULL, tuneGrid = grid, trControl = fit_control)

поиск по различным значениям глубины, скорости обучения и количества итераций. Эти команды кажутся достаточно хорошими, просто я не могу понять, где ввести параметр для task_type = "GPU". Буду признателен за любую помощь о том, как указать с помощью графического процессора для нахождения оптимальных параметров с помощью R.

1 Ответ

0 голосов
/ 31 марта 2020

Похоже, вы используете пакет caret для обучения. В этом случае похоже, что пакет caret не передает никаких дополнительных аргументов в функцию catboost.train, поэтому он может не поддерживать функциональность графического процессора. Из кода в карете для этого метода видно, что аргумент ... не передается в функцию catboost.train.

#' Fit model based on input data
#'
#' @param x, y: the current data used to fit the model
#' @param wts: optional instance weights (not applicable for this particular model)
#' @param param: the current tuning parameter values
#' @param lev: the class levels of the outcome (or NULL in regression)
#' @param last: a logical for whether the current fit is the final fit
#' @param weights: weights
#' @param classProbs: a logical for whether class probabilities should be computed
#'
#' @noRd
catboost.caret$fit <- function(x, y, wts, param, lev, last, weights, classProbs, ...) {
    param <- c(param, list(...))
    if (is.null(param$loss_function)) {
        param$loss_function <- "RMSE"
        if (is.factor(y)) {
            param$loss_function <- "Logloss"
            if (length(lev) > 2) {
                param$loss_function <- "MultiClass"
            }
            y <- as.double(y) - 1
        }
    }
    test_pool <- NULL
    if (!is.null(param$test_pool)) {
        test_pool <- param$test_pool
        if (class(test_pool) != "catboost.Pool")
            stop("Expected catboost.Pool, got: ", class(test_pool))
        param <- within(param, rm(test_pool))
    }
    pool <- catboost.from_data_frame(x, y, weight = wts)
    model <- catboost.train(pool, test_pool, param)
    model$lev <- lev
    return(model)
}

В зависимости от вашего уровня владения R Кроме того, вы можете добавить свою собственную модель в каретку , скопировав модель в расположение каретки GitHub и изменив ее так, чтобы она принимала аргумент графического процессора, который должен go в списке параметров для их документации.

...