参考lightgbm.cv,有两个参数让我很困惑:metrics
和feval
. 根据我对gbdt的一点了解,评估指标和评估函数都是从预测向量和真实标签向量计算损失,例如auc。
但是,metrics
听起来function
他们正在处理不同的任务。
- 他们在做同样的事情吗?
- 更具体地说,如果我执行
lightgbm.cv(params,metrics='auc', feval='ks')
,将feval='ks'
覆盖metrics='auc'
?
参考lightgbm.cv,有两个参数让我很困惑:metrics
和feval
. 根据我对gbdt的一点了解,评估指标和评估函数都是从预测向量和真实标签向量计算损失,例如auc。
但是,metrics
听起来function
他们正在处理不同的任务。
lightgbm.cv(params,metrics='auc', feval='ks')
,将feval='ks'
覆盖metrics='auc'
?首先,和的一般概念metrics
并function
没有什么不同:从数学的角度来看,度量是一个函数(维基百科条目)。尽管这里度量的概念更广泛,但这个论点仍然成立。
更具体地说,关于您的问题;从您链接的文档页面:
- 指标(字符串,字符串列表或无,可选(默认=无))– CV 时要监控的评估指标。如果不是 None,
params
则将覆盖 in 中的指标。- feval ( callable or None, optional (default=None) ) -- 自定义评估函数。
注意 1) 复数度量s,可以是字符串列表2) 术语custom in feval
。
使长话短说:
您确实可以在参数中使用多个可用指标metrics
;你的例子应该是:
lightgbm.cv(params,metrics=['auc','ks'])
feval
仅应在除了您可以从现成的可用指标中使用的任何metrics
内容之外,还需要您自己定义的自定义指标时使用;在此处查看示例,其中metric='auc'
和被定义feval = my_err_rate
后同时使用my_err_rate
。