2017-02-01 1 views
1

J'essaie de savoir quelle fonction de perte utilise XGBoost pour la classification multi-classe. J'ai trouvé in this question la fonction de perte pour la classification logistique dans le cas binaire. Je pensais que pour la classe mult-classe, elle pourrait être la même qu'en GBM (pour les classes K) which can be seen here, où y_k = 1 si l'étiquette de x est k et 0 dans tout autre cas, et p_k (x) est la fonction softmax. Cependant, j'ai fait le gradient du premier et deuxième ordre en utilisant cette fonction de perte et le hessien ne correspond pas à celui défini dans le code here par une constante 2.Quelle est la fonction de perte pour la classification multi-classe dans XGBoost?

Pourriez-vous s'il vous plaît me dire quelle est la fonction de perte utilisée?

Merci d'avance.

Répondre

1

Un bon exemple est donné sur:

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

Fondamentalement, vous pouvez définir la fonction de perte avec le paramètre "eval_metric". (Par défaut étant RMSE pour la régression et erreur de classification)

Une description de la fonction « d'erreur » est donnée sur le repo GitHub officiel:

« erreur"

»:. Taux d'erreur de classification binaire Il est calculé comme # (mauvais cas)/# (tous les cas) Pour les prédictions, l'évaluation considérera les instances avec une valeur de prédiction supérieure à 0.5 comme des instances positives, et les autres comme des instances négatives. "

Une liste complète des mesures eval disponibles sont également disponibles à la section « apprentissage Paramètres de la tâche » de https://github.com/dmlc/xgboost/blob/master/doc/parameter.md

Espoir qui répond à votre question, bonne chance,

+0

Ce que vous décrivez sont des mesures d'évaluation, pas de fonctions de perte. Le premier est utilisé pour * évaluer * la performance tandis que le second est ce qui est réellement utilisé pour s'adapter au modèle. – Ben