CatBoost - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

CatBoost

CatBoostest une implémentation open source populaire et performante de l'algorithme GBDT (Gradient Boosting Decision Tree). L'algorithme GBDT est un algorithme d'apprentissage supervisé qui tente de prédire avec précision une variable cible en combinant un ensemble d'estimations à partir d'un jeu de modèles plus simples et plus faibles.

CatBoost introduit deux avancées algorithmiques critiques pour le GBDT :

  1. L'implémentation d'un renforcement ordonné, une alternative à l'algorithme classique axée sur la permutation

  2. Un algorithme innovant pour le traitement des caractéristiques catégorielles

Les deux techniques ont été créées pour lutter contre un changement de prédiction causé par un type particulier de fuite de cible présent dans toutes les implémentations existantes des algorithmes avec renforcement de gradient.

Comment utiliser SageMaker CatBoost

Vous pouvez l'utiliser CatBoost comme algorithme SageMaker intégré à Amazon. La section suivante décrit comment utiliser CatBoost le SDK SageMaker Python. Pour plus d'informations sur l'utilisation CatBoost depuis l'interface utilisateur Amazon SageMaker Studio Classic, consultezSageMaker JumpStart.

  • Utilisation CatBoost en tant qu'algorithme intégré

    Utilisez l'algorithme CatBoost intégré pour créer un conteneur d' CatBoost entraînement, comme indiqué dans l'exemple de code suivant. Vous pouvez détecter automatiquement l'URI de l'image de l'algorithme CatBoost intégré à l'aide de l' SageMaker image_uris.retrieveAPI (ou de l'get_image_uriAPI si vous utilisez le SDK Amazon SageMaker Python version 2).

    Après avoir spécifié l'URI de CatBoost l'image, vous pouvez utiliser le CatBoost conteneur pour créer un estimateur à l'aide de l'API SageMaker Estimator et lancer une tâche de formation. L'algorithme CatBoost intégré s'exécute en mode script, mais le script d'entraînement vous est fourni et il n'est pas nécessaire de le remplacer. Si vous avez une vaste expérience de l'utilisation du mode script pour créer une tâche de SageMaker formation, vous pouvez intégrer vos propres scripts de CatBoost formation.

    from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "catboost-classification-model", "*", "training" training_instance_type = "ml.m5.xlarge" # Retrieve the docker image train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type ) # Retrieve the training script train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_multiclass/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version ) # [Optional] Override default hyperparameters with custom values hyperparameters[ "iterations" ] = "500" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "training": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

    Pour plus d'informations sur la configuration en CatBoost tant qu'algorithme intégré, consultez les exemples de blocs-notes suivants.

Interface d'entrée et de sortie pour l' CatBoostalgorithme

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.

La SageMaker mise en œuvre des CatBoost supports CSV pour la formation et l'inférence :

  • Pour la formation ContentType, les entrées valides doivent être au format text/csv.

  • Pour l'inférence ContentType, les entrées valides doivent être du type 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.

Format d'entrée pour les données d'entraînement, les données de validation et les caractéristiques catégorielles

Soyez conscient de la façon dont vous devez formater vos données d'entraînement pour les saisir dans le CatBoost modèle. Vous devez fournir le chemin d'accès à un compartiment Amazon S3 contenant vos données d'entraînement et de validation. Vous pouvez également inclure une liste de caractéristiques catégorielles. Utilisez à la fois les canaux training et validation pour fournir vos données d'entrée. Vous pouvez également utiliser uniquement le canal training.

Utilisation des deux canaux training et validation

Vous pouvez fournir vos données d'entrée par le biais de deux chemins S3, l'un pour le canal training et l'autre pour le canal validation. Chaque chemin S3 peut être soit un préfixe S3 pointant vers un ou plusieurs fichiers CSV, soit un chemin S3 complet pointant vers un fichier CSV spécifique. Les variables cibles doivent figurer dans la première colonne de votre fichier CSV. Les variables prédictives (caractéristiques) doivent figurer dans les autres colonnes. Si plusieurs fichiers CSV sont fournis pour les validation canaux training or, l' CatBoost algorithme concatène les fichiers. Les données de validation sont utilisées pour calculer un score de validation à la fin de chaque itération de renforcement. Un arrêt précoce intervient lorsque le score de validation cesse de s'améliorer.

Si vos prédicteurs incluent des caractéristiques catégorielles, vous pouvez fournir un fichier JSON nommé categorical_index.json au même emplacement que votre ou vos fichiers de données d'entraînement. Si vous fournissez un fichier JSON pour les caractéristiques catégorielles, votre canal training doit pointer vers un préfixe S3 et non vers un fichier CSV spécifique. Ce fichier doit contenir un dictionnaire Python dans lequel la clé est la chaîne "cat_index_list" et la valeur est une liste d'entiers uniques. Chaque entier de la liste de valeurs doit indiquer l'indice de colonne des caractéristiques catégorielles correspondantes dans votre fichier CSV de données d'entraînement. Chaque valeur doit être un entier positif (supérieur à zéro car zéro représente la valeur cible), inférieur à Int32.MaxValue (2147483647) et inférieur au nombre total de colonnes. Il ne doit y avoir qu'un seul fichier JSON d'indices catégoriels.

Utilisation du seul canal training :

Vous pouvez également fournir vos données d'entrée par le biais d'un seul chemin S3 pour le canal training. Ce chemin S3 doit pointer vers un répertoire dont le sous-répertoire nommé training/ contient un ou plusieurs fichiers CSV. Vous pouvez éventuellement inclure un autre sous-répertoire dans le même emplacement appelé validation/ qui contient également un ou plusieurs fichiers CSV. Si les données de validation ne sont pas fournies, 20 % de vos données d'entraînement sont échantillonnées de façon aléatoire pour servir de données de validation. Si vos prédicteurs incluent des caractéristiques catégorielles, vous pouvez fournir un fichier JSON nommé categorical_index.json au même emplacement que vos sous-répertoires de données.

Note

Pour le mode d'entrée de l'entraînement CSV, la mémoire totale disponible pour l'algorithme (nombre d'instances multiplié par la mémoire disponible dans InstanceType) doit pouvoir contenir le jeu de données d'entraînement.

SageMaker CatBoost utilise les catboost.CatBoostRegressor modules catboost.CatBoostClassifier et pour sérialiser ou désérialiser le modèle, ce qui peut être utilisé pour enregistrer ou charger le modèle.

Pour utiliser un modèle entraîné SageMaker CatBoost avec catboost
  • Utilisez le code Python suivant :

    import tarfile from catboost import CatBoostClassifier t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() file_path = os.path.join(model_file_path, "model") model = CatBoostClassifier() model.load_model(file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(dtest)

Recommandation d'instance Amazon EC2 pour l'algorithme CatBoost

SageMaker CatBoost actuellement, seuls les trains utilisent des processeurs. CatBoost est un algorithme lié à la mémoire (par opposition à un algorithme lié au calcul). Par conséquent, une instance de calcul à usage général (par exemple, M5) constitue un meilleur choix qu'une instance optimisée pour le calcul (par exemple, C5). 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.

CatBoost exemples de carnets

Le tableau suivant présente une variété d'exemples de blocs-notes qui répondent à différents cas d'utilisation de l' SageMaker CatBoost algorithme Amazon.

Titre du bloc-notes Description

Classification tabulaire avec Amazon SageMaker LightGBM et algorithme CatBoost

Ce carnet explique l'utilisation de l' SageMaker CatBoostalgorithme Amazon pour entraîner et héberger un modèle de classification tabulaire.

Régression tabulaire avec Amazon SageMaker LightGBM et algorithme CatBoost

Ce carnet explique l'utilisation de l' SageMaker CatBoostalgorithme Amazon pour entraîner et héberger un modèle de régression tabulaire.

Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter dans lesquelles vous pouvez exécuter l'exemple SageMaker, consultez. Instances Amazon SageMaker Notebook Après avoir créé une instance de bloc-notes et l'avoir ouverte, cliquez sur l'onglet SageMakerExemples pour afficher la liste de tous les SageMaker exemples. Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie).