r - mlr 中的警告“NA 用作学习器参数缺失的默认值”是什么意思?
问题描述
我正在通过 mlr 包运行分类 xgboost。我的数据中有缺失值,我想保留这些值(也就是说,我想保留这些观察结果并且我想避免插补)。我了解 mlr 中的 xgboost 实现可以处理缺失值。但是,我不明白 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 中的缺失 = [特定值])?做点别的吗?或者这个警告是否值得关注?
非常感谢您的澄清。
解决方案
此警告来自 ParamHelpers,在这种情况下是无害的。这是一项标准检查,不考虑特定情况。
推荐阅读
- docker - 关于使用 kafka、zookeeper 和 elastic search 运行 docker-compose 文件时出错
- android - 建议我从 websocket 服务器检索实时数据
- android - 通过打印管理器打印 PDF - 打印预览与输出不匹配
- html - 如何使元素与屏幕大小成比例?
- mysql - 基于光标的分页没有偏移?
- javascript - 获取错误函数未在我的脚本中定义
- laravel - 如何使用 laravel 关系从数据库中获取数据
- ios - AUParameterTree 释放导致死锁
- linux - 添加核心:Solr 错误
- php - 当数组在 for-each 循环 Laravel 中使用两次时,尝试获取非对象的属性