La question
J'ai du mal à comprendre comment la prédiction est maintenue dans l' intervalle lorsque je fais une classification binaire avec Gradient Boosting.
Supposons que nous travaillons sur un problème de classification binaire, et notre fonction objective est la perte de log, , où est la variable cible et est notre modèle actuel.
Lors de la formation du prochain apprenant faible telle sorte que notre nouveau modèle soit , quel est le mécanisme qui est censé maintenir ? Ou, peut-être une question plus pertinente, existe-t-il un tel mécanisme?
Plus d'informations sur ce que je fais
J'essaie d'implémenter le renforcement du gradient, en utilisant des arbres de régression. Ce que je fais pour l'éviter, c'est qu'une multiplication de par un facteur , de telle sorte que H + c _ {\ text {max}} h ne descende pas en dessous de zéro ou au-dessus un, et je sélectionne le c dans cette gamme qui minimise la fonction de perte. c ∈ [ 0 , c max ] H + c max h c
Cela pose le problème suivant: après quelques tours, j'ai un point qui est parfaitement classé, et le meilleur fractionnement disponible pour pousser le classificateur dans la direction du gradient veut pousser ce point au-dessus d'un, ce qui, je m'assure, ne se produit pas en réglage . Ainsi, toutes les itérations suivantes sélectionneront le même fractionnement et le même .c = 0
J'ai essayé des pratiques de régularisation courantes
- Diminuer le taux d'apprentissage en multipliant par . Cela retarde simplement le problème.μ = 0,01
- Sous-échantillonnage de l'espace des fonctionnalités, mais certains des points sont très faciles à classer, ils cochent presque toutes les cases du "est-ce un point positif?" forme, et presque chaque "bonne division" montre ce comportement.
Je pense que ce n'est pas un problème de paramètres, et il devrait y avoir un moyen plus solide de résoudre ce problème. Je n'écarte pas la possibilité que mon implémentation soit interrompue, mais je n'ai rien trouvé pour résoudre ce problème.
Ce que nous manipulons, dans le contexte de la perte logistique, devrait être une probabilité, alors comment l'éviter?
Mon intuition serait de mettre le modèle que nous construisons, , dans une fonction sigmoïde telle qu'il soit limité à , et je suppose que cela fonctionnerait, mais je veux savoir s'il existe d'autres solutions. Étant donné que le renforcement du gradient semble utilisé avec succès dans les tâches de classification, une solution «correcte» (c'est-à-dire avec justification) devrait exister.[ 0 , 1 ]
la source
Réponses:
J'aime y penser par analogie avec le cas des modèles linéaires et leur extension aux GLM (modèles linéaires généralisés).
Dans un modèle linéaire, nous ajustons une fonction linéaire pour prédire notre réponse
Pour généraliser à d'autres situations, nous introduisons une fonction de lien, qui transforme la partie linéaire du modèle à l'échelle de la réponse (techniquement, c'est un lien inverse, mais je pense qu'il est plus facile de penser de cette façon, transformant le prédicteur linéaire en réponse, que de transformer la réponse en un prédicteur linéaire).
Par exemple, le modèle logistique utilise la fonction sigmoïde (ou logit)
et la régression du poisson utilise une fonction exponentielle
Pour construire une analogie avec l'augmentation du gradient, nous remplaçons la partie linéaire de ces modèles par la somme des arbres amplifiés. Ainsi, par exemple, le cas gaussien (analogue à la régression linéaire) devient le bien connu
où est notre séquence d'apprenants faibles. Le cas binomial est analogue à la régression logistique (comme vous l'avez noté dans votre réponse)hi
et le boost de poisson est analogue à la régression du poisson
La question demeure: comment adapter ces modèles boostés lorsque la fonction de liaison est impliquée? Pour le cas gaussien, où le lien est la fonction d'identité, le mantra souvent entendu d'adapter les apprenants faibles aux résidus du modèle de travail actuel fonctionne, mais cela ne se généralise pas vraiment aux modèles plus compliqués. L'astuce consiste à écrire la fonction de perte minimisée en fonction de la partie linéaire du modèle (c'est-à-dire la partie de la formulation GLM).∑iβixi
Par exemple, la perte binomiale est généralement rencontrée comme
Ici, la perte est fonction de , les valeurs prédites à la même échelle que la réponse, et est une transformation non linéaire du prédicteur linéaire . Au lieu de cela, nous pouvons ré-exprimer cela en fonction de , (dans ce cas également connu sous le nom de log odds)pi pi Li Li
Ensuite, nous pouvons prendre le gradient de ceci par rapport à , et augmenter pour minimiser directement cette quantité.L
Ce n'est qu'à la fin, lorsque nous voulons produire des prédictions pour l'utilisateur, que nous appliquons la fonction de lien à la séquence finale des apprenants faibles pour mettre les prédictions à la même échelle que la réponse. Tout en ajustant le modèle, nous travaillons en interne sur l'échelle linéaire tout le temps.
la source
Après quelques recherches, il semble que mon intuition et le commentaire d'Alex R. soient exacts.
Afin de construire un modèle continu avec des prédictions dans , on peut mettre le modèle H dans une fonction logistique (Wikipedia) , tel que pour H ∈ R , on a 1[0,1] H H∈R
Les étapes de renforcement du gradient prennent ensuite la dérivée par rapport àHet mettent à jour le modèle, comme si la fonction logistique faisait partie de la fonction de coût, et cela fonctionne.
Cela a été suggéré dans l'article Régression logistique additive: une vue statistique du renforcement , par Friedman, Hastie et Tibshirani, pour construire LogitBoost (Wikipedia) , une adaptation d' AdaBoost (Wikipedia) à la perte logistique.
En termes très basiques, s'il est possible de passer d'une régression linéaire à une régression logistique par l'ajout d'un sigmoïde, alors cela fonctionne également pour convertir le boost de régression en boost de classification.
la source