参考lightgbm.cv,有两个参数让我感到困惑:metrics
和feval
。根据我对GBDT的有限了解,评估指标和评估函数都是用来计算损失的,比如AUC,通过一个预测向量和一个真实标签向量来计算。
然而,metrics
和function
听起来像是处理不同任务的。
- 它们做的是同一件事吗?
- 更具体地说,如果我执行
lightgbm.cv(params,metrics='auc', feval='ks')
,feval='ks'
会覆盖metrics='auc'
吗?
回答:
首先,metrics
和function
的一般概念并没有什么不同:从数学的角度来看,度量就是一个函数(维基百科条目)。虽然这里的度量概念更宽泛,但这个论点仍然成立。
更具体地回答你的问题;从你所链接的文档页面来看:
- metrics (string, list of strings or None, optional (default=None)) – 在交叉验证过程中需要监控的评估指标。如果不为None,将覆盖
params
中的指标。- feval (callable or None, optional (default=None)) – 自定义评估函数。
注意1)复数形式的metrics,可以是一个字符串列表 2)feval
中的custom一词。
简而言之:
-
你确实可以在
metrics
参数中使用多个可用的指标;你的例子应该是:lightgbm.cv(params,metrics=['auc','ks'])
-
feval
只应该在你除了使用现成的metrics
之外,还想要使用你自己定义的自定义指标时使用;请参见这里的一个例子,其中metric='auc'
和feval = my_err_rate
被同时使用,并且在my_err_rate
被定义之后。