Stimuler un modèle de régression logistique

11

Adaboost est une méthode d'ensemble qui combine de nombreux apprenants faibles pour former un apprenant fort. Tous les exemples d'adaboost que j'ai lus utilisent des souches / arbres de décision en tant qu'apprenants faibles. Puis-je utiliser différents apprenants faibles dans adaboost? Par exemple, comment implémenter adaboost (généralement boosting) pour booster un modèle de régression logistique?

Une différence principale entre les arbres de classification et la régression logistique est que les anciennes classes de sorties (-1,1) tandis que la régression logistique sort les probs. Une idée est de choisir la meilleure fonctionnalité X parmi un ensemble de fonctionnalités et de sélectionner un seuil (0,5?) Pour convertir les sondes en classes, puis d'utiliser une régression logistique pondérée pour trouver la prochaine fonctionnalité, etc.

Mais j'imagine qu'il existe un algorithme général pour stimuler différents apprenants faibles différents des souches de décision qui génère des probabilités. Je pensais que Logitboost était la réponse à ma question mais j'ai essayé de lire le document "Additive Logistic Regression" et je suis resté coincé au milieu.

gnikol
la source

Réponses:

7

Ne confondez pas la gestion des prédicteurs (via les apprenants de base, par exemple les souches) et la gestion de la fonction de perte dans le boosting. Bien qu'AdaBoost puisse être considéré comme la recherche de combinaisons d'apprenants de base pour minimiser l'erreur de classification erronée, le document "Régression logistique additive" que vous citez montre qu'il peut également être formulé pour minimiser une fonction de perte exponentielle. Ces informations ont ouvert l'approche de renforcement à une large classe de problèmes d'apprentissage automatique qui minimisent les fonctions de perte différenciables, via le renforcement de gradient . Les résidus qui sont ajustés à chaque étape sont des pseudo-résidus calculés à partir du gradient de la fonction de perte. Même si les prédicteurs sont modélisés comme des souches binaires, la sortie du modèle n'a donc pas besoin d'être un choix binaire.

Comme une autre réponse l'indique, les apprenants de base linéaire peuvent ne pas fonctionner pour le renforcement, mais les apprenants de base linéaire ne sont pas requis pour une "régression renforcée" au sens standard ou logistique. Décidément, les souches non linéaires peuvent être combinées en tant qu'apprenants à base lente pour minimiser les fonctions de perte appropriées. On l'appelle encore "régression boostée" même si elle est loin d'un modèle de régression standard linéaire dans les coefficients des prédicteurs. La fonction de perte peut être fonctionnellement la même pour les modèles linéaires et les modèles de "régression boostée" avec des souches ou des arbres comme prédicteurs. Le chapitre 8 de l' ISLR le montre assez clairement.

Donc, si vous voulez une régression logistique équivalente à une régression boostée, concentrez-vous sur la fonction de perte plutôt que sur les apprenants de base. C'est ce que fait l'approche LogitBoost dans l'article que vous citez: minimiser une perte de journal plutôt que la perte exponentielle implicite dans adaboost. La page Wikipedia AdaBoost décrit cette différence.

De nombreux participants sur ce site soutiennent qu'une prédiction basée sur les cotes / probabilités logarithmiques est hautement préférable à une prédiction de classification stricte oui / non, car la première permet plus généralement de faire des compromis entre les coûts supplémentaires des prédictions faussement positives et fausses négatives. . Comme l'indique la réponse à votre question connexe , il est possible d'obtenir des probabilités estimées à partir du classificateur fort dérivé d'AdaBoost, mais LogitBoost pourrait bien donner de meilleures performances.

Les implémentations du renforcement de gradient pour la classification peuvent fournir des informations sur les probabilités sous-jacentes. Par exemple, cette page sur le renforcement du gradient montre comment le sklearncode permet de choisir entre la perte de déviance pour la régression logistique et la perte exponentielle pour AdaBoost, et documente les fonctions pour prédire les probabilités du modèle boosté par le gradient.

EdM
la source
Merci beaucoup pour votre réponse. Si je le comprends correctement pour atteindre la fonctionnalité de régression logistique dans le contexte du boost, tout ce que je dois faire est d'utiliser l'algorithme de boosting de gradient avec la fonction de perte logistique et les arbres de classification des apprenants faibles? Mais les arbres de classification produisent {-1,1} tandis que la régression logistique génère des probabilités. De plus, les arbres de classification essaient de minimiser l'indice de Gini au lieu de la perte logistique. Je manque quelque chose de fondamental ici. Où mettre la perte logistique? Comment sortir les sondes du modèle?
gnikol
Je comprends le concept où y est continu parce que les arbres de régression minimisent le mse qui est la même fonction de perte que la régression linéaire. Par conséquent, j'adapte à plusieurs reprises un arbre de régression aux résidus. Mais dans le contexte de la classification, les arbres de classification minimisent l'indice de Gini ou quelque chose de similaire. Quel est le lien avec la régression logistique ou la fonction de perte de la régression logistique?
gnikol
@gnikol J'ai révisé ma réponse d'une manière qui, je l'espère, le clarifiera à la fois pour vous et pour les autres lecteurs. Les résidus qui s'intègrent dans l'augmentation de gradient sont des pseudo-résidus calculés à partir du gradient de la fonction de perte; le choix de la fonction de perte est ce qui distingue AdaBoost de LogitBoost. Les probabilités peuvent être obtenues de l'apprenant fort dans tous les cas; J'ai fourni un lien vers un exemple d'implémentation dans le dernier paragraphe.
EdM
5

En fait, nous avons une question très similaire ici sur le cas de régression. Et nous avons eu une très bonne réponse de @Matthew Drury

Augmentation du gradient pour la régression linéaire - pourquoi cela ne fonctionne-t-il pas?

Le modèle linéaire (comme la régression logistique) n'est pas bon pour augmenter. La raison est que si vous ajoutez deux modèles linéaires ensemble, le résultat est un autre modèle linéaire. En revanche, l'ajout de deux souches de décision ou arbres, aura un modèle plus compliqué et intéressant (plus un arbre).

Les détails peuvent être trouvés dans cet article. Dans ce lien, j'ai déduit pourquoi l'ajout de deux modèles linéaires n'est pas intéressant. Et je montre l'effet du boosting sur la décision itération du moignon par itération.

Comment fonctionne l'apprenant de base linéaire pour stimuler? Et comment ça marche dans la bibliothèque xgboost?

Notez que l'arbre de décision / moignon n'est pas un «modèle linéaire» semblable à la régression logistique.

Voir cet article pour plus de détails

Un moignon de décision est-il un modèle linéaire?

Haitao Du
la source