消除LightGBM中的eval,obj(目标)和度量标准

时间:2017-06-01 17:47:25

标签: r lightgbm

我在参考R库lightgbm时问这个问题,但我认为它同样适用于Python和Multiverso版本。

有3个参数,您可以在其中选择您的模型感兴趣的统计信息 - metricevalobj。我试图用简单的语言清楚地区分这三种角色的不同角色。

文档说:

  

obj 目标函数,可以是字符或自定义目标函数。示例包括回归,regression_l1,huber,二进制,   lambdarank,多类,多类

     

eval 评估函数,可以是(列表)字符或自定义评估函数

指标没有R文档,除了捕获所有内容"请参阅paraters.md",它也没有真正解释它,但列出了以下选项:

  

metric,default = {l2表示回归},{binary_logloss表示二进制   分类},{ndcg for lambdarank},type = multi-enum,   选项= L1,L2,NDCG,AUC,binary_logloss,binary_error ...       l1,绝对损失,别名= mean_absolute_error,mae       l2,平方损失,别名= mean_squared_error,mse       l2_root,root square loss,alias = root_mean_squared_error,rmse       huber,Huber损失       公平,公平的损失       泊松,泊松回归       ndcg,NDCG       地图,MAP       auc,AUC       binary_logloss,日志丢失       binary_error。对于一个样本0用于正确分类,1用于错误分类。       multi_logloss,多级分类的日志丢失       multi_error。多级分类的错误率       支持多指标,由metric_fq,default = 1,type = int分隔       度量输出的频率is_training_metric,default = false,type = bool       如果需要输出训练ndcg_at的度量结果,默认值= 1,2,3,4,5,type = multi-int,alias = ndcg_eval_at,eval_at,则将此值设置为true       NDCG评估位置,分开,

我最好的猜测是

  1. obj是算法的目标函数,即它试图最大化或最小化的内容,例如, "回归"意味着它最小化残差平方
  2. eval我猜测只是一个或多个额外的统计信息,您希望在您的算法适合时进行计算。
  3. metric我不知道这个用法与objeval
  4. 的用法不同

1 个答案:

答案 0 :(得分:3)

如你所说,

  obj是算法的目标函数,即它的尝试   最大化或最小化,例如"回归"意味着它的最小化   平方残差。

度量和评估基本相同。他们只是在使用它们的地方真的不同。 Eval与交叉验证方法一起使用(因为它可用于评估模型以便提前停止等?)。 Metric用于正常列车情况。

混淆起因于对几个gbm变体(xgboost,lightgbm和sklearn' gbm +可能是R包)的影响都具有略微不同的参数名称。例如,python中的xgb.cv()使用eval,但对于R,它使用metric。然后在lgbm.cv()中使用python并使用R eval

我一直很困惑在xgboost和lightgbm之间切换。有一个绝对惊人的resource by Laurae可以帮助您理解每个参数。