5

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

有 3 个参数,您可以在其中为模型选择感兴趣的统计数据 - metricevalobj。我试图用通俗易懂的语言清楚地区分这三者的不同角色。

文档说:

obj 目标函数,可以是字符或自定义目标函数。示例包括回归、regression_l1、huber、binary、lambdarank、multiclass、multiclass

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

metric没有 R 文档,除了 catch all 说“see paraters.md”,它也没有真正解释它,但它列出了以下选项:

metric, default={l2 for regression}, {binary_logloss for binary classification},{ndcg for lambdarank}, type=multi-enum, options=l1,l2,ndcg,auc,binary_logloss,binary_error... l1, absolute loss, alias=mean_absolute_error, mae l2, square loss, alias=mean_squared_error, mse l2_root, root square loss, alias=root_mean_squared_error, rmse huber, Huber loss fair, Fair loss poisson, Poisson regression ndcg, NDCG map, MAP auc, AUC binary_logloss, log损失二进制错误。对于一个样本,0 表示正确分类,1 表示错误分类。multi_logloss,多类分类 multi_error 的日志损失。多类分类的错误率 支持多指标,由 , metric_freq 分隔,default=1,type=int 指标输出频率 is_training_metric,

我最好的猜测是

  1. obj是算法的目标函数,即它试图最大化或最小化什么,例如“回归”意味着它最小化平方残差
  2. eval我猜这只是您希望在适合您的算法时计算出的一个或多个附加统计信息。
  3. metric我不知道这与obj和的使用方式有何不同eval
4

1 回答 1

3

正如你所说,

obj 是算法的目标函数,即它试图最大化或最小化什么,例如“回归”意味着它正在最小化平方残差。

Metric 和 eval 本质上是一样的。它们仅在使用位置上有所不同。Eval与交叉验证方法一起使用(因为它可用于评估模型以进行提前停止等?)。公制用于正常的火车情况。

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

我一直很困惑在 xgboost 和 lightgbm 之间切换。Laurae提供了一个绝对惊人的资源,可以帮助您理解每个参数。

于 2017-07-27T13:49:18.470 回答