Contexte:
dans xgboost, l' itération tente d'ajuster un arbre sur tous les exemples, ce qui minimise l'objectif suivant:f t n
où sont des premier ordre et de second ordre sur notre meilleure estimation précédente (à partir de l'itération ):y t - 1
et est notre fonction de perte.
La question (enfin):
Lors de la construction de et de l'examen d'une caractéristique spécifique dans une division spécifique, ils utilisent l'heuristique suivante pour évaluer uniquement certains candidats de division: ils trient tous les exemples par leur , passent sur la liste triée et additionnent leur deuxième dérivée . Ils considèrent un candidat divisé uniquement lorsque la somme change plus de . Pourquoi donc??? k x k h i ϵ
L'explication qu'ils me donnent m'échappe:
Ils prétendent que nous pouvons réécrire l'équation précédente comme suit:
et je ne parviens pas à suivre l'algèbre - pouvez-vous montrer pourquoi est-elle égale?
Et puis ils affirment que "c'est exactement la perte au carré pondérée avec les étiquettes et les poids " - une déclaration avec laquelle je suis d'accord, mais je ne comprends pas comment cela se rapporte à l'algorithme de fractionnement candidat qu'ils utilisent ...h i
Merci et désolé si c'est trop long pour ce forum.
Il suffit d'ajouter la partie algébrique à la réponse @Winks:
La deuxième équation devrait avoir son signe inversé, comme dans:
Le dernier terme est en effet constant: rappelez-vous que les et sont déterminés par l'itération précédente, ils sont donc constants lorsque vous essayez de définir .gi hi ft
Donc, maintenant, nous pouvons affirmer que "c'est exactement la perte au carré pondérée avec les étiquettes et les poids "−gi/hi hi
Nous remercions Yaron et Avi de mon équipe de m'avoir expliqué cela.
la source
S'il n'y a qu'un seul échantillon et que vous optimisez le à l' itération , il est facile de voir que la valeur serait , expliquantw t−th w∗=−gi/hi (ft−−(gi/hi))2
Vous disposez maintenant d'un ensemble de données complet. Dans le cas où la fonction de perte a une dérivée seconde identique, le deviendrait au lieu de . Je l'ai écrit de cette façon parce que dans ce cas, le ne serait pas pertinent pour la différence de entre les échantillons, car il n'y a pas de différence. Cependant, en réalité, lorsque reste inchangé, le fluctue avec la distribution de .w∗ −avg(gi)/const −sigma(gi)/sigma(hi) w∗ hi gi w∗ hi
Je pense que cela explique pourquoi cela fonctionne car il est pondéré par .hi
la source