哪个是XGBoost中多类分类的损失函数?

时间:2017-02-01 15:29:47

标签: xgboost multiclass-classification

我试图知道哪个损失函数使用XGBoost进行多类分类。我在二进制情况下找到了in this question逻辑分类的损失函数。

对于多类案例,我可能与GBM(对于K类)which can be seen here相同,其中如果x的标签是k,则y_k = 1,在任何其他情况下为0,并且p_k (x)是softmax函数。但是,我使用这个损失函数制作了一阶和二阶梯度,并且粗体与代码here(在SoftmaxMultiClassObj中的函数GetGradient中)中定义的不匹配常数2。

你能否告诉我使用的损失函数是什么?

提前谢谢。

2 个答案:

答案 0 :(得分:5)

用于多类的损失函数,正如您所怀疑的那样,是softmax目标函数。截至目前,多类的唯一选项显示在下面的引文中,multi:softprob返回所有概率,而不仅仅是最可能类的概率。

  

“multi:softmax”-set XGBoost使用softmax目标进行多类分类,还需要设置num_class(类的数量)

     

“multi:softprob” - 与softmax相同,但输出ndata * nclass的向量,可以进一步重新整形为ndata,nclass矩阵。结果包含属于每个类的每个数据点的预测概率。

请参阅https://xgboost.readthedocs.io/en/latest//parameter.html#learning-task-parameters

答案 1 :(得分:0)

给出了一个很好的例子:

http://machinelearningmastery.com/avoid-overfitting-by-early-stopping-with-xgboost-in-python/

基本上,您可以使用“eval_metric”参数定义损失函数。 (默认为回归的rmse和分类的错误)

官方github repo上给出了“错误”功能的描述:

“”错误“:二进制分类错误率。计算为#(错误情况)/#(所有情况)。对于预测,评估将预测值大于0.5的实例视为正实例,并且其他人是负面的例子。“

可以在https://github.com/dmlc/xgboost/blob/master/doc/parameter.md

的“学习任务参数”部分找到可用的评估指标的完整列表

希望能回答你的问题,祝你好运,