Réglage efficace des paramètres XGBoostsalut @russ_wolfinger ,
J'ai travaillé sur la création de modèles avec XGBoost et je les ai comparés à d'autres modèles d'arbres et modèles non arborescents, comme NN entre autres. Je fais une approche similaire à Nate et retiens une partie de mon ensemble de données d'origine (dans un tableau de données complètement différent), puis j'utilise la plate-forme de comparaison de modèles pour voir dans quelle mesure ces modèles se comparent les uns aux autres avec l'ensemble de données de test.
Je constate que XGBoost ne fonctionne pas aussi bien sur l'ensemble de données de test que je l'aurais prévu. Je trouve que la forêt bootstrap fait un meilleur travail à l'heure actuelle. J'ai comparé la valeur par défaut et ce qui suit comme la meilleure sortie d'une table de réglage pour un XGBoost optimisé. Il se peut que je ne règle pas très bien l'ajustement, donc je me demande s'il existe un moyen plus efficace d'ajuster l'ajustement car il y a tellement de paramètres différents que l'on peut modifier.
J'ai parcouru les exemples et lu la documentation en ligne référencée dans l'aide PDF, mais il n'y a pas beaucoup de description pour une aide pratique lorsqu'il s'agit de régler le modèle. En guise de note, j'utilise une validation unique et non une validation croisée k-fold. Est-il préférable de construire d'abord un modèle très complexe qui pourrait légèrement surajuster, puis de l'élaguer avec les autres paramètres pour le rendre plus conservateur?
DS
Re: Réglage efficace des paramètres XGBoostsalut @russ_wolfinger ,
Merci pour les informations mises à jour. J'ai testé du mieux que j'ai pu la sortie d'un arbre optimisé et d'une forêt bootstrap contre le XGBoost, après avoir ajusté XGBoost à proximité des autres plates-formes que j'ai pu et les sorties étaient bien corrélées. Pas exact, mais très proche!
Suivre la procédure dans le lien que j'ai posté plus tôt a vraiment aidé à aborder un modèle mieux réglé.
Sur quelques autres éléments de rétroaction:
1. J'ai récemment compris ce que fait le "Supprimer les modèles affichés" sous "Comparer", ce qui est comme il le dit, mais je ne savais pas que si une case était décochée, elle la conserverait. Cela a été un moyen utile d'éliminer les ajustements possibles après le tri de la table de données par la validation R ^ 2.
2. J'ai remarqué que lors de l'exécution d'une conception de réglage, il est important de s'assurer que la première colonne a les mêmes valeurs fixes que les colonnes Min / Max ou se trouve quelque part entre les deux (si elle est modifiée) pour que cela fonctionne correctement. Il y a eu plusieurs fois que je réglais une autre valeur, par exemple min_child_weight, et que j'avais entré des valeurs fixes pour les itérations (par exemple, Min / Max 150), mais la première valeur de colonne était restée à 100. Lorsque c'est le cas, il maintient les itérations à 100 et non à 150. Je pense que si le min / max était réglé sur les mêmes valeurs, la première colonne devrait extraire cette valeur et la remplir à nouveau comme elle le fait en utilisant le tableau de réglage pour les paramètres non fixes. Dans l'exemple ci-dessous, je réglais max_depth et min_child_weight, mais j'ai eu quelques cas où j'ai laissé des itérations à 100, même si le min / max était réglé sur 387. J'ai dû revenir manuellement et le changer en 387 pour qu'il calcule correctement.

Merci!,
DS
Re: Réglage efficace des paramètres XGBoostsalut @DS ,
Merci de continuer à poursuivre cela. Je viens de trouver et de résoudre quelques problèmes avec les métadonnées de formule qui peuvent actuellement affecter les résultats de XGBoost dans la plate-forme de comparaison de modèles. Ces mises à jour et plusieurs autres seront disponibles dans JMP Pro 16 Early Adopter dans quelques mois. En attendant, vous pouvez essayer des comparaisons de base avec la plateforme Boosted Tree directement dans votre table JMP.
Les paramètres suivants mappent directement entre Boosted Tree et XGBoost:
- Nombre de couches <-> itérations
- Divisions par arbre <-> max_depth
- Taux d'apprentissage <-> learning_rate
- Taille minimum Split <-> min_child_weight
- Fréquence d'échantillonnage de ligne <-> sous-échantillonnage
- Taux d'échantillonnage de colonne <-> colsample_bytree
Il peut être utile de changer un peu plus le paramètre avancé de XGBoost grow_policy en "lossguide". Comme vous l'indiquez, essayez d'ajuster et d'enregistrer les prédictions de deux modèles similaires, puis tracez les prédictions l'une par rapport à l'autre. Ils doivent être fortement corrélés.
Le tableau de conception de réglage sous Options avancées est comme vous l'avez deviné. Vous devez configurer une table JMP séparée avec des noms de colonne correspondant exactement aux noms de paramètres XGBoost, puis saisir manuellement le nom de cette table JMP dans la zone de paramètres. Vous pouvez créer la table à partir de zéro manuellement ou cliquer avec le bouton droit de la souris dans la table de comparaison de modèles> Enregistrer en tant que table de données pour commencer. Cela permet de spécifier des conceptions arbitraires pour tous les paramètres, mais n'a été testé que légèrement à ce stade, alors assurez-vous de vérifier attentivement les résultats.
Re: Réglage efficace des paramètres XGBoostsalut @russ_wolfinger ,
Merci pour l'information. J'ai trouvé cet article très utile, au moins en passant par un exemple direct et une approche itérative étape par étape du réglage de XGBoost.
https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/
Ma situation particulière compte environ 3500 lignes d'entraînement et 1000 lignes de test. Comme mentionné précédemment, mes lignes de test sont dans une table de données distincte que je concatène au premier modèle, puis je compare les modèles - il s'agit de savoir quel modèle prédit le mieux sur un ensemble de données inutilisé. De plus, j'ai divisé les 3500 lignes d'entraînement en lignes 80/20 train / validate, stratifiées par ma sortie Y que je modélise.
Je vais travailler sur différents schémas de réglage pour voir ce qui fonctionne le mieux. Mais, une chose que j'aimerais faire est de vérifier que XGBoost peut me donner la "même" sortie que, par exemple, la forêt de bootstrap. Est-il possible de prendre les paramètres de la forêt bootstrap ou de l'arbre boosté et de les convertir aux paramètres appropriés dans XGBoost? En principe, XGBoost devrait donner à peu près le même résultat, mais beaucoup plus rapidement. J'ai essayé de lire certains articles sur la façon de faire cela, mais j'ai toujours du mal à traduire les paramètres des autres plates-formes vers XGBoost.
Est-il possible que la plate-forme de comparaison de modèles évalue le modèle XGBoost différemment?
Quelques questions plus éclairantes:
Existe-t-il un moyen de déterminer le nombre d'arbres de la plate-forme XGBoost? Est-ce le champ "itérations"?
Pouvons-nous "alimenter" la plate-forme avec notre propre table de conception de réglage? Sous les Options avancées, il y a un champ avec ce nom, mais il est vide. Si nous avons notre propre table de réglage, pouvons-nous y entrer le nom?
Merci,
DS
Re: Réglage efficace des paramètres XGBoostsalut @DS , Merci beaucoup pour les commentaires. Il existe des méthodes manuelles décentes pour le réglage. J'ai juste essayé googler "tuning xgboost" et les premiers liens semblent raisonnables. Ceux-ci peuvent être considérés un peu plus comme un art que comme une science, mais ils aident à éclairer ce que fait chaque paramètre et à construire une intuition générale sur le fonctionnement de XGBoost.
Je suis curieux de connaître votre configuration au cas où vous auriez la chance de la partager ou de la publier. Dans les nombreuses comparaisons que j'ai faites ainsi que dans des situations de compétition comme Kaggle, j'ai trouvé que XGBoost fonctionnait mieux. Les gains de performances ont tendance à devenir plus forts à mesure que la taille de l'ensemble de données augmente.
On dirait que vous faites un fractionnement classique de formation-validation-test. Il peut être utile d'exécuter cette procédure plusieurs fois avec différents fractionnements pour déterminer la stabilité de vos estimations de performances.
L'un des avantages du pli k est que vous obtenez un prédicteur «ensaché» sur les k ajustements du modèle, et il fonctionnera presque toujours mieux qu'un seul modèle entraîné sur une partie des données. Une approche alternative consiste à régler avec l'approche de validation de votre choix, puis à effectuer un ajustement final à la fin en utilisant l'ensemble des données de formation + validation.