Что означает предупреждение «NA используется как значение по умолчанию для пропущенного параметра учащегося» в млр? - PullRequest
2 голосов
/ 06 апреля 2019

Я запускаю классификацию xgboost через пакет mlr.В моих данных отсутствуют значения, которые я хотел бы сохранить (то есть я хотел бы сохранить эти наблюдения и избежать вменения).Я понимаю, что реализация xgboost в mlr может обрабатывать пропущенные значения.Однако я не понимаю предупреждения, предоставляемого функцией mlr makeLearner.

Я попытался прочитать документацию и нашел это предупреждение в коде других людей.Но я не видел предупреждение, адресованное так, чтобы оно имело смысл для меня.

Например, я прочитал это обсуждение предупреждения, но оно не прояснило для меня: https://github.com/mlr-org/mlr/pull/1225

При вызове функции makeLearner появляется предупреждение:

xgb_learner <- makeLearner(
  "classif.xgboost",
  predict.type = "prob",
  par.vals = list(
    objective = "binary:logistic",
    eval_metric = "error",
    nrounds = 200,
    missing = NA,
    max_depth = 6,
    eta = 0.1,
    gamma = 5,
    colsample_bytree = 0.5,
    min_child_weight = 1,
    subsample = 0.7

  )
)
Warning in makeParam(id = id, type = "numeric", learner.param = TRUE, lower = lower,  :
  NA used as a default value for learner parameter missing.
ParamHelpers uses NA as a special value for dependent parameters.

Мои пропущенные значения в настоящее время кодируются как пропущенные значения (т. Е. NA).Ясно, что R распознает их как таковые из:

> sum(is.na(training$day))
[1] 58

Из функции getParamSet кажется, что параметр отсутствующий принимает числовые значения от -Inf до Inf.Таким образом, возможно, NA не является допустимым значением?

> getParamSet("classif.xgboost")
Warning in makeParam(id = id, type = "numeric", learner.param = TRUE, lower = lower,  :
  NA used as a default value for learner parameter missing.
ParamHelpers uses NA as a special value for dependent parameters.
                                Type  len             Def               Constr Req Tunable Trafo
booster                     discrete    -          gbtree gbtree,gblinear,dart   -    TRUE     -
watchlist                    untyped    -          <NULL>                    -   -   FALSE     -
eta                          numeric    -             0.3               0 to 1   -    TRUE     -
gamma                        numeric    -               0             0 to Inf   -    TRUE     -
max_depth                    integer    -               6             1 to Inf   -    TRUE     -
min_child_weight             numeric    -               1             0 to Inf   -    TRUE     -
subsample                    numeric    -               1               0 to 1   -    TRUE     -
colsample_bytree             numeric    -               1               0 to 1   -    TRUE     -
colsample_bylevel            numeric    -               1               0 to 1   -    TRUE     -
num_parallel_tree            integer    -               1             1 to Inf   -    TRUE     -
lambda                       numeric    -               1             0 to Inf   -    TRUE     -
lambda_bias                  numeric    -               0             0 to Inf   -    TRUE     -
alpha                        numeric    -               0             0 to Inf   -    TRUE     -
objective                    untyped    - binary:logistic                    -   -   FALSE     -
eval_metric                  untyped    -           error                    -   -   FALSE     -
base_score                   numeric    -             0.5          -Inf to Inf   -   FALSE     -
max_delta_step               numeric    -               0             0 to Inf   -    TRUE     -
missing                      numeric    -                          -Inf to Inf   -   FALSE     -

Нужно ли мне перекодировать их как конкретное значение, которое я затем передаю в mlr (через пропущенное = [конкретное значение] в makeLearner)?Сделать что-то еще?Или это предупреждение не вызывает беспокойства?

Большое спасибо за любые разъяснения.

1 Ответ

2 голосов
/ 06 апреля 2019

Это предупреждение исходит от ParamHelpers и в этом случае безвредно.Это стандартная проверка, в которой не учитывается конкретный случай.

...