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!
la source
Réponses:
Réponse courte à votre question:
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éfinircolsample_bytree
des 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:
où est le nombre d'itérations de l'amplification, est le modèle pour l' itération .M bm mth
Si l'apprenant de base est linéaire, par exemple, supposons que nous simplement itérations, et et , alors2 b1=β0+β1x b2=θ0+θ1x
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
Maintenant, vérifiez les quatre premières itérations.
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).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?
la source