gpt4 book ai didi

r - xgboost的目标和胎儿差异

转载 作者:行者123 更新时间:2023-12-03 09:20:03 25 4
gpt4 key购买 nike

R中的xgboost中的objectivefeval有什么区别?我知道这是非常基本的东西,但是我无法准确定义它们/它们的目的。

另外,进行多类分类时,softmax目标是什么?

最佳答案

目标
Objective中的xgboost是学习算法将尝试并优化的function。根据定义,它必须能够创建带梯度的一阶(梯度)和二阶(hessian)导数。给定训练回合的预测。

定制的Objective函数示例:link

# user define objective function, given prediction, return gradient and second order gradient
# this is loglikelihood loss
logregobj <- function(preds, dtrain) {
labels <- getinfo(dtrain, "label")
preds <- 1/(1 + exp(-preds))
grad <- preds - labels
hess <- preds * (1 - preds)
return(list(grad = grad, hess = hess))
}

这是培训的关键功能,如果不定义 xgboost模型,则无法对其进行培训。 Objective函数直接用于在每个树的每个节点处进行拆分。

节日
feval中的 xgboost在直接优化或训练模型中不起作用。您甚至不需要训练。它不会影响拆分。它所做的只是在训练后对您的模型进行评分。看看自定义 feval的示例
evalerror <- function(preds, dtrain) {
labels <- getinfo(dtrain, "label")
err <- as.numeric(sum(labels != (preds > 0)))/length(labels)
return(list(metric = "error", value = err))
}

注意,它只返回一个名称(度量)和一个分数(值)。通常, fevalobjective可以相同,但也许您想要的计分机制有所不同,或者没有派生方式。例如,人们使用logloss objective进行训练,但是创建AUC feval来评估模型。

此外,一旦模型停止改进,您就可以使用 feval停止对其进行训练。而且,您可以使用多个 feval函数以不同的方式对模型评分并观察它们。

您不需要 feval函数来训练模型。仅对其进行评估,并帮助其尽早停止训练。

摘要:
Objective是主要功能。
feval是帮助 xgboost做一些很酷的事情的助手。
softmaxobjective函数,通常在多类分类中使用。它确保您所有的预测总和为1,并使用指数函数进行缩放。 softmax

关于r - xgboost的目标和胎儿差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com