【发布时间】:2019-04-30 23:52:52
【问题描述】:
我现在对XGBoost 中使用的损失函数感到困惑。以下是我感到困惑的地方:
- 我们有
objective,这是需要最小化的损失函数;eval_metric:用于表示学习结果的度量。这两者是完全不相关的(如果我们不考虑分类,只有logloss和mlogloss可以用作eval_metric)。它是否正确?如果我是,那么对于分类问题,如何使用rmse作为性能指标? - 以
objective的两个选项为例,reg:logistic和binary:logistic。对于 0/1 分类,通常应该将二元逻辑损失或交叉熵视为损失函数,对吗?那么这两个选项中的哪一个是针对这个损失函数的,另一个的值是多少呢?说,如果binary:logistic代表交叉熵损失函数,那么reg:logistic是做什么的? -
multi:softmax和multi:softprob有什么区别?他们是否使用相同的损失函数,只是输出格式不同?如果是这样,reg:logistic和binary:logistic也应该是一样的,对吧?
第二个问题的补充
比如说,0/1 分类问题的损失函数应该是
L = sum(y_i*log(P_i)+(1-y_i)*log(P_i))。所以如果我需要在这里选择binary:logistic,或者reg:logistic让xgboost分类器使用L损失函数。如果是binary:logistic,那么reg:logistic使用什么损失函数?
【问题讨论】:
-
@JoshuaCook,它用 Keras 解释了第一个问题。
-
是的,但您的第一个问题本质上是概念性的,并非特定于图书馆。
-
reg:logistic 通常将成本函数计算为 (y - y_pred)^2 并在样本维度上取平均值。
标签: python machine-learning xgboost xgbclassifier