XGBoost-Algorithmus - Amazonas (Amazon SageMaker

Sofern wir eine Übersetzung der englischsprachigen Version des Handbuchs bereitstellen, gilt im Fall von Widersprüchen die englischsprachige Version des Handbuchs. Bei der Übersetzung handelt es sich um eine maschinelle Übersetzung.

XGBoost-Algorithmus

XGBoost (eXtreme Gradient Boosting) ist eine beliebte und effiziente Open-Source-Implementierung eines Baumalgorithmus mit Gradient Boosting. Gradient Boosting ist ein überwachter Lernalgorithmus, der versucht, eine Zielvariable genau vorherzusagen, indem Schätzungen aus einer Menge einfacherer und schwächerer Modelle kombiniert werden. Die Schaltfläche XGBoost -Algorithmus funktioniert gut in Machine Learning-Wettbewerben, da er eine Vielzahl von Datentypen, Beziehungen, Verteilungen und die Vielzahl von Hyperparametern verarbeitet, die Sie feinabstimmen können. Sie können XGBoost für Regression, Klassifizierung (binär und mehrklassig) und Rangfolgeprobleme.

Sie können die neue Version der XGBoost Algorithmus entweder als SageMaker integrierten Algorithmus oder als Framework zur Ausführung von Trainingsskripts in Ihren lokalen Umgebungen. Diese Implementierung bietet einen kleineren Speicherbedarf, eine bessere Protokollierung, eine verbesserte Hyperparameter-Validierung und einen größeren Satz von Metriken als die ursprünglichen Versionen. Es bietet eine XGBoost estimator das ein Trainingsskript in einem verwalteten XGBoost Umgebung. Die aktuelle Version von SageMaker XGBoost basiert auf dem ursprünglichen XGBoost Versionen 0.90 und 1.0.

Unterstützte Versionen

  • Framework-Modus (offene Quelle): 0,90 bis 1, 0,90 bis 2, 1,0 bis 1

  • Algorithmus-Modus: 0,90 bis 1, 0,90 bis 2, 1,0 bis 1

Verwendung SageMaker XGBoost

Mit SageMaker, können Sie XGBoost als integrierter Algorithmus oder Framework. Durch die Verwendung von XGBoost als Framework haben Sie mehr Flexibilität und Zugriff auf erweiterte Szenarien, wie z. B. k-fache Kreuzvalidierung, da Sie Ihre eigenen Schulungsskripts anpassen können.

  • Verwenden XGBoost als Rahmenwerk

    Verwenden XGBoost als Framework zur Ausführung Ihrer benutzerdefinierten Schulungsskripte, die zusätzliche Datenverarbeitung in Ihre Schulungsaufträge integrieren können. Im folgenden Codebeispiel finden Sie SageMaker Python SDK bietet die XGBoost API als Framework auf die gleiche Weise wie andere Frameworks APIs, wie z. B. TensorFlow, , und Sie haben die Möglichkeit MXNet, und PyTorch.

    import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import s3_input, Session # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbose":"1", "objective":"reg:linear", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", framework_version='1.0-1', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    Für ein End-to-End-Beispiel für die Verwendung von SageMaker XGBoost als Rahmen sehen Sie Regression mit Amazon SageMaker XGBoost

  • Verwenden XGBoost als integrierten Algorithmus

    Verwenden Sie die XGBoost integrierten Algorithmus zur Erstellung eines XGBoost -Schulungscontainer wie im folgenden Codebeispiel gezeigt. Sie können automatisch erkennen, XGBoost integrierte Algorithmus-Image-URI mithilfe der SageMaker get_image_uri API. Wenn Sie sicherstellen möchten, dass die get_image_uri API findet den richtigen URI, siehe Allgemeine Parameter für integrierte Algorithmen und suchen Sie nach xgboost aus der vollständigen Liste des integrierten Algorithmus-Images URIs und verfügbaren Regionen.

    Nach der Angabe der XGBoost Bild-URI verwenden, können Sie die XGBoost Containers, um einen Schätzer mithilfe der SageMaker Schätzer-API und Initiieren eines Schulungsauftrags. Dies ist eine XGBoost Der integrierte Algorithmusmodus enthält nicht Ihren eigenen XGBoost -Schulungsskript und wird direkt auf den Eingabe-Datasets ausgeführt.

    import sagemaker import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri from sagemaker.session import s3_input, Session # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. container = get_image_uri(boto3.Session().region_name, 'xgboost', repo_version='1.0-1') # construct a SageMaker estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_name=container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), train_instance_count=1, train_instance_type='ml.m5.2xlarge', train_volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    Wenn Sie nicht angeben, XGBoost Version in der get_image_uri wird die Funktion XGBoost -Version 1.0 - 1 ist standardmäßig.

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

Eingangs-/Ausgangsschnittstelle für den XGBoost Algorithmus (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 Schaltfläche SageMaker Implementierung von XGBoost unterstützt CSV- und libsvm-Formate für Schulung und Inferenz:

  • Für Schulungen ContentType, gültige Eingaben sind text/libsvm (Text/libsvm (Text/libsvm) (Standardeinstellung) oder text/csv (Text/csv) (Text/csv.

  • Für Inferenz ContentType, gültige Eingaben sind text/libsvm (Text/libsvm (Text/libsvm) (Standardeinstellung) oder text/csv (Text/csv) (Text/csv.

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.

Für libsvm-Schulungen geht der Algorithmus davon aus, dass sich die Bezeichnung in der ersten Spalte befindet. Nachfolgende Spalten enthalten die nullbasierten Index-Wert-Paare für Funktionen. Folglich hat jede Zeile das Format: <label> <index0>:<value0> <index1>:<value1> ... Inferenzanforderungen für libsvm besitzen möglicherweise keine Bezeichnungen im libsvm-Format.

Dies unterscheidet sich von anderen SageMaker -Algorithmen, die das Eingabeformat für die protobuf-Schulung verwenden, um eine größere Konsistenz mit dem Standard XGBoost -Datenformate.

Beim CSV-Eingabemodus für Schulungen muss der für den Algorithmus verfügbare Gesamtspeicher (Instance-Zählung *verfügbarer Speicher im InstanceType) in der Lage sein, den Schulungsdatensatz aufzunehmen. Für den libsvm-Schulungseingabemodus ist dies nicht erforderlich, aber empfehlenswert.

SageMaker (Schöpfer) XGBoost verwendet das Python Pickle-Modul zum Serialisieren/Deserialisieren des Modells, das zum Speichern/Laden des Modells verwendet werden kann.

So verwenden Sie ein Modell, das mit trainiert wurde SageMaker XGBoost bei Open Source XGBoost

  • Verwenden Sie den folgenden Python-Code:

    import pickle as pkl model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)

Zur Differenzierung der Bedeutung von markierten Datenpunkten verwenden Sie die Instance-Gewichtungsunterstützung.

  • SageMaker XGBoost ermöglicht es Kunden, die Bedeutung von beschrifteten Datenpunkten zu unterscheiden, indem jeder Instance ein Gewichtungswert zugewiesen wird. Für text/libsvm-Eingaben können Kunden Daten-Instances Gewichtungswerte zuweisen, indem Sie sie nach den Bezeichnungen anfügen. Zum Beispiel: label:weight idx_0:val_0 idx_1:val_1.... (z. B.. Für text/csv (Text/csv) (Text/csv müssen die Kunden die csv_weights -Flag in den Parametern und fügen Sie Gewichtungswerte in der Spalte nach den Bezeichnungen hinzu. Beispiel: label,weight,val_0,val_1,...).

EC2-Instance-Empfehlung für die XGBoost Algorithmus (Algorithmus)

SageMaker XGBoost derzeit nur Züge mit CPUs. Es handelt sich um einen speichergebundenen 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. C4). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um die Schulungsdaten aufzunehmen. Zwar wird die Speicherplatznutzung für die Verarbeitung von Daten, die nicht in den Arbeitsspeicher passen (das out-of-Core-Merkmal mit dem libsvm-Eingabemodus) unterstützt, aber das Schreiben von Cache-Dateien auf die Festplatte verlangsamt die Verarbeitungszeit des Algorithmus.

XGBoost-Beispiel-Notebooks

Für ein Beispiel-Notebook, das zeigt, wie Sie verwenden SageMaker XGBoost als integrierten Algorithmus zum Trainieren und Hosten eines Regressionsmodells, siehe Regression mit der SageMaker XGBoost Algorithmus und. Anweisungen zum Erstellen von und Zugreifen auf Jupyter-Notebook-Instances, die Sie zum Ausführen des Beispiels in SageMaker verwenden können, finden Sie unter Verwenden von SageMaker-Notebook-Instances. Sobald Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker Examples (SageMaker-Beispiele), um eine Liste aller SageMaker-Beispiele zu sehen. Beispiel-Notebooks für die Themenmodellierung mit der XGBoost -Algorithmen befinden sich in der Einführung in Amazon-Algorithmen Abschnitt. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.