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

9

Je sais comment implémenter une fonction objectif linéaire et des boosts linéaires dans XGBoost. Ma question concrète est la suivante: lorsque l'algorithme correspond au résiduel (ou au gradient négatif), utilise-t-il une caractéristique à chaque étape (c.-à-d. Modèle univarié) ou toutes les caractéristiques (modèle multivarié)?

Toute référence à la documentation sur les boosts linéaires dans XGBoost sera appréciée.

EDIT: les boosts linéaires peuvent être implémentés dans XGBoost en définissant le paramètre 'booster' sur 'gblinear'. Voir: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ pour des informations utiles sur le boost linéaire. Notez que je ne parle pas de la fonction objectif (qui peut aussi être linéaire) mais des boosts eux-mêmes.

Merci!

Escachator
la source
1
Je ne sais pas comment il est mis en œuvre mais je ne vois aucune raison pour qu'il ne considère qu'une seule fonctionnalité à la fois
Alexey Grigorev
@AlexeyGrigorev très probablement, il faut de nombreuses fonctionnalités à la fois, mais alors, comment ces fonctionnalités sont-elles sélectionnées? Tout document sur le processus spécifique de boost linéaire serait très clair.
Escachator

Réponses:

17

Réponse courte à votre question:

lorsque l'algorithme correspond au résidu (ou au gradient négatif), utilise-t-il une caractéristique à chaque étape (c.-à-d. modèle univarié) ou toutes les caractéristiques (modèle multivarié)?

L'algorithme utilise une fonctionnalité ou toutes les fonctionnalités dépendent de votre configuration. Dans ma longue réponse ci-dessous, dans les exemples de moignon de décision et d'apprentissage linéaire, ils utilisent toutes les fonctionnalités, mais si vous le souhaitez, vous pouvez également adapter un sous-ensemble de fonctionnalités. Les colonnes d'échantillonnage (entités) sont considérées comme réduisant la variance du modèle ou augmentant la «robustesse» du modèle, surtout si vous avez un grand nombre d'entités.

Dans xgboost, pour l'apprenant d'arborescence, vous pouvez définir colsample_bytreedes exemples d'entités à adapter à chaque itération. Pour l'apprenant de base linéaire, il n'y a pas de telles options, il devrait donc s'adapter à toutes les fonctionnalités. De plus, peu de gens utilisent l'apprenant linéaire dans xgboost ou le gradient boosting en général.


Réponse longue pour linéaire comme apprenant faible pour booster:

Dans la plupart des cas, nous ne pouvons pas utiliser l'apprenant linéaire comme apprenant de base. La raison est simple: l'ajout de plusieurs modèles linéaires sera toujours un modèle linéaire.

Pour dynamiser notre modèle, nous avons une somme d'apprenants de base:

f(x)=m=1Mbm(x)

où est le nombre d'itérations de l'amplification, est le modèle pour l' itération .Mbmmth

Si l'apprenant de base est linéaire, par exemple, supposons que nous simplement itérations, et et , alors2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

qui est un modèle linéaire simple! En d'autres termes, le modèle d'ensemble a le "même pouvoir" avec l'apprenant de base!

Plus important encore, si nous utilisons un modèle linéaire comme apprenant de base, nous pouvons simplement le faire en une étape en résolvant le système linéaire au lieu de passer par plusieurs itérations dans le boosting.XTXβ=XTy


Par conséquent, les gens aimeraient utiliser d'autres modèles que le modèle linéaire comme apprenant de base. L'arbre est une bonne option, car l'ajout de deux arbres n'est pas égal à un arbre. Je vais le faire une démonstration avec un cas simple: moignon de décision, qui est un arbre avec 1 fractionnement uniquement.

Je fais un ajustement de fonction, où les données sont générées par une simple fonction quadratique, . Voici le contour du terrain rempli (à gauche) et le raccord de surpression de décision finale (à droite).f(x,y)=x2+y2

entrez la description de l'image ici

Maintenant, vérifiez les quatre premières itérations.

entrez la description de l'image ici

Notez que, différent de l'apprenant linéaire, le modèle en 4ème itération ne peut pas être réalisé par une itération (un seul moignon de décision) avec d'autres paramètres.


Jusqu'à présent, j'ai expliqué pourquoi les gens n'utilisaient pas l'apprenant linéaire comme apprenant de base. Cependant, rien n'empêche les gens de le faire. Si nous utilisons le modèle linéaire comme apprenant de base et restreignons le nombre d'itérations, cela équivaut à résoudre un système linéaire, mais limitons le nombre d'itérations pendant le processus de résolution.

Le même exemple, mais dans le tracé 3D, la courbe rouge correspond aux données et le plan vert correspond à l'ajustement final. Vous pouvez facilement voir, le modèle final est un modèle linéaire, et il z=mean(data$label)est parallèle au plan x, y. (Vous pouvez penser pourquoi? C'est parce que nos données sont "symétriques", donc toute inclinaison de l'avion augmentera la perte). Maintenant, regardez ce qui s'est passé dans les 4 premières itérations: le modèle ajusté monte lentement à la valeur optimale (moyenne).

entrez la description de l'image ici


Conclusion finale, l'apprenant linéaire n'est pas largement utilisé, mais rien n'empêche les gens de l'utiliser ou de l'implémenter dans une bibliothèque R. De plus, vous pouvez l'utiliser et limiter le nombre d'itérations pour régulariser le modèle.

Article similaire:

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

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

Haitao Du
la source
1
Je dirais que la combinaison de n arbres est un arbre, peu importe la taille de n!
Metariat
@Metariat NO !, la combinaison d'arbres n'est PAS un arbre !. pour l'arbre, vous verrez la forme en "T" sur la fente. Mais le moignon boosté vous verrez la forme "#". c'est-à-dire que la division traversera d'autres divisions!
Haitao Du
Pouvez-vous donner un exemple de n arbres? Je vais vous donner un arbre équivalent!
Metariat
@Metariat désolé je n'ai pas le temps pour l'instant. Mais je suis sûr que l'augmentation du moignon de décision ne peut pas être facilement générée par un arbre de décision. Reviendrai à cette question quand j'aurai le temps.
Haitao Du
1
Je suis d'accord que cette combinaison de n arbres est toujours un arbre, mais cet arbre sera considérablement plus grand. Dans le pire des cas, le nombre de feuilles est égal au produit du nombre de feuilles dans tous les arbres d'entrée, de sorte que la complexité d'un tel arbre n'est pas pratique. En revanche, dans le cas de fonctions linéaires, la complexité est exactement la même.
Tomek Tarczynski