XGBoost version 0.72 - Amazon SageMaker

XGBoost version 0.72

Important

La version 0.72 de XGBoost est obsolète dans Amazon SageMaker. Vous pouvez toujours utiliser cette ancienne version de XGBoost (comme un algorithme intégré) en extrayant son URI d'image comme indiqué dans l'exemple de code suivant. Pour XGBoost, l'URI d'image se terminant par :1 concerne l'ancienne version.

SageMaker Python SDK v1
import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri xgb_image_uri = get_image_uri(boto3.Session().region_name, "xgboost", repo_version="1")
SageMaker Python SDK v2
import boto3 from sagemaker import image_uris xgb_image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "1")

Si vous souhaitez utiliser des versions plus récentes, vous devez spécifier explicitement les balises d'URI d'image (voir Versions prises en charge).

Cette version précédente de l'algorithme Amazon SageMaker XGBoost est basée sur la version 0.72. XGBoost (eXtreme Gradient Boosting) est une implémentation open source réputée et efficace de l'algorithme d'arbres de boosting de gradient. Le boosting de gradient est un algorithme d'apprentissage supervisé qui tente de prédire avec précision une variable cible en combinant les estimations d'un ensemble de modèles plus simple et plus faibles. XGBoost s'est remarquablement comporté dans les compétitions de machine learning, car il gère efficacement une grande variété de types de données, de relations et de distributions, ainsi que le grand nombre d'hyper-paramètres qui peuvent être modifiés et réglés à des fins d'amélioration. Cette flexibilité fait de XGBoost un choix solide pour les problèmes de régression, de classification (multiclasse et binaire) et de classement.

Les clients doivent envisager d'utiliser la nouvelle version de l' Algorithme XGBoost. Ils peuvent l'utiliser en tant qu'algorithme intégré SageMaker ou en tant que cadre pour exécuter des scripts dans leurs environnements locaux, comme ils le feraient par exemple avec un cadre de deep learning Tensorflow. Cette nouvelle implémentation présente une empreinte mémoire plus petite, une meilleure journalisation, une meilleure validation des hyperparamètres et un ensemble étendu de métriques. L'implémentation antérieure de XGBoost reste disponible pour les clients s'ils ont besoin de reporter leur migration vers la nouvelle version. Mais cette implémentation précédente restera liée à la version 0.72 de XGBoost.

Interface d'entrée/sortie pour la version 0.72 de XGBoost

Le boosting de gradient fonctionne sur les données tabulaires, avec les lignes représentant les observations, une colonne représentant la variable ou l'étiquette cible, et les autres colonnes représentant les fonctions.

L'implémentation SageMaker de XGBoost prend en charge les formats CSV et libsvm pour l'entraînement et l'inférence :

  • Pour Training ContentType, les entrées valides sont text/libsvm (par défaut) ou text/csv.

  • Pour Inference ContentType, les entrées valides sont text/libsvm ou (par défaut) text/csv.

Note

Pour l'entraînement CSV, l'algorithme suppose que la variable cible est dans la première colonne et que le CSV n'a pas d'enregistrement d'en-tête. Pour l'inférence CSV, l'algorithme suppose que l'entrée CSV ne dispose pas de la colonne d'étiquette.

Pour l'entraînement libsvm, l'algorithme suppose que l'étiquette se trouve dans la première colonne. Les colonnes suivantes contiennent les paires de valeur d'index des caractéristiques. Par conséquent, chaque ligne a le format suivant : <label> <index0>:<value0> <index1>:<value1> ... Les demandes d'inférence pour libsvm peuvent avoir ou nom les étiquettes au format libsvm.

Cela diffère des autres algorithmes SageMaker, qui utilisent le format d'entrée d'entraînement protobuf pour maintenir une plus grande cohérence avec les formats de données XGBoost standard.

Pour le mode d'entrée de l'entraînement CSV, la mémoire totale disponible pour l'algorithme (Nombre d'instances * la mémoire disponible dans l'objet InstanceType) doit être en mesure de contenir l'ensemble de données de l'entraînement. Pour le mode d'entrée de l'entraînement libsvm, ce n'est pas obligatoire, mais nous le recommandons.

SageMaker XGBoost utilise le module Python pickle pour sérialiser/désérialiser le modèle, qui peut être utilisé pour l'enregistrement/le chargement du modèle.

Pour utiliser un modèle entraîné avec SageMaker Booster dans le modèle open source XGBoost

  • Utilisez le code Python suivant :

    import pickle as pkl import tarfile import xgboost t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)

Pour différencier l'importance des points de données étiquetés, utilisez Instance Weight Supports

  • SageMaker XGBoost permet aux clients de différencier l'importance des points de données étiquetés en affectant à chaque instance une valeur de pondération. Pour l'entrée text/libsvm, les clients peuvent attribuer des valeurs de pondération aux instances de données en les attachant après les étiquettes. Par exemple : «  », label:weight idx_0:val_0 idx_1:val_1.... Pour l'entrée text/csv, les clients doivent activer l'indicateur csv_weights dans les paramètres et attacher les valeurs de pondération dans la colonne après les étiquettes. Par exemple : «  »: label,weight,val_0,val_1,...).

Recommandation sur les instances EC2 pour la version 0.72 de XGBoost

SageMaker XGBoost n'entraîne actuellement qu'à l'aide des UC. Il s'agit d'un algorithme dépendant de la mémoire (par opposition à un algorithme dépendant du calcul). Par conséquent, une instance de calcul à usage général (par exemple, M4) est un meilleur choix qu'une instance optimisée pour le calcul (par exemple, C4). De plus, nous vous recommandons d'avoir suffisamment de mémoire totale dans les instances sélectionnées pour contenir les données d'entraînement. Bien qu'il prenne en charge l'utilisation de l'espace disque pour gérer les données ne pouvant contenir dans la mémoire principale (la fonction hors noyau disponible avec le mode d'entrée libsvm), écrire des fichiers de cache sur le disque ralentit le temps de traitement de l'algorithme.

Exemples de blocs-notes pour la version 0.72 de XGBoost

Pour obtenir un exemple de bloc-notes qui montre comment utiliser la dernière version de SageMaker XGBoost en tant qu'algorithme intégré pour entraîner et héberger un modèle de régression, veuillez consulter Régression avec l'algorithme Amazon SageMaker XGBoost. Pour utiliser la version 0.72 de XGBoost, vous devez remplacer la version par 0.72 dans l'exemple de code. Pour savoir comment créer des instances de blocs-notes Jupyter et y accéder afin de les utiliser pour exécuter l'exemple dans SageMaker, consultez Utilisation des instances de bloc-notes Amazon SageMaker. Une fois que vous avez créé une instance de bloc-notes et que vous l'avez ouverte, sélectionnez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher la liste de tous les exemples SageMaker. Les exemples de blocs-notes de modélisation de rubrique utilisant les algorithmes NTM se trouvent dans la section Introduction to Amazon algorithms (Présentation des algorithmes Amazon). Pour ouvrir un bloc-notes, cliquez sur son onglet Use (Utiliser) et sélectionnez Create copy (Créer une copie).

Hyperparamètres de la version 0.72 de XGBoost

Le tableau suivant contient les hyperparamètres pour l'algorithme XGBoost. Il s'agit des paramètres qui sont définis par les utilisateurs pour faciliter l'estimation des paramètres modèles issus des données. Les hyperparamètres requis qui doivent être définies sont les premiers répertoriés, dans l'ordre alphabétique. Les hyperparamètres facultatifs qui peuvent être définis sont répertoriés ensuite, également dans l'ordre alphabétique. L'algorithme XGBoost de SageMaker est une implémentation du package XGBoost open source. Actuellement, SageMaker prend en charge la version 0.72. Pour plus de détails sur la configuration des hyperparamètres pour cette version de XGBoost, veuillez consulter Paramètres XGBoost.

Nom du paramètre Description
num_class

Nombre de classes.

Obligatoire si objective a la valeur multi:softmax ou multi:softprob.

Valeurs valides : nombre entier

num_round

Le nombre de séries pour exécuter l'entraînement.

Obligatoire

Valeurs valides : nombre entier

alpha

Condition de régularisation L1 sur les pondérations. L'augmentation de cette valeur rend les modèles plus prudents.

Facultatif

Valeurs valides : Float

Valeur par défaut : 0

base_score

Score de prédiction initiale de toutes les instances, biais global.

Facultatif

Valeurs valides : Float

Valeur par défaut : 0.5

booster

Quel booster utiliser. Les valeurs gbtree et dart utilisent un modèle basé sur un arbre, tandis que gblinear utilise une fonction linéaire.

Facultatif

Valeurs valides : String. gbtree, gblinear ou dart.

Valeur par défaut: gbtree

colsample_bylevel

Ration de sous-échantillon des colonnes pour chaque fractionnement, dans chaque niveau.

Facultatif

Valeurs valides : Float. Plage : [0,1].

Valeur par défaut : 1

colsample_bytree

Ratio de sous-échantillon des colonnes lors de la construction de chaque arbre.

Facultatif

Valeurs valides : Float. Plage : [0,1].

Valeur par défaut : 1

csv_weights

Lorsque cette option est activée, XGBoost différencie l'importance des instances pour l'entrée csv en prenant la deuxième colonne (la colonne après les étiquettes) dans les données d'entraînement, comme les pondérations d'instance.

Facultatif

Valeurs valides : 0 ou 1

Valeur par défaut : 0

early_stopping_rounds

Le modèle entraîne jusqu'à ce que le score de validation arrête l'amélioration. L'erreur de validation doit diminuer au moins chaque early_stopping_rounds pour poursuivre l'entraînement. L'hébergement SageMaker utilisera le meilleur modèle pour l'inférence.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut: -

eta

Réduction de la taille de l'étape utilisée dans les mises à jour pour empêcher le surajustement. Après chaque étape du boosting, vous pouvez directement obtenir les pondérations des nouvelles fonctions. Le paramètre eta diminue réellement les pondérations des fonctions pour rendre le processus de boosting plus prudent.

Facultatif

Valeurs valides : Float. Plage : [0,1].

Valeur par défaut : 0.3

eval_metric

Métriques d'évaluation pour les données de validation. Une métrique est attribué par défaut en fonction de l'objectif :

  • rmse : pour régression

  • error : pour classification

  • map : pour classement

Pour obtenir la liste des entrées valides, consultez XGBoost Parameters.

Facultatif

Valeurs valides : chaîne

Valeur par défaut : valeur par défaut selon l'objectif.

gamma

Diminution de perte minimale requise pour effectuer une partition supplémentaire sur un nœud terminal de l'arbre. Plus la valeur est grande, plus l'algorithme est prudent.

Facultatif

Valeurs valides : Float. Plage : [0,∞).

Valeur par défaut : 0

grow_policy

Contrôle la façon dont les nouveaux nœuds sont ajoutés à l'arbre. Actuellement pris en charge uniquement si tree_method a la valeur hist.

Facultatif

Valeurs valides : String. depthwise ou lossguide.

Valeur par défaut: depthwise

lambda

Condition de régularisation L2 sur les pondérations. L'augmentation de cette valeur rend les modèles plus prudents.

Facultatif

Valeurs valides : Float

Valeur par défaut : 1

lambda_bias

Condition de régularisation L2 sur un biais.

Facultatif

Valeurs valides : Float. Plage : [0.0, 1.0].

Valeur par défaut : 0

max_bin

Nombre maximal de compartiments distincts pour compartimenter les fonctions continues. Utilisé uniquement si tree_method a la valeur hist.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 256

max_delta_step

Étape delta maximale autorisée pour chaque estimation de pondération d'arbre. Quand un nombre entier positif est utilisé, il permet que la mise à jour soit encore plus prudente. L'option privilégiée consiste à l'utiliser dans une régression logistique. Définissez-la entre 1-10 pour aider à contrôler la mise à jour.

Facultatif

Valeurs valides : nombre entier. Plage : [0,∞).

Valeur par défaut : 0

max_depth

Profondeur maximale d'un arbre. L'augmentation de cette valeur rend le modèle plus complexe et susceptible d'être surajusté. 0 indique l'absence de limite. Une limite est requise quand grow_policy=depth-wise.

Facultatif

Valeurs valides : nombre entier. Plage : [0,∞)

Valeur par défaut : 6

max_leaves

Nombre maximal de nœuds à ajouter. Pertinent uniquement si grow_policy a la valeur lossguide.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 0

min_child_weight

Somme minimale de la pondération (Hessian) d'instance nécessaire dans un enfant. Si l'étape de partition de l'arbre se traduit par un nœud terminal avec la somme de pondération d'instance inférieure à min_child_weight, le processus de développement abandonne tout partitionnement supplémentaire. Dans les modèles de régression linéaire, cela correspond simplement à un nombre minimal d'instances requis dans chaque nœud. Plus la valeur est grande, plus l'algorithme est prudent.

Facultatif

Valeurs valides : Float. Plage : [0,∞).

Valeur par défaut : 1

normalize_type

Type d'algorithme de normalisation.

Facultatif

Valeurs valides : tree ou forest.

Valeur par défaut : tree

nthread

Nombre de threads parallèles utilisés pour exécuter xgboost.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : nombre maximal de threads.

objective

Spécifie la tâche d'apprentissage et l'objectif d'apprentissage correspondant. Exemples: reg:logistic, reg:softmax, multi:squarederror. Pour obtenir la liste complète des entrées valides, reportez-vous à XGBoost Parameters.

Facultatif

Valeurs valides : chaîne

Valeur par défaut: reg:squarederror

one_drop

Lorsque cet indicateur est activé, au moins un arbre est toujours supprimé pendant l'opération de dropout.

Facultatif

Valeurs valides : 0 ou 1

Valeur par défaut : 0

process_type

Type de processus de boosting à exécuter.

Facultatif

Valeurs valides : String. default ou update.

Valeur par défaut: default

rate_drop

Taux de dropout qui spécifie la fraction des arbres précédents à supprimer pendant le dropout.

Facultatif

Valeurs valides : Float. Plage : [0.0, 1.0].

Valeur par défaut : 0.0

refresh_leaf

Il s'agit d'un paramètre du plug-in de mise à jour « refresh ». Lorsque ce paramètre est défini surtrue (1), les feuilles de l'arbre et les statistiques des nœuds de l'arbre sont mises à jour. Lorsque la valeur est définie sur false(0), seules les statistiques des nœuds de l'arbre sont mises à jour.

Facultatif

Valeurs valides : 0/1

Valeur par défaut : 1

sample_type

Type d'algorithme d'échantillonnage.

Facultatif

Valeurs valides : uniform ou weighted.

Valeur par défaut: uniform

scale_pos_weight

Contrôle le solde de pondérations positives et négatives. Utile pour les classes non équilibrées. Valeur typique à prendre en compte : sum(negative cases) / sum(positive cases).

Facultatif

Valeurs valides : Float

Valeur par défaut : 1

seed

Nombre d'amorçage aléatoire.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 0

silent

0 signifie l'impression des messages d'exécution, 1 signifie le mode silencieux.

Valeurs valides : 0 ou 1

Facultatif

Valeur par défaut : 0

sketch_eps

Utilisé uniquement pour l'algorithme gourmand (glouton) approximatif. Cela se traduit en O(1/ sketch_eps) nombre de compartiments. Par comparaison avec la sélection directe du nombre de compartiments, celui-ci s'accompagne d'une garantie théorique avec précision d'esquisse.

Facultatif

Valeurs valides : Float, Plage : [0, 1].

Valeur par défaut : 0.03

skip_drop

Probabilité d'ignorer la procédure de dropout pendant une itération de boosting.

Facultatif

Valeurs valides : Float. Plage : [0.0, 1.0].

Valeur par défaut : 0.0

subsample

Ratio de sous-échantillon de l'instance d'entraînement. La valeur 0,5 signifie que XGBoost recueille de façon aléatoire la moitié des instances de données pour développer les arbres. Cela empêche le surajustement.

Facultatif

Valeurs valides : Float. Plage : [0,1].

Valeur par défaut : 1

tree_method

Algorithme de construction des arbres utilisé dans XGBoost.

Facultatif

Valeurs valides : auto, exact, approx ou hist.

Valeur par défaut: auto

tweedie_variance_power

Paramètre qui contrôle la variance de la distribution Tweedie.

Facultatif

Valeurs valides : Float. Plage : (1, 2).

Valeur par défaut : 1.5

updater

Chaîne séparée par des virgules qui définit la séquence des programmes de mise à jour des arbres à exécuter. Cela fournit une solution modulaire pour construire et modifier les arbres.

Pour obtenir la liste complète des entrées valides, reportez-vous à XGBoost Parameters.

Facultatif

Valeurs valides : chaîne séparée par des virgules.

Valeur par défaut : grow_colmaker, prune.

Réglage d'un modèle XGBoost version 0.72

Le réglage de modèle automatique, ou réglage d'hyperparamètre, détecte la meilleure version d'un modèle en exécutant plusieurs tâches qui testent une plage d'hyperparamètres sur vos jeu de données d'entraînement et de valisation. Vous choisissez trois types d'hyperparamètres :

  • une fonction objective d'apprentissage à optimiser pendant l'entraînement du modèle ;

  • une métrique eval_metric à utiliser pour évaluer les performances du modèle lors de la validation ;

  • un ensemble d'hyperparamètres et une plage de valeurs à utiliser pour régler automatiquement le modèle.

Vous choisissez la métrique d'évaluation parmi un ensemble de métriques d'évaluation que l'algorithme calcule. Le réglage de modèle automatique recherche parmi les hyperparamètres choisis la combinaison de valeurs qui produira un modèle permettant d'optimiser la métrique d'évaluation.

Pour plus d'informations sur le réglage de modèle, consultez Réglage de modèle automatique avec SageMaker.

Métriques calculées par l'algorithme XGBoost version 0.72

L'algorithme XGBoost basé sur la version 0.72 calcule les neuf métriques suivantes à utiliser pour la validation de modèle. Lors du réglage du modèle, choisissez l'une de ces métriques pour évaluer le modèle. Pour obtenir la liste complète des valeurs eval_metric valides, reportez-vous à XGBoost Learning Task Parameters.

Nom de la métrique Description Orientation de l'optimisation
validation:auc

Aire sous une courbe (AUC, Area Under a Curve).

Agrandir

validation:error

Taux d'erreurs de classification binaire, calculé comme Nbre cas erronés/Nbre total de cas.

Réduire

validation:logloss

Probabilité de journalisation négative.

Réduire

validation:mae

Erreur absolue moyenne.

Réduire

validation:map

Précision moyenne.

Agrandir

validation:merror

Taux d'erreurs de classification multiclasse, calculé comme Nbre cas erronés/Nbre total de cas.

Réduire

validation:mlogloss

Probabilité de journalisation négative pour la classification multiclasse.

Réduire

validation:ndcg

NDCG (Normalized Discounted Cumulative Gain).

Agrandir

validation:rmse

Racine carrée de l'erreur quadratique moyenne (RMSE)

Réduire

Hyperparamètres réglables de XGBoost version 0.72

Réglez le modèle XGBoost avec les hyperparamètres suivants. Les hyperparamètres ayant le plus d'impact sur l'optimisation des métriques d'évaluation deXGBoost sont : alpha, min_child_weight, subsample, eta et num_round.

Nom du paramètre Type de paramètre Plages recommandées
alpha

ContinuousParameterRanges

Valeur min. : 0, valeur max. : 1000

colsample_bylevel

ContinuousParameterRanges

Valeur min. : 0,1, valeur max. : 1

colsample_bytree

ContinuousParameterRanges

Valeur min. : 0,5, valeur max. : 1

eta

ContinuousParameterRanges

Valeur min. : 0,1, valeur max. : 0,5

gamma

ContinuousParameterRanges

Valeur min. : 0, valeur max. : 5

lambda

ContinuousParameterRanges

Valeur min. : 0, valeur max. : 1000

max_delta_step

IntegerParameterRanges

[0, 10]

max_depth

IntegerParameterRanges

[0, 10]

min_child_weight

ContinuousParameterRanges

Valeur min. : 0, valeur max. : 120

num_round

IntegerParameterRanges

[1, 4000]

subsample

ContinuousParameterRanges

Valeur min. : 0,5, valeur max. : 1