是否可以在python中为xgboost提供一个自定义的分类数据目标函数?

2024-05-15 23:36:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有分类数据和一个目标函数,我正在努力优化。在xgboost文档中,提到您可以提供自己的目标函数,但它必须返回梯度和hessian。当我有分类数据时,我不确定hessian或gradient意味着什么。目标函数看起来有点像这样

sum_{all classes i} ((number of correct predictions in class_i) / (number in class i))

在这种情况下,是否可以创建自定义目标函数?在


Tags: 数据函数in文档number目标分类all
1条回答
网友
1楼 · 发布于 2024-05-15 23:36:30

要分析计算目标函数的梯度和hessian(二阶导数),需要根据模型的预测和给定的真实标签来定义它。

从您的目标函数可以清楚地看出,您正在优化加权精度(不含百分比)度量,其中类的权重取决于该类的实例数。 让我们为三个类ABC定义以下三个类:
- C_AC_BC_C是相应类中正确预测的数量;
-N_AN_BN_C是这些类中每个类的实例数;
-N_A+N_B+N_C = T是实例总数。 {也可以写成:(C_A/T)*(T/N_A) + (C_B/T)*(T/N_B) + (C_C/T)*(T/N_C)
这可以直接与总体精度相比较:C_A/T + C_B/T + C_C/T

这意味着您可以通过使用多:softmax“xgboost中内置的目标函数。在

相关问题 更多 >