我在参考R库lightgbm
时问这个问题,但我认为它同样适用于Python和Multiverso版本。
有3个参数,您可以在其中选择您的模型感兴趣的统计信息 - metric
,eval
和obj
。我试图用简单的语言清楚地区分这三种角色的不同角色。
文档说:
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评估位置,分开,
我最好的猜测是
obj
是算法的目标函数,即它试图最大化或最小化的内容,例如, "回归"意味着它最小化残差平方eval
我猜测只是一个或多个额外的统计信息,您希望在您的算法适合时进行计算。 metric
我不知道这个用法与obj
和eval
答案 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可以帮助您理解每个参数。