diff --git a/.nojekyll b/.nojekyll index 8fbbc21..521f7ff 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -9a2a8974 \ No newline at end of file +e5e4c443 \ No newline at end of file diff --git a/chapters/chapter3/3-guide_usage_GB.html b/chapters/chapter3/3-guide_usage_GB.html index 838ed6b..eab8358 100644 --- a/chapters/chapter3/3-guide_usage_GB.html +++ b/chapters/chapter3/3-guide_usage_GB.html @@ -293,7 +293,7 @@

1.2 Les hyperparamètres clés du gradient boosting

-

Cette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation. Il est à noter que, dans cette liste d’hyperparamètres, seuls le nombre d’arbres et le taux d’apprentissage concernent l’algorithme de boosting au sens strict; tous les autres hyperparamètres portent sur la construction des arbres pris isolément.

+

Cette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation.

@@ -435,13 +435,10 @@

Voici une présentation des principaux hyperparamètres et de leurs effets sur les performances sur le modèle de gradient boosting:

    -
  • L’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle.
  • -
-

ifférente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE.

-
    -
  • La complexité du modèle global:

    +
  • La mécanique du gradient boosting est contrôlée par seulement trois hyperparamètres (tous les autres hyperparamètres portant sur la construction des arbres pris isolément):

      -
    • le nombre d’arbres est l’hyperparamètre qui contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.

    • +
    • L’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle. Valeur par défaut différente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE. A COMPLETER.

    • +
    • le nombre d’arbres contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.

    • le taux d’apprentissage (learning rate) contrôle l’influence de chaque arbre sur le modèle global; il s’agit de \(\eta\) dans l’équation REFERENCE PARTIE OVERFITTING. Un taux d’apprentissage faible réduit la contribution de chaque arbre, rendant l’apprentissage plus progressif; cela évite qu’un arbre donné ait une influence trop importante sur le modèle global et contribue donc à réduire le surajustement, mais cela nécessite un plus grand nombre d’arbres pour converger vers une solution optimale. Inversement, un taux d’apprentissage élevé accélère l’entraînement mais peut rendre le modèle instable (car trop sensible à un arbre donné), entraîner un surajustement et/ou aboutir à un modèle sous-optimal. La règle générale est de privilégier un taux d’apprentissage faible (entre 0.01 ou 0.3). Le choix du taux d’apprentissage est très lié à celui du nombre d’arbres: plus le taux d’apprentissage sera faible, plus le nombre d’arbres nécessaires pour converger vers une solution optimale sera élevé. Ces deux hyperparamètres doivent donc être optimisés conjointement.

  • La complexité des arbres: la profondeur maximale des arbres, le nombre de feuilles terminales et le nombre minimal d’observations par feuille terminale contrôlent la complexité des weak learners: une profondeur élevée, un grand nombre de feuilles et un faible nombre d’observations par feuille terminale aboutissent à des arbres complexes au pouvoir prédictif plus élevé, mais induisent un risque de surajustement. Par ailleurs, de tels arbres sont plus longs à entraîner que des arbres peu profonds avec un nombre limité de feuilles.

  • diff --git a/pdf/dt_methodes_ensemblistes.pdf b/pdf/dt_methodes_ensemblistes.pdf index f949101..13f9904 100644 Binary files a/pdf/dt_methodes_ensemblistes.pdf and b/pdf/dt_methodes_ensemblistes.pdf differ diff --git a/search.json b/search.json index ebf77dc..5f41a06 100644 --- a/search.json +++ b/search.json @@ -441,7 +441,7 @@ "href": "chapters/chapter3/3-guide_usage_GB.html", "title": "1 Guide d’usage du gradient boosting", "section": "", - "text": "Ce guide propose des recommandations sur l’usage des algorithmes de gradient boosting disponibles dans la littérature, notamment Bentéjac, Csörgő, and Martínez-Muñoz (2021).\nContrairement aux forêts aléatoires, la littérature méthodologique sur l’usages des algorithmes de gradient boosting est assez limitée et relativement peu conclusive.\n. Ce guide comporte un certain nombre de choix méthodologiques forts, comme les implémentations recommandées ou la procédure d’entraînement proposée, et d’autres choix pertinents sont évidemment possibles. C’est pourquoi les recommandations de ce guide doivent être considérées comme un point de départ raisonnable, pas comme un ensemble de règles devant être respectées à tout prix.\n\n\nIl existe quatre implémentations du gradient boosting: XGBoost, LightGBM, CatBoost et scikit-learn. Elles sont toutes des variantes optimisées de l’algorithme de Friedman (2001) et ne diffèrent que sur des points mineurs. De multiples publications les ont comparées, à la fois en matière de pouvoir prédictif et de rapidité d’entraînement (voir notamment Bentéjac, Csörgő, and Martínez-Muñoz (2021) et Alshari, Saleh, and Odabaş (2021)). Cette littérature a abouti à trois conclusions. Premièrement, les différentes implémentations présentent des performances très proches (le classement exact variant d’une publication à l’autre). Deuxièmement, bien optimiser les hyperparamètres est nettement plus important que le choix de l’implémentation. Troisièmement, le temps d’entraînement varie beaucoup d’une implémentation à l’autre, et LightGBM est sensiblement plus rapide que les autres. Dans la mesure où l’optimisation des hyperparamètres est une étape à la fois essentielle et intense en calcul, l’efficacité computationnelle apparaît comme un critère majeur de choix de l’implémentation. C’est pourquoi le présent document décrit et recommande l’usage de LightGBM. Ceci étant, les trois autres implémentations peuvent également être utilisées, notamment si les données sont de taille limitée.\nPar ailleurs, chacune de ces implémentations propose une interface de haut niveau compatible avec scikit-learn. Il est vivement recommandé d’utiliser cette interface car elle minimise les risques d’erreur, facilite la construction de modèles reproductibles et permet d’utiliser l’ensemble des outils proposés par scikit-learn.\n\n\n\nCette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation. Il est à noter que, dans cette liste d’hyperparamètres, seuls le nombre d’arbres et le taux d’apprentissage concernent l’algorithme de boosting au sens strict; tous les autres hyperparamètres portent sur la construction des arbres pris isolément.\n\n\n\nTable 1: Les principaux hyperparamètres de LightGBM\n\n\n\n\n\n\n\n\n\n\nHyperparamètre\nDescription\nValeur par défaut\n\n\n\n\nobjective\nFonction de perte utilisée\nVariable\n\n\nn_estimators ou num_trees\nNombre d’arbres\n100\n\n\nlearning_rate ou eta\nTaux d’apprentissage\n0.1\n\n\nmax_depth\nProfondeur maximale des arbres\n-1 (pas de limite)\n\n\nnum_leaves\nNombre de feuilles terminales des arbres\n31\n\n\nmin_child_samples\nNombre minimal d’observations qu’une feuille terminale doit contenir\n20\n\n\nmin_child_weight\nPoids minimal qu’une feuille terminale doit contenir\n0.001\n\n\nlambda ou lambda_l2\nPénalisation quadratique sur la valeur des feuilles terminales\n0\n\n\nreg_alpha ou lambda_l1\nPénalisation absolue (L1) sur la valeur des feuilles terminales\n0\n\n\nmin_split_gain\nGain minimal nécessaire pour diviser un noeud\n0\n\n\nbagging_fraction\nTaux d’échantillonnage des données d’entraînement\n1\n\n\nfeature_fraction\nTaux d’échantillonnage des colonnes par arbre\n1\n\n\nfeature_fraction_bynode\nTaux d’échantillonnage des colonnes par noeud\n1\n\n\nmax_bin\nNombre de bins utilisés pour discrétiser les variables continues\n255\n\n\nmax_cat_to_onehot\nNombre de modalités en-deça duquel LightGBM utilise le one-hot-encoding\n4\n\n\nmax_cat_threshold\nNombre maximal de splits considérés dans le traitement des variables catégorielles\n32\n\n\nsample_weight\nPondération des observations dans les données d’entraînement\n1\n\n\nscale_pos_weight\nPoids des observations de la classe positive (classification binaire uniquement)\nAucun\n\n\nclass_weight\nPoids des observations de chaque classe (classification multiclasse uniquement)\nAucun\n\n\n\n\n\n\n\n\n\n\n\n\nAttention aux alias!\n\n\n\nIl arrive fréquemment que les hyperparamètres des algorithmes de gradient boosting portent plusieurs noms. Par exemple dans LightGBM, le nombre d’arbres porte les noms suivants: num_iterations, num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators et max_iter (ouf!). C’est une source récurrente de confusion, mais il est facile de s’y retrouver en consultant la page de la documentation sur les hyperparamètres, qui liste les alias:\n\nhyperparamètres de LightGBM;\nhyperparamètres de XGBoost;\nhyperparamètres de CatBoost;\nhyperparamètres de scikit-learn.\n\n\n\nVoici une présentation des principaux hyperparamètres et de leurs effets sur les performances sur le modèle de gradient boosting:\n\nL’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle.\n\nifférente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE.\n\nLa complexité du modèle global:\n\nle nombre d’arbres est l’hyperparamètre qui contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.\nle taux d’apprentissage (learning rate) contrôle l’influence de chaque arbre sur le modèle global; il s’agit de \\(\\eta\\) dans l’équation REFERENCE PARTIE OVERFITTING. Un taux d’apprentissage faible réduit la contribution de chaque arbre, rendant l’apprentissage plus progressif; cela évite qu’un arbre donné ait une influence trop importante sur le modèle global et contribue donc à réduire le surajustement, mais cela nécessite un plus grand nombre d’arbres pour converger vers une solution optimale. Inversement, un taux d’apprentissage élevé accélère l’entraînement mais peut rendre le modèle instable (car trop sensible à un arbre donné), entraîner un surajustement et/ou aboutir à un modèle sous-optimal. La règle générale est de privilégier un taux d’apprentissage faible (entre 0.01 ou 0.3). Le choix du taux d’apprentissage est très lié à celui du nombre d’arbres: plus le taux d’apprentissage sera faible, plus le nombre d’arbres nécessaires pour converger vers une solution optimale sera élevé. Ces deux hyperparamètres doivent donc être optimisés conjointement.\n\nLa complexité des arbres: la profondeur maximale des arbres, le nombre de feuilles terminales et le nombre minimal d’observations par feuille terminale contrôlent la complexité des weak learners: une profondeur élevée, un grand nombre de feuilles et un faible nombre d’observations par feuille terminale aboutissent à des arbres complexes au pouvoir prédictif plus élevé, mais induisent un risque de surajustement. Par ailleurs, de tels arbres sont plus longs à entraîner que des arbres peu profonds avec un nombre limité de feuilles.\nLa lutte contre le surajustement: les pénalisations quadratique et absolue et le gain minimal nécessaire pour diviser un noeud sont des hyperparamètres de régularisation qui jouent un rôle important dans le contrôle de la complexité des weak learners et contribuent à éviter le surajustement. Les pénalisations tendent à réduire le poids \\(w_j\\) des feuilles terminales: la pénalisation quadratique réduit la valeur absolue des poids sans les annuler (il s’agit de \\(\\lambda\\) dans l’équation donnant le poids optimal d’une feuille terminale), tandis que la pénalisation absolue élevée pousse certains poids à être nuls. La pénalisation quadratique est la plus utilisée, notamment parce qu’elle permet d’amoindrir l’influence des points aberrants. Le gain minimal définit la quantité minimale de réduction de la perte requise pour qu’un nœud soit divisé (il s’agit du paramètre \\(\\gamma\\) dans l’équation donnant le gain potentiel d’un split); il contribue à réduire la complexité des arbres et à limiter le surajustement en empêchant l’algorithme de créer des splits dont l’apport est très faible et probablement dû à de petites variations non significatives des données d’entraînement.\nLes hyperparamètres d’échantillonnage: le taux d’échantillonnage des données d’entraînement, le taux d’échantillonnage des colonnes par arbre et le taux d’échantillonnage des colonnes par noeud servent à lutter contre le surajustement et à accélérer l’entraînement (en réduisant la taille des données). L’échantillonnage des observations par arbre et l’échantillonnage des colonnes par noeud jouent exactement le même rôle que sample.fraction ou max_samples, et mtry dans la forêt aléatoire. Il est à noter que l’échantillonnage des données se fait systématiquement sans remise. Comme pour la forêt aléatoire, la valeur optimale du taux d’échantillonnage des colonnes par noeud dépend du nombre de variables réellement pertinentes dans les données, et une valeur plus élevée est préférable si les données comprennent un grand nombre de variables binaires issues du one-hot-encoding des variables catégorielles.\nLes réglages relatifs au retraitement des colonnes:\n\nle nombre de bins utilisés pour discrétiser les variables continues (voir partie PREPROCESSING pour le détail): un faible de bins contribue à accélérer l’entraînement (car le nombre de splits potentiels est faible), mais peut dégrader le pouvoir prédictif si de faibles variations de la variable continue ont un impact notable sur la variable-cible. Inversement, une valeur élevée permet de conserver davantage d’information sur la distribution de la variable continue, mais peut ralentir l’entraînement.\nle nombre de modalités en-deça duquel les variables catégorielles font l’objet d’un one-hot-encoding et le nombre maximal de splits considérés dans le traitement des variables catégorielles définissent la méthode utilisée pour traiter les variables catégorielles (voir partie PREPROCESSING pour le détail).\n\nLes pondérations:\n\nla pondération des observations sert à pondérer les données d’entraînement (voir PARTIE USAGE AVANCE).\nle poids des observations de la classe positive sert à rééquilibrer les données d’entraînement lorsque la classe positive est sous-représentée. Cet hyperparamètre ne sert que pour la classification binaire. Par défaut les deux classes ont le même poids.\nle poids des observations de chaque classe sert à rééquilibrer les données d’entraînement lorsque la part des différentes classes est hétérogène. Cet hyperparamètre ne sert que pour la classification binaire multiclasse. Par défaut toutes les classes ont le même poids.\n\n\n\n\n\n\n\n\nUne différence entre LightGBM et XGBoost\n\n\n\nUne différence notable entre les versions initiales de LightGBM et XGBoost tient à la méthode de construction des arbres:\n\nLightGBM construit les arbres selon une approche par feuille (dite leaf-wise): l’arbre est construit feuille par feuille, et c’est le split avec le gain le plus élevé qui est retenu à chaque étape, et ce quelle que soit sa position dans l’arbre. L’approche leaf-wise est très efficace pour minimiser la fonction de perte, car elle privilégie les splits les plus porteurs de gain, mais elle peut aboutir à un surajustement et à des arbres complexes, déséquilibrés et très profonds. L’hyperparamètre-clé de cette approche est le nombre maximal de feuilles terminales (num_leaves).\nXGBoost construit les arbres selon une approche par niveau (dite depth-wise): l’arbre est construit niveau par niveau, en divisant tous les nœuds du même niveau avant de passer au niveau suivant. L’approche depth-wise n’est pas optimale pour minimiser la fonction de perte, car elle ne recherche pas systématiquement le split le plus performant, mais elle permet d’obtenir des arbres équilibrés et de profondeur limitée. L’hyperparamètre-clé de cette approche est la profondeur maximale des arbres (max_depth).\n\nIl se trouve que l’approche leaf-wise a été ajoutée par la suite à XGBoost, via l’hyperparamètre grow_policy qui peut prendre les valeurs depthwise (valeur par défaut) et lossguide (approche leaf-wise).\n\n\n\n\n\n\nFigure 1\n\n\n\n\n\n\n\n\nProposer une procédure pour l’optimisation des hyperparamètres s’avère plus délicat pour le gradient boosting que pour les forêts aléatoires, pour deux raisons. D’une part, les algorithmes de gradient boosting comprennent un nombre beaucoup plus élevé d’hyperparamètres. D’autre part, la littérature méthodologique sur l’usage pratique des algorithmes de gradient boosting reste assez limitée et peu conclusive (en-dehors des nombreux tutoriels introductifs disponibles sur internet). La\nContrairement aux forêts aléatoires, les valeurs par défaut des hyperparamètres ne constituent pas un point de départ raisonnable (Bentéjac, Csörgő, and Martínez-Muñoz (2021))", + "text": "Ce guide propose des recommandations sur l’usage des algorithmes de gradient boosting disponibles dans la littérature, notamment Bentéjac, Csörgő, and Martínez-Muñoz (2021).\nContrairement aux forêts aléatoires, la littérature méthodologique sur l’usages des algorithmes de gradient boosting est assez limitée et relativement peu conclusive.\n. Ce guide comporte un certain nombre de choix méthodologiques forts, comme les implémentations recommandées ou la procédure d’entraînement proposée, et d’autres choix pertinents sont évidemment possibles. C’est pourquoi les recommandations de ce guide doivent être considérées comme un point de départ raisonnable, pas comme un ensemble de règles devant être respectées à tout prix.\n\n\nIl existe quatre implémentations du gradient boosting: XGBoost, LightGBM, CatBoost et scikit-learn. Elles sont toutes des variantes optimisées de l’algorithme de Friedman (2001) et ne diffèrent que sur des points mineurs. De multiples publications les ont comparées, à la fois en matière de pouvoir prédictif et de rapidité d’entraînement (voir notamment Bentéjac, Csörgő, and Martínez-Muñoz (2021) et Alshari, Saleh, and Odabaş (2021)). Cette littérature a abouti à trois conclusions. Premièrement, les différentes implémentations présentent des performances très proches (le classement exact variant d’une publication à l’autre). Deuxièmement, bien optimiser les hyperparamètres est nettement plus important que le choix de l’implémentation. Troisièmement, le temps d’entraînement varie beaucoup d’une implémentation à l’autre, et LightGBM est sensiblement plus rapide que les autres. Dans la mesure où l’optimisation des hyperparamètres est une étape à la fois essentielle et intense en calcul, l’efficacité computationnelle apparaît comme un critère majeur de choix de l’implémentation. C’est pourquoi le présent document décrit et recommande l’usage de LightGBM. Ceci étant, les trois autres implémentations peuvent également être utilisées, notamment si les données sont de taille limitée.\nPar ailleurs, chacune de ces implémentations propose une interface de haut niveau compatible avec scikit-learn. Il est vivement recommandé d’utiliser cette interface car elle minimise les risques d’erreur, facilite la construction de modèles reproductibles et permet d’utiliser l’ensemble des outils proposés par scikit-learn.\n\n\n\nCette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation.\n\n\n\nTable 1: Les principaux hyperparamètres de LightGBM\n\n\n\n\n\n\n\n\n\n\nHyperparamètre\nDescription\nValeur par défaut\n\n\n\n\nobjective\nFonction de perte utilisée\nVariable\n\n\nn_estimators ou num_trees\nNombre d’arbres\n100\n\n\nlearning_rate ou eta\nTaux d’apprentissage\n0.1\n\n\nmax_depth\nProfondeur maximale des arbres\n-1 (pas de limite)\n\n\nnum_leaves\nNombre de feuilles terminales des arbres\n31\n\n\nmin_child_samples\nNombre minimal d’observations qu’une feuille terminale doit contenir\n20\n\n\nmin_child_weight\nPoids minimal qu’une feuille terminale doit contenir\n0.001\n\n\nlambda ou lambda_l2\nPénalisation quadratique sur la valeur des feuilles terminales\n0\n\n\nreg_alpha ou lambda_l1\nPénalisation absolue (L1) sur la valeur des feuilles terminales\n0\n\n\nmin_split_gain\nGain minimal nécessaire pour diviser un noeud\n0\n\n\nbagging_fraction\nTaux d’échantillonnage des données d’entraînement\n1\n\n\nfeature_fraction\nTaux d’échantillonnage des colonnes par arbre\n1\n\n\nfeature_fraction_bynode\nTaux d’échantillonnage des colonnes par noeud\n1\n\n\nmax_bin\nNombre de bins utilisés pour discrétiser les variables continues\n255\n\n\nmax_cat_to_onehot\nNombre de modalités en-deça duquel LightGBM utilise le one-hot-encoding\n4\n\n\nmax_cat_threshold\nNombre maximal de splits considérés dans le traitement des variables catégorielles\n32\n\n\nsample_weight\nPondération des observations dans les données d’entraînement\n1\n\n\nscale_pos_weight\nPoids des observations de la classe positive (classification binaire uniquement)\nAucun\n\n\nclass_weight\nPoids des observations de chaque classe (classification multiclasse uniquement)\nAucun\n\n\n\n\n\n\n\n\n\n\n\n\nAttention aux alias!\n\n\n\nIl arrive fréquemment que les hyperparamètres des algorithmes de gradient boosting portent plusieurs noms. Par exemple dans LightGBM, le nombre d’arbres porte les noms suivants: num_iterations, num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators et max_iter (ouf!). C’est une source récurrente de confusion, mais il est facile de s’y retrouver en consultant la page de la documentation sur les hyperparamètres, qui liste les alias:\n\nhyperparamètres de LightGBM;\nhyperparamètres de XGBoost;\nhyperparamètres de CatBoost;\nhyperparamètres de scikit-learn.\n\n\n\nVoici une présentation des principaux hyperparamètres et de leurs effets sur les performances sur le modèle de gradient boosting:\n\nLa mécanique du gradient boosting est contrôlée par seulement trois hyperparamètres (tous les autres hyperparamètres portant sur la construction des arbres pris isolément):\n\nL’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle. Valeur par défaut différente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE. A COMPLETER.\nle nombre d’arbres contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.\nle taux d’apprentissage (learning rate) contrôle l’influence de chaque arbre sur le modèle global; il s’agit de \\(\\eta\\) dans l’équation REFERENCE PARTIE OVERFITTING. Un taux d’apprentissage faible réduit la contribution de chaque arbre, rendant l’apprentissage plus progressif; cela évite qu’un arbre donné ait une influence trop importante sur le modèle global et contribue donc à réduire le surajustement, mais cela nécessite un plus grand nombre d’arbres pour converger vers une solution optimale. Inversement, un taux d’apprentissage élevé accélère l’entraînement mais peut rendre le modèle instable (car trop sensible à un arbre donné), entraîner un surajustement et/ou aboutir à un modèle sous-optimal. La règle générale est de privilégier un taux d’apprentissage faible (entre 0.01 ou 0.3). Le choix du taux d’apprentissage est très lié à celui du nombre d’arbres: plus le taux d’apprentissage sera faible, plus le nombre d’arbres nécessaires pour converger vers une solution optimale sera élevé. Ces deux hyperparamètres doivent donc être optimisés conjointement.\n\nLa complexité des arbres: la profondeur maximale des arbres, le nombre de feuilles terminales et le nombre minimal d’observations par feuille terminale contrôlent la complexité des weak learners: une profondeur élevée, un grand nombre de feuilles et un faible nombre d’observations par feuille terminale aboutissent à des arbres complexes au pouvoir prédictif plus élevé, mais induisent un risque de surajustement. Par ailleurs, de tels arbres sont plus longs à entraîner que des arbres peu profonds avec un nombre limité de feuilles.\nLa lutte contre le surajustement: les pénalisations quadratique et absolue et le gain minimal nécessaire pour diviser un noeud sont des hyperparamètres de régularisation qui jouent un rôle important dans le contrôle de la complexité des weak learners et contribuent à éviter le surajustement. Les pénalisations tendent à réduire le poids \\(w_j\\) des feuilles terminales: la pénalisation quadratique réduit la valeur absolue des poids sans les annuler (il s’agit de \\(\\lambda\\) dans l’équation donnant le poids optimal d’une feuille terminale), tandis que la pénalisation absolue élevée pousse certains poids à être nuls. La pénalisation quadratique est la plus utilisée, notamment parce qu’elle permet d’amoindrir l’influence des points aberrants. Le gain minimal définit la quantité minimale de réduction de la perte requise pour qu’un nœud soit divisé (il s’agit du paramètre \\(\\gamma\\) dans l’équation donnant le gain potentiel d’un split); il contribue à réduire la complexité des arbres et à limiter le surajustement en empêchant l’algorithme de créer des splits dont l’apport est très faible et probablement dû à de petites variations non significatives des données d’entraînement.\nLes hyperparamètres d’échantillonnage: le taux d’échantillonnage des données d’entraînement, le taux d’échantillonnage des colonnes par arbre et le taux d’échantillonnage des colonnes par noeud servent à lutter contre le surajustement et à accélérer l’entraînement (en réduisant la taille des données). L’échantillonnage des observations par arbre et l’échantillonnage des colonnes par noeud jouent exactement le même rôle que sample.fraction ou max_samples, et mtry dans la forêt aléatoire. Il est à noter que l’échantillonnage des données se fait systématiquement sans remise. Comme pour la forêt aléatoire, la valeur optimale du taux d’échantillonnage des colonnes par noeud dépend du nombre de variables réellement pertinentes dans les données, et une valeur plus élevée est préférable si les données comprennent un grand nombre de variables binaires issues du one-hot-encoding des variables catégorielles.\nLes réglages relatifs au retraitement des colonnes:\n\nle nombre de bins utilisés pour discrétiser les variables continues (voir partie PREPROCESSING pour le détail): un faible de bins contribue à accélérer l’entraînement (car le nombre de splits potentiels est faible), mais peut dégrader le pouvoir prédictif si de faibles variations de la variable continue ont un impact notable sur la variable-cible. Inversement, une valeur élevée permet de conserver davantage d’information sur la distribution de la variable continue, mais peut ralentir l’entraînement.\nle nombre de modalités en-deça duquel les variables catégorielles font l’objet d’un one-hot-encoding et le nombre maximal de splits considérés dans le traitement des variables catégorielles définissent la méthode utilisée pour traiter les variables catégorielles (voir partie PREPROCESSING pour le détail).\n\nLes pondérations:\n\nla pondération des observations sert à pondérer les données d’entraînement (voir PARTIE USAGE AVANCE).\nle poids des observations de la classe positive sert à rééquilibrer les données d’entraînement lorsque la classe positive est sous-représentée. Cet hyperparamètre ne sert que pour la classification binaire. Par défaut les deux classes ont le même poids.\nle poids des observations de chaque classe sert à rééquilibrer les données d’entraînement lorsque la part des différentes classes est hétérogène. Cet hyperparamètre ne sert que pour la classification binaire multiclasse. Par défaut toutes les classes ont le même poids.\n\n\n\n\n\n\n\n\nUne différence entre LightGBM et XGBoost\n\n\n\nUne différence notable entre les versions initiales de LightGBM et XGBoost tient à la méthode de construction des arbres:\n\nLightGBM construit les arbres selon une approche par feuille (dite leaf-wise): l’arbre est construit feuille par feuille, et c’est le split avec le gain le plus élevé qui est retenu à chaque étape, et ce quelle que soit sa position dans l’arbre. L’approche leaf-wise est très efficace pour minimiser la fonction de perte, car elle privilégie les splits les plus porteurs de gain, mais elle peut aboutir à un surajustement et à des arbres complexes, déséquilibrés et très profonds. L’hyperparamètre-clé de cette approche est le nombre maximal de feuilles terminales (num_leaves).\nXGBoost construit les arbres selon une approche par niveau (dite depth-wise): l’arbre est construit niveau par niveau, en divisant tous les nœuds du même niveau avant de passer au niveau suivant. L’approche depth-wise n’est pas optimale pour minimiser la fonction de perte, car elle ne recherche pas systématiquement le split le plus performant, mais elle permet d’obtenir des arbres équilibrés et de profondeur limitée. L’hyperparamètre-clé de cette approche est la profondeur maximale des arbres (max_depth).\n\nIl se trouve que l’approche leaf-wise a été ajoutée par la suite à XGBoost, via l’hyperparamètre grow_policy qui peut prendre les valeurs depthwise (valeur par défaut) et lossguide (approche leaf-wise).\n\n\n\n\n\n\nFigure 1\n\n\n\n\n\n\n\n\nProposer une procédure pour l’optimisation des hyperparamètres s’avère plus délicat pour le gradient boosting que pour les forêts aléatoires, pour deux raisons. D’une part, les algorithmes de gradient boosting comprennent un nombre beaucoup plus élevé d’hyperparamètres. D’autre part, la littérature méthodologique sur l’usage pratique des algorithmes de gradient boosting reste assez limitée et peu conclusive (en-dehors des nombreux tutoriels introductifs disponibles sur internet). La\nContrairement aux forêts aléatoires, les valeurs par défaut des hyperparamètres ne constituent pas un point de départ raisonnable (Bentéjac, Csörgő, and Martínez-Muñoz (2021))", "crumbs": [ "Comment bien utiliser les algorithmes?", "Guide d'usage du _gradient boosting_" @@ -463,7 +463,7 @@ "href": "chapters/chapter3/3-guide_usage_GB.html#sec-hyperparam-gb", "title": "1 Guide d’usage du gradient boosting", "section": "", - "text": "Cette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation. Il est à noter que, dans cette liste d’hyperparamètres, seuls le nombre d’arbres et le taux d’apprentissage concernent l’algorithme de boosting au sens strict; tous les autres hyperparamètres portent sur la construction des arbres pris isolément.\n\n\n\nTable 1: Les principaux hyperparamètres de LightGBM\n\n\n\n\n\n\n\n\n\n\nHyperparamètre\nDescription\nValeur par défaut\n\n\n\n\nobjective\nFonction de perte utilisée\nVariable\n\n\nn_estimators ou num_trees\nNombre d’arbres\n100\n\n\nlearning_rate ou eta\nTaux d’apprentissage\n0.1\n\n\nmax_depth\nProfondeur maximale des arbres\n-1 (pas de limite)\n\n\nnum_leaves\nNombre de feuilles terminales des arbres\n31\n\n\nmin_child_samples\nNombre minimal d’observations qu’une feuille terminale doit contenir\n20\n\n\nmin_child_weight\nPoids minimal qu’une feuille terminale doit contenir\n0.001\n\n\nlambda ou lambda_l2\nPénalisation quadratique sur la valeur des feuilles terminales\n0\n\n\nreg_alpha ou lambda_l1\nPénalisation absolue (L1) sur la valeur des feuilles terminales\n0\n\n\nmin_split_gain\nGain minimal nécessaire pour diviser un noeud\n0\n\n\nbagging_fraction\nTaux d’échantillonnage des données d’entraînement\n1\n\n\nfeature_fraction\nTaux d’échantillonnage des colonnes par arbre\n1\n\n\nfeature_fraction_bynode\nTaux d’échantillonnage des colonnes par noeud\n1\n\n\nmax_bin\nNombre de bins utilisés pour discrétiser les variables continues\n255\n\n\nmax_cat_to_onehot\nNombre de modalités en-deça duquel LightGBM utilise le one-hot-encoding\n4\n\n\nmax_cat_threshold\nNombre maximal de splits considérés dans le traitement des variables catégorielles\n32\n\n\nsample_weight\nPondération des observations dans les données d’entraînement\n1\n\n\nscale_pos_weight\nPoids des observations de la classe positive (classification binaire uniquement)\nAucun\n\n\nclass_weight\nPoids des observations de chaque classe (classification multiclasse uniquement)\nAucun\n\n\n\n\n\n\n\n\n\n\n\n\nAttention aux alias!\n\n\n\nIl arrive fréquemment que les hyperparamètres des algorithmes de gradient boosting portent plusieurs noms. Par exemple dans LightGBM, le nombre d’arbres porte les noms suivants: num_iterations, num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators et max_iter (ouf!). C’est une source récurrente de confusion, mais il est facile de s’y retrouver en consultant la page de la documentation sur les hyperparamètres, qui liste les alias:\n\nhyperparamètres de LightGBM;\nhyperparamètres de XGBoost;\nhyperparamètres de CatBoost;\nhyperparamètres de scikit-learn.\n\n\n\nVoici une présentation des principaux hyperparamètres et de leurs effets sur les performances sur le modèle de gradient boosting:\n\nL’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle.\n\nifférente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE.\n\nLa complexité du modèle global:\n\nle nombre d’arbres est l’hyperparamètre qui contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.\nle taux d’apprentissage (learning rate) contrôle l’influence de chaque arbre sur le modèle global; il s’agit de \\(\\eta\\) dans l’équation REFERENCE PARTIE OVERFITTING. Un taux d’apprentissage faible réduit la contribution de chaque arbre, rendant l’apprentissage plus progressif; cela évite qu’un arbre donné ait une influence trop importante sur le modèle global et contribue donc à réduire le surajustement, mais cela nécessite un plus grand nombre d’arbres pour converger vers une solution optimale. Inversement, un taux d’apprentissage élevé accélère l’entraînement mais peut rendre le modèle instable (car trop sensible à un arbre donné), entraîner un surajustement et/ou aboutir à un modèle sous-optimal. La règle générale est de privilégier un taux d’apprentissage faible (entre 0.01 ou 0.3). Le choix du taux d’apprentissage est très lié à celui du nombre d’arbres: plus le taux d’apprentissage sera faible, plus le nombre d’arbres nécessaires pour converger vers une solution optimale sera élevé. Ces deux hyperparamètres doivent donc être optimisés conjointement.\n\nLa complexité des arbres: la profondeur maximale des arbres, le nombre de feuilles terminales et le nombre minimal d’observations par feuille terminale contrôlent la complexité des weak learners: une profondeur élevée, un grand nombre de feuilles et un faible nombre d’observations par feuille terminale aboutissent à des arbres complexes au pouvoir prédictif plus élevé, mais induisent un risque de surajustement. Par ailleurs, de tels arbres sont plus longs à entraîner que des arbres peu profonds avec un nombre limité de feuilles.\nLa lutte contre le surajustement: les pénalisations quadratique et absolue et le gain minimal nécessaire pour diviser un noeud sont des hyperparamètres de régularisation qui jouent un rôle important dans le contrôle de la complexité des weak learners et contribuent à éviter le surajustement. Les pénalisations tendent à réduire le poids \\(w_j\\) des feuilles terminales: la pénalisation quadratique réduit la valeur absolue des poids sans les annuler (il s’agit de \\(\\lambda\\) dans l’équation donnant le poids optimal d’une feuille terminale), tandis que la pénalisation absolue élevée pousse certains poids à être nuls. La pénalisation quadratique est la plus utilisée, notamment parce qu’elle permet d’amoindrir l’influence des points aberrants. Le gain minimal définit la quantité minimale de réduction de la perte requise pour qu’un nœud soit divisé (il s’agit du paramètre \\(\\gamma\\) dans l’équation donnant le gain potentiel d’un split); il contribue à réduire la complexité des arbres et à limiter le surajustement en empêchant l’algorithme de créer des splits dont l’apport est très faible et probablement dû à de petites variations non significatives des données d’entraînement.\nLes hyperparamètres d’échantillonnage: le taux d’échantillonnage des données d’entraînement, le taux d’échantillonnage des colonnes par arbre et le taux d’échantillonnage des colonnes par noeud servent à lutter contre le surajustement et à accélérer l’entraînement (en réduisant la taille des données). L’échantillonnage des observations par arbre et l’échantillonnage des colonnes par noeud jouent exactement le même rôle que sample.fraction ou max_samples, et mtry dans la forêt aléatoire. Il est à noter que l’échantillonnage des données se fait systématiquement sans remise. Comme pour la forêt aléatoire, la valeur optimale du taux d’échantillonnage des colonnes par noeud dépend du nombre de variables réellement pertinentes dans les données, et une valeur plus élevée est préférable si les données comprennent un grand nombre de variables binaires issues du one-hot-encoding des variables catégorielles.\nLes réglages relatifs au retraitement des colonnes:\n\nle nombre de bins utilisés pour discrétiser les variables continues (voir partie PREPROCESSING pour le détail): un faible de bins contribue à accélérer l’entraînement (car le nombre de splits potentiels est faible), mais peut dégrader le pouvoir prédictif si de faibles variations de la variable continue ont un impact notable sur la variable-cible. Inversement, une valeur élevée permet de conserver davantage d’information sur la distribution de la variable continue, mais peut ralentir l’entraînement.\nle nombre de modalités en-deça duquel les variables catégorielles font l’objet d’un one-hot-encoding et le nombre maximal de splits considérés dans le traitement des variables catégorielles définissent la méthode utilisée pour traiter les variables catégorielles (voir partie PREPROCESSING pour le détail).\n\nLes pondérations:\n\nla pondération des observations sert à pondérer les données d’entraînement (voir PARTIE USAGE AVANCE).\nle poids des observations de la classe positive sert à rééquilibrer les données d’entraînement lorsque la classe positive est sous-représentée. Cet hyperparamètre ne sert que pour la classification binaire. Par défaut les deux classes ont le même poids.\nle poids des observations de chaque classe sert à rééquilibrer les données d’entraînement lorsque la part des différentes classes est hétérogène. Cet hyperparamètre ne sert que pour la classification binaire multiclasse. Par défaut toutes les classes ont le même poids.\n\n\n\n\n\n\n\n\nUne différence entre LightGBM et XGBoost\n\n\n\nUne différence notable entre les versions initiales de LightGBM et XGBoost tient à la méthode de construction des arbres:\n\nLightGBM construit les arbres selon une approche par feuille (dite leaf-wise): l’arbre est construit feuille par feuille, et c’est le split avec le gain le plus élevé qui est retenu à chaque étape, et ce quelle que soit sa position dans l’arbre. L’approche leaf-wise est très efficace pour minimiser la fonction de perte, car elle privilégie les splits les plus porteurs de gain, mais elle peut aboutir à un surajustement et à des arbres complexes, déséquilibrés et très profonds. L’hyperparamètre-clé de cette approche est le nombre maximal de feuilles terminales (num_leaves).\nXGBoost construit les arbres selon une approche par niveau (dite depth-wise): l’arbre est construit niveau par niveau, en divisant tous les nœuds du même niveau avant de passer au niveau suivant. L’approche depth-wise n’est pas optimale pour minimiser la fonction de perte, car elle ne recherche pas systématiquement le split le plus performant, mais elle permet d’obtenir des arbres équilibrés et de profondeur limitée. L’hyperparamètre-clé de cette approche est la profondeur maximale des arbres (max_depth).\n\nIl se trouve que l’approche leaf-wise a été ajoutée par la suite à XGBoost, via l’hyperparamètre grow_policy qui peut prendre les valeurs depthwise (valeur par défaut) et lossguide (approche leaf-wise).\n\n\n\n\n\n\nFigure 1", + "text": "Cette section décrit en détail les principaux hyperparamètres des algorithmes de gradient boosting listés dans le tableau 1. Les noms des hyperparamètres sont ceux utilisés dans LightGBM. Les hyperparamètres portent généralement le même nom dans les autres implémentations; si ce n’est pas le cas, il est facile de s’y retrouver en lisant attentivement la documentation.\n\n\n\nTable 1: Les principaux hyperparamètres de LightGBM\n\n\n\n\n\n\n\n\n\n\nHyperparamètre\nDescription\nValeur par défaut\n\n\n\n\nobjective\nFonction de perte utilisée\nVariable\n\n\nn_estimators ou num_trees\nNombre d’arbres\n100\n\n\nlearning_rate ou eta\nTaux d’apprentissage\n0.1\n\n\nmax_depth\nProfondeur maximale des arbres\n-1 (pas de limite)\n\n\nnum_leaves\nNombre de feuilles terminales des arbres\n31\n\n\nmin_child_samples\nNombre minimal d’observations qu’une feuille terminale doit contenir\n20\n\n\nmin_child_weight\nPoids minimal qu’une feuille terminale doit contenir\n0.001\n\n\nlambda ou lambda_l2\nPénalisation quadratique sur la valeur des feuilles terminales\n0\n\n\nreg_alpha ou lambda_l1\nPénalisation absolue (L1) sur la valeur des feuilles terminales\n0\n\n\nmin_split_gain\nGain minimal nécessaire pour diviser un noeud\n0\n\n\nbagging_fraction\nTaux d’échantillonnage des données d’entraînement\n1\n\n\nfeature_fraction\nTaux d’échantillonnage des colonnes par arbre\n1\n\n\nfeature_fraction_bynode\nTaux d’échantillonnage des colonnes par noeud\n1\n\n\nmax_bin\nNombre de bins utilisés pour discrétiser les variables continues\n255\n\n\nmax_cat_to_onehot\nNombre de modalités en-deça duquel LightGBM utilise le one-hot-encoding\n4\n\n\nmax_cat_threshold\nNombre maximal de splits considérés dans le traitement des variables catégorielles\n32\n\n\nsample_weight\nPondération des observations dans les données d’entraînement\n1\n\n\nscale_pos_weight\nPoids des observations de la classe positive (classification binaire uniquement)\nAucun\n\n\nclass_weight\nPoids des observations de chaque classe (classification multiclasse uniquement)\nAucun\n\n\n\n\n\n\n\n\n\n\n\n\nAttention aux alias!\n\n\n\nIl arrive fréquemment que les hyperparamètres des algorithmes de gradient boosting portent plusieurs noms. Par exemple dans LightGBM, le nombre d’arbres porte les noms suivants: num_iterations, num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators et max_iter (ouf!). C’est une source récurrente de confusion, mais il est facile de s’y retrouver en consultant la page de la documentation sur les hyperparamètres, qui liste les alias:\n\nhyperparamètres de LightGBM;\nhyperparamètres de XGBoost;\nhyperparamètres de CatBoost;\nhyperparamètres de scikit-learn.\n\n\n\nVoici une présentation des principaux hyperparamètres et de leurs effets sur les performances sur le modèle de gradient boosting:\n\nLa mécanique du gradient boosting est contrôlée par seulement trois hyperparamètres (tous les autres hyperparamètres portant sur la construction des arbres pris isolément):\n\nL’hyperparamètre objective définit à la fois la nature du problème modélisé (régression, classification…) et la fonction de perte utilisée lors de l’entraînement du modèle. Valeur par défaut différente selon les cas, regression_l2 en cas de régression, binary_log_loss pour la classification binaire, LIEN PARTIE AVANCE. A COMPLETER.\nle nombre d’arbres contrôle la complexité générale de l’algorithme. Le point essentiel est que, contrairement aux forêts aléatoires, la performance du gradient boosting sur les données d’entraînement croît continûment avec le nombre d’arbres sans jamais se stabiliser. Le choix du nombre d’arbres est essentiel, et doit viser un équilibre entre augmentation du pouvoir prédictif du modèle (si les arbres supplémentaires permettent au modèle de corriger les erreurs résiduelles), et lutte contre le surajustement (si les arbres supplémentaires captent uniquement les bruits statistiques et les fluctuations spécifiques des données d’entraînement). Par ailleurs, Le choix du nombre d’arbres est très lié à celui du taux d’apprentissage, et il est nécessaire de les optimiser conjointement.\nle taux d’apprentissage (learning rate) contrôle l’influence de chaque arbre sur le modèle global; il s’agit de \\(\\eta\\) dans l’équation REFERENCE PARTIE OVERFITTING. Un taux d’apprentissage faible réduit la contribution de chaque arbre, rendant l’apprentissage plus progressif; cela évite qu’un arbre donné ait une influence trop importante sur le modèle global et contribue donc à réduire le surajustement, mais cela nécessite un plus grand nombre d’arbres pour converger vers une solution optimale. Inversement, un taux d’apprentissage élevé accélère l’entraînement mais peut rendre le modèle instable (car trop sensible à un arbre donné), entraîner un surajustement et/ou aboutir à un modèle sous-optimal. La règle générale est de privilégier un taux d’apprentissage faible (entre 0.01 ou 0.3). Le choix du taux d’apprentissage est très lié à celui du nombre d’arbres: plus le taux d’apprentissage sera faible, plus le nombre d’arbres nécessaires pour converger vers une solution optimale sera élevé. Ces deux hyperparamètres doivent donc être optimisés conjointement.\n\nLa complexité des arbres: la profondeur maximale des arbres, le nombre de feuilles terminales et le nombre minimal d’observations par feuille terminale contrôlent la complexité des weak learners: une profondeur élevée, un grand nombre de feuilles et un faible nombre d’observations par feuille terminale aboutissent à des arbres complexes au pouvoir prédictif plus élevé, mais induisent un risque de surajustement. Par ailleurs, de tels arbres sont plus longs à entraîner que des arbres peu profonds avec un nombre limité de feuilles.\nLa lutte contre le surajustement: les pénalisations quadratique et absolue et le gain minimal nécessaire pour diviser un noeud sont des hyperparamètres de régularisation qui jouent un rôle important dans le contrôle de la complexité des weak learners et contribuent à éviter le surajustement. Les pénalisations tendent à réduire le poids \\(w_j\\) des feuilles terminales: la pénalisation quadratique réduit la valeur absolue des poids sans les annuler (il s’agit de \\(\\lambda\\) dans l’équation donnant le poids optimal d’une feuille terminale), tandis que la pénalisation absolue élevée pousse certains poids à être nuls. La pénalisation quadratique est la plus utilisée, notamment parce qu’elle permet d’amoindrir l’influence des points aberrants. Le gain minimal définit la quantité minimale de réduction de la perte requise pour qu’un nœud soit divisé (il s’agit du paramètre \\(\\gamma\\) dans l’équation donnant le gain potentiel d’un split); il contribue à réduire la complexité des arbres et à limiter le surajustement en empêchant l’algorithme de créer des splits dont l’apport est très faible et probablement dû à de petites variations non significatives des données d’entraînement.\nLes hyperparamètres d’échantillonnage: le taux d’échantillonnage des données d’entraînement, le taux d’échantillonnage des colonnes par arbre et le taux d’échantillonnage des colonnes par noeud servent à lutter contre le surajustement et à accélérer l’entraînement (en réduisant la taille des données). L’échantillonnage des observations par arbre et l’échantillonnage des colonnes par noeud jouent exactement le même rôle que sample.fraction ou max_samples, et mtry dans la forêt aléatoire. Il est à noter que l’échantillonnage des données se fait systématiquement sans remise. Comme pour la forêt aléatoire, la valeur optimale du taux d’échantillonnage des colonnes par noeud dépend du nombre de variables réellement pertinentes dans les données, et une valeur plus élevée est préférable si les données comprennent un grand nombre de variables binaires issues du one-hot-encoding des variables catégorielles.\nLes réglages relatifs au retraitement des colonnes:\n\nle nombre de bins utilisés pour discrétiser les variables continues (voir partie PREPROCESSING pour le détail): un faible de bins contribue à accélérer l’entraînement (car le nombre de splits potentiels est faible), mais peut dégrader le pouvoir prédictif si de faibles variations de la variable continue ont un impact notable sur la variable-cible. Inversement, une valeur élevée permet de conserver davantage d’information sur la distribution de la variable continue, mais peut ralentir l’entraînement.\nle nombre de modalités en-deça duquel les variables catégorielles font l’objet d’un one-hot-encoding et le nombre maximal de splits considérés dans le traitement des variables catégorielles définissent la méthode utilisée pour traiter les variables catégorielles (voir partie PREPROCESSING pour le détail).\n\nLes pondérations:\n\nla pondération des observations sert à pondérer les données d’entraînement (voir PARTIE USAGE AVANCE).\nle poids des observations de la classe positive sert à rééquilibrer les données d’entraînement lorsque la classe positive est sous-représentée. Cet hyperparamètre ne sert que pour la classification binaire. Par défaut les deux classes ont le même poids.\nle poids des observations de chaque classe sert à rééquilibrer les données d’entraînement lorsque la part des différentes classes est hétérogène. Cet hyperparamètre ne sert que pour la classification binaire multiclasse. Par défaut toutes les classes ont le même poids.\n\n\n\n\n\n\n\n\nUne différence entre LightGBM et XGBoost\n\n\n\nUne différence notable entre les versions initiales de LightGBM et XGBoost tient à la méthode de construction des arbres:\n\nLightGBM construit les arbres selon une approche par feuille (dite leaf-wise): l’arbre est construit feuille par feuille, et c’est le split avec le gain le plus élevé qui est retenu à chaque étape, et ce quelle que soit sa position dans l’arbre. L’approche leaf-wise est très efficace pour minimiser la fonction de perte, car elle privilégie les splits les plus porteurs de gain, mais elle peut aboutir à un surajustement et à des arbres complexes, déséquilibrés et très profonds. L’hyperparamètre-clé de cette approche est le nombre maximal de feuilles terminales (num_leaves).\nXGBoost construit les arbres selon une approche par niveau (dite depth-wise): l’arbre est construit niveau par niveau, en divisant tous les nœuds du même niveau avant de passer au niveau suivant. L’approche depth-wise n’est pas optimale pour minimiser la fonction de perte, car elle ne recherche pas systématiquement le split le plus performant, mais elle permet d’obtenir des arbres équilibrés et de profondeur limitée. L’hyperparamètre-clé de cette approche est la profondeur maximale des arbres (max_depth).\n\nIl se trouve que l’approche leaf-wise a été ajoutée par la suite à XGBoost, via l’hyperparamètre grow_policy qui peut prendre les valeurs depthwise (valeur par défaut) et lossguide (approche leaf-wise).\n\n\n\n\n\n\nFigure 1", "crumbs": [ "Comment bien utiliser les algorithmes?", "Guide d'usage du _gradient boosting_" diff --git a/sitemap.xml b/sitemap.xml index d0265ad..6b60f36 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,54 +2,54 @@ https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter3/2-guide_usage_RF.html - 2025-01-15T18:24:47.766Z + 2025-01-15T18:28:57.688Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter3/0-intro.html - 2025-01-15T18:24:47.766Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/4-boosting.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/2-bagging.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/0-intro.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter1/1-survol.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/index.html - 2025-01-15T18:24:47.769Z + 2025-01-15T18:28:57.690Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter1/2-comparaison_GB_RF.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/1-CART.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/3-random_forest.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter2/ajouts_boosting.html - 2025-01-15T18:24:47.765Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter3/1-preparation_donnees.html - 2025-01-15T18:24:47.766Z + 2025-01-15T18:28:57.687Z https://github.com/inseefrlab/DT_methodes_ensemblistes/chapters/chapter3/3-guide_usage_GB.html - 2025-01-15T18:24:47.766Z + 2025-01-15T18:28:57.688Z