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 eines Baumalgorithmus mit Gradient Boosting. GBDT ist ein überwachter Lernalgorithmus, der versucht, eine Zielvariable genau vorherzusagen, indem Schätzungen aus einer Menge einfacher und schwächerer Modelle kombiniert werden.

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

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

  2. Ein innovativer Algorithmus zur Verarbeitung kategorischer Merkmale

Beide Techniken wurden entwickelt, um eine Vorhersageverschiebung zu bekämpfen, die durch eine spezielle Art von Zielleckage verursacht wird, die in allen derzeit existierenden Implementierungen von Gradienten-Boosting-Algorithmen

Funktionsweise von SageMaker CatBoost

Sie können es verwenden CatBoost als Amazon SageMaker integrierten --Algorithmen. Im folgenden Abschnitt wird beschrieben, wie Sie CatBoost mit dem SageMaker Python SDK. Informationen zur Verwendung von CatBoost aus dem Amazonas SageMaker Studio-Benutzeroberfläche, sieheSageMaker JumpStartaus.

  • Verwenden von CatBoost als integrierten ---Algorithmen

    Verwenden der CatBoost integrierten ---Algorithmen zum Erstellen eines CatBoost Schulungscontainer, wie im folgenden Codebeispiel gezeigt. Sie können das automatisch erkennen CatBoostintegrierten Image-URI mit dem SageMaker image_uris.retrieveAPI (oder dasget_image_uri-API bei Verwendung vonAmazon SageMaker Python SDKVersion 2).

    Nach der Angabe des CatBoost Bild-URI können Sie den CatBoost Container zum Konstruieren eines Schätzers unter Verwendung des SageMaker Estimator API und initiieren Sie einen Schulungsauftrag. Die CatBoost Der 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 dem Skriptmodus verfügen, um eine SageMaker Trainingsjob, dann kannst du deinen eigenen einbauen CatBoost Trainings-Skripte.

    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}" 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 hyper-parameters 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}, logs=True, job_name=training_job_name )

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

Eingabe- und Ausgabe-Schnittstelle für das CatBoostAlgorithmus

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ürSchulung ContentTypemüssen gültige Eingabentext/csvaus.

  • FürInferenz ContentTypemüssen gültige Eingabentext/csvaus.

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.

Achte darauf, wie du deine Trainingsdaten formatierst, um sie in den CatBoost -Modell. Sie müssen den Pfad zu einem Amazon S3 S3-Bucket angeben, der Unterverzeichnisse für Ihr Training und optionale Validierungsdaten enthält. Sie können auch eine Liste von kategorialen Funktionen hinzufügen.

  • Trainingsdaten-Eingabeformat: Deine Trainingsdaten sollten sich in einem Unterverzeichnis mit dem Namentrain/dasdata.csvfile. Die Zielvariablen sollten sich in der ersten Spalte vondata.csvaus. Die Prädiktorvariablen (Features) sollten sich in den verbleibenden Spalten befinden.

  • Gültigkeitsdateneingabeformat: Sie können optional ein anderes Verzeichnis mit dem Namenvalidation/das hat auch einedata.csvfile. Die Validierungsdaten werden verwendet, um am Ende jeder Boosting-Iteration einen Validierungswert zu berechnen. Frühes Stoppen wird angewendet, wenn die Validierungsbewertung keine Verbesserung mehr zeigt Wenn die Validierungsdaten nicht bereitgestellt werden, werden 20% Ihrer Trainingsdaten nach dem Zufallsprinzip als Validierungsdaten entnommen.

  • Kategorische Merkmale Eingabeformat: Wenn Ihre Prädiktoren kategoriale Merkmale enthalten, können Sie eine JSON-Datei mit dem Namencategorical_index.jsonan derselben Stelle wie Ihre Datenverzeichnisse. Diese Datei sollte ein Python-Dictionary enthalten, wobei der Schlüssel die Zeichenfolge ist"cat_index_list"und der Wert ist eine Liste von eindeutigen ganzen Zahlen. Jede Ganzzahl in der Werteliste sollte den Spaltenindex der entsprechenden kategorialen Merkmale in der CSV-Datei Ihrer Trainingsdaten angeben. Jeder Wert sollte eine positive Ganzzahl sein (größer als Null, weil Null den Zielwert darstellt), kleiner alsInt32.MaxValue(2147483647) und weniger als die Gesamtanzahl der Spalten. Es sollte nur eine JSON-Datei mit kategorischem Index geben.

Im CSV-Eingabemodus für Schulungen wird der für den Algorithmus verfügbare Gesamtspeicher (Instance-Zählung) multipliziert mit dem imInstanceType) muss in der Lage sein, den Trainingsdatensatz zu speichern.

SageMaker CatBoost verwendet dascatboost.CatBoostClassifierundcatboost.CatBoostRegressorModule zum Serialisieren oder Deserialisieren des Modells, die zum Speichern oder Laden des Modells verwendet werden können.

So verwenden Sie ein Modell, mit dem Sie SageMaker CatBoost mitcatboost

  • 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)

Empfehlung Amazon EC2 EC2-Instance für CatBoostAlgorithmus

SageMaker CatBoost derzeit nur unter Verwendung von CPUs. CatBoost ist ein speichergebundener Algorithmus (im Gegensatz zu einem rechnergebundenen). Daher ist eine Allzweck-Datenverarbeitungs-Instance (z. B. M5) die bessere Wahl gegenüber einer rechneroptimierten Instance (z. B. C5). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um die Schulungsdaten aufzunehmen.

CatBoost -Beispiel-Notebooks

Die folgende Tabelle enthält eine Vielzahl von Beispiel-Notebooks, die sich mit verschiedenen Anwendungsfällen von Amazon befassen SageMaker CatBoost Algorithmus.

Notebooks Title Beschreibung

Tabellarische Klassifizierung mit Amazon SageMaker lightGBM und CatBoost Algorithmus

Dieses Notizbuch zeigt die Nutzung des Amazonas SageMaker CatBoostAlgorithmus zum Trainieren und Hosten eines tabellarischen Klassifikationsmodells.

Tabellarische Regression mit Amazon SageMaker lightGBM und CatBoost Algorithmus

Dieses Notizbuch zeigt die Nutzung des Amazonas SageMaker CatBoostAlgorithmus zum Trainieren und Hosten eines tabellarischen Regressionsmodells.

Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instances, die Sie verwenden können, um das Beispiel in SageMakerfinden Sie unterVerwenden von Amazon Amazon SageMaker Notebook-Instancesaus. Nach dem Erstellen und Öffnen einer Notebook-Instance wählen SieSageMakerBeispiele, um eine Liste aller SageMaker -Beispiele Zum Öffnen eines Notebooks wählen Sie die Registerkarte Use (Verwenden) und dann Create copy (Kopie erstellen) aus.