CatBoost - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CatBoost

CatBoostist eine beliebte und leistungsstarke Open-Source-Implementierung des Gradient Boosting Decision Tree (GBDT) -Algorithmus. GBDT ist ein Algorithmus für überwachtes Lernen, der versucht, eine Zielvariable genau vorherzusagen, indem er ein Ensemble von Schätzungen aus einer Reihe einfacherer und schwächerer Modelle kombiniert.

CatBoost führt zwei wichtige algorithmische Fortschritte bei GBDT ein:

  1. Die Implementierung von Ordered Boosting, einer permutationsgesteuerten Alternative zum klassischen Algorithmus

  2. Ein innovativer Algorithmus zur Verarbeitung kategorialer Merkmale

Beide Techniken wurden entwickelt, um einer Verschiebung der Vorhersage entgegenzuwirken, die durch eine spezielle Art von Ziellecks verursacht wird, die in allen derzeit existierenden Implementierungen von Gradientenverstärkungsalgorithmen auftritt.

Wie benutzt man SageMaker CatBoost

Sie können ihn CatBoost als SageMaker integrierten Amazon-Algorithmus verwenden. Im folgenden Abschnitt wird die Verwendung CatBoost mit dem SageMaker Python-SDK beschrieben. Informationen zur Verwendung CatBoost von der Amazon SageMaker Studio-Benutzeroberfläche aus finden Sie unterSageMaker JumpStart.

  • CatBoost Als integrierten Algorithmus verwenden

    Verwenden Sie den CatBoost integrierten Algorithmus, um einen CatBoost Trainingscontainer zu erstellen, wie im folgenden Codebeispiel gezeigt. Sie können die CatBoost integrierte Algorithmus-Image-URI mithilfe der SageMaker image_uris.retrieve API (oder derget_image_uri API, wenn Sie Amazon SageMaker Python SDK Version 2 verwenden) automatisch erkennen.

    Nachdem Sie die CatBoost Bild-URI angegeben haben, können Sie den CatBoost Container verwenden, um mithilfe der Estimator-API einen SageMaker Schätzer zu erstellen und einen Trainingsjob zu initiieren. Der CatBoost eingebaute Algorithmus wird im Skriptmodus ausgeführt, aber das Trainingsskript wird für Sie bereitgestellt und muss nicht ersetzt werden. Wenn Sie über umfangreiche Erfahrung mit der Erstellung eines SageMaker Trainingsjobs im Skriptmodus verfügen, können Sie Ihre eigenen CatBoost Trainingsskripte integrieren.

    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 )

    Weitere Informationen zum Einrichten CatBoost eines integrierten Algorithmus finden Sie in den folgenden Notebook-Beispielen.

Eingabe- und Ausgabeschnittstelle für den CatBoost Algorithmus

Gradient Boosting arbeitet mit tabellarischen Daten, wobei die Zeilen die Beobachtungen repräsentieren, eine Spalte die Zielvariable oder die Kennzeichnung darstellt und die übrigen Spalten die Merkmale.

Die SageMaker Implementierung von CatBoost unterstützt CSV für Training und Inferenz:

  • Für das Training ContentType müssen gültige Eingaben Text/CSV sein.

  • Für Inferenz ContentType müssen gültige Eingaben Text/CSV sein.

Anmerkung

Bei der CSV-Schulung geht der Algorithmus davon aus, dass die Zielvariable in der ersten Spalte zu finden ist und CSV keinen Header-Eintrag aufweist.

Bei der CSV-Inferenz geht der Algorithmus davon aus, dass die CSV-Eingabe keine Kennzeichnungsspalte hat.

Eingabeformat für Trainingsdaten, Validierungsdaten und kategoriale Merkmale

Achten Sie darauf, wie Sie Ihre Trainingsdaten für die Eingabe in das CatBoost Modell formatieren. Sie müssen den Pfad zu einem Amazon-S3-Bucket angeben, der Ihre Trainings- und Validierungs- Daten enthält. Sie können auch eine Liste der kategorialen Funktionen einschließen. Verwenden Sietraining sowohl dievalidation Kanäle als auch, um Ihre Eingabedaten bereitzustellen. Alternativ hierzu können Sie auch nur dentraining Kanal verwenden.

Verwenden Sietraining sowohl dievalidation Kanäle als auch

Sie können Ihre Eingabedaten über zwei S3-Pfade bereitstellen, einen für dentraining Kanal und einen für denvalidation Kanal. Jeder S3-Pfad kann entweder ein S3-Präfix sein, das auf eine oder mehrere CSV-Dateien verweist, oder ein vollständiger S3-Pfad, der auf eine bestimmte CSV-Datei verweist. Die Zielvariablen sollten sich in der ersten Spalte Ihrer CSV-Datei befinden. Die Prädiktorvariablen (Merkmale) sollten sich in den verbleibenden Spalten befinden. Wenn mehrere CSV-Dateien für dietrainingvalidation Oder-Kanäle bereitgestellt werden, verkettet der CatBoost Algorithmus die Dateien. Die Validierungsdaten werden verwendet, um am Ende jeder Boosting-Iteration ein Validierungsergebnis zu berechnen. Ein vorzeitiger Stopp wird angewendet, wenn sich der Validierungsergebnis nicht mehr verbessert.

Wenn Ihre Prädiktoren kategoriale Merkmale enthalten, können Sie eine JSON-Datei angeben, diecategorical_index.json am selben Ort wie Ihre Trainingsdatendatei oder -dateien benannt ist. Wenn du eine JSON-Datei für kategorische Funktionen bereitstellst, muss deintraining Kanal auf ein S3-Präfix verweisen und nicht auf eine bestimmte CSV-Datei. Diese Datei sollte ein Python-Wörterbuch enthalten, in dem der Schlüssel die Zeichenfolge"cat_index_list" und der Wert eine Liste eindeutiger Ganzzahlen ist. Jede Ganzzahl in der Werteliste sollte den Spaltenindex der entsprechenden kategorialen Merkmale in Ihrer CSV-Datei mit Trainingsdaten angeben. Jeder Wert sollte eine positive Ganzzahl (größer als Null, weil Null den Zielwert darstellt), kleiner alsInt32.MaxValue (2147483647) und kleiner als die Gesamtzahl der Spalten sein. Es sollte nur eine JSON-Datei mit einem kategorialen Index geben.

Benutze nur dentraining Kanal:

Sie können Ihre Eingabedaten alternativ über einen einzigen S3-Pfad für dentraining Kanal bereitstellen. Dieser S3-Pfad sollte auf ein Verzeichnis mit einem benannten Unterverzeichnis verweisentraining/, das eine oder mehrere CSV-Dateien enthält. Sie können optional ein weiteres Unterverzeichnis am selben Speicherort mit dem Namen hinzufügenvalidation/, das auch eine oder mehrere CSV-Dateien enthält. Wenn die Validierungsdaten nicht bereitgestellt werden, werden 20% Ihrer Trainingsdaten nach dem Zufallsprinzip ausgewählt, um als Validierungsdaten zu dienen. Wenn Ihre Prädiktoren kategoriale Merkmale enthalten, können Sie eine JSON-Datei angeben, diecategorical_index.json an derselben Stelle wie Ihre Datenunterverzeichnisse benannt ist.

Anmerkung

Für den CSV-Trainingseingabemodus muss der gesamte für den Algorithmus verfügbare Speicher (Anzahl der Instanzen multipliziert mit dem verfügbaren Speicher inInstanceType) den Trainingsdatensatz aufnehmen können.

SageMaker CatBoost verwendet diecatboost.CatBoostRegressor Modulecatboost.CatBoostClassifier und, um das Modell zu serialisieren oder zu deserialisieren, was zum Speichern oder Laden des Modells verwendet werden kann.

Um ein Modell zu verwenden, das SageMaker CatBoost mit trainiert wurdecatboost
  • Verwenden Sie den folgenden Python-Code:

    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)

Amazon EC2 EC2-Instance-Empfehlung für den CatBoost Algorithmus

SageMaker CatBoost derzeit nur Züge, die CPUs verwenden. CatBoost ist ein speichergebundener (im Gegensatz zu einem computergebundenen) Algorithmus. Daher ist eine Allzweck-Recheninstanz (zum Beispiel M5) eine bessere Wahl als eine rechneroptimierte Instanz (zum Beispiel C5). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um die Schulungsdaten aufzunehmen.

CatBoost Musternotizbücher

Die folgende Tabelle enthält eine Vielzahl von Beispielnotizbüchern, die sich mit verschiedenen Anwendungsfällen des SageMaker CatBoost Amazon-Algorithmus befassen.

Titel des Notizbuches Beschreibung

Tabellarische Klassifizierung mit Amazon SageMaker LightGBM und CatBoost Algorithmus

Dieses Notizbuch demonstriert die Verwendung des SageMaker CatBoost Amazon-Algorithmus zum Trainieren und Hosten eines tabellarischen Klassifizierungsmodells.

Tabellarische Regression mit Amazon SageMaker LightGBM und CatBoost Algorithmus

Dieses Notizbuch demonstriert die Verwendung des SageMaker CatBoost Amazon-Algorithmus zum Trainieren und Hosten eines tabellarischen Regressionsmodells.

Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instanzen, mit denen Sie das Beispiel ausführen können SageMaker, finden Sie unterAmazon SageMaker Notebook-Instances. Nachdem Sie eine Notebook-Instanz erstellt und geöffnet haben, wählen Sie die Registerkarte SageMakerBeispiele, um eine Liste aller SageMaker Beispiele anzuzeigen. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Use (Verwenden) und dann Create copy (Kopie erstellen) aus.