XGBoost Version 0.72 - Amazon SageMaker KI

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.

XGBoost Version 0.72

Wichtig

XGBoost 0.72 wird von Amazon SageMaker AI nicht mehr unterstützt. Sie können diese alte Version von XGBoost (als integrierten Algorithmus) weiterhin verwenden, indem Sie deren Image-URI abrufen, wie im folgenden Codebeispiel gezeigt. Für XGBoost ist die Image-URI, die mit :1 endet, für die alte 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")

Wenn Sie neuere Versionen verwenden möchten, müssen Sie die Image-URI-Tags explizit angeben (siehe Unterstützte Versionen).

Diese vorherige Version des XGBoost-Algorithmus von Amazon SageMaker AI basiert auf der Version 0.72. 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 einfacher und schwächerer Modelle kombiniert werden. XGBoost hat in Machine-Learning-Wettbewerben erstaunlich gute Ergebnisse erzielt, da es unterschiedliche Datentypen, Beziehungen, Verteilungen und großen Mengen an Hyperparametern, die für eine verbesserte Passgenauigkeit optimiert werden können, zuverlässig bearbeitet. Diese Flexibilität macht XGBoost zu einer soliden Wahl bei Problemen im Bereich Regression, Klassifizierung (binäre und Mehrfachklassen) und Rangfolge.

Kunden sollten die Verwendung der neuen Version von XGBoost Algorithmus mit Amazon SageMaker AI in Betracht ziehen. Sie können ihn als in SageMaker AI integrierten Algorithmus oder als Framework für die Ausführung von Skripten in ihren lokalen Umgebungen verwenden, wie dies normalerweise bei einem Deep-Learning-Framework von TensorFlow der Fall wäre. Die neue Implementierung hat einen kleineren Speicherbedarf, eine bessere Protokollierung, eine verbesserte Hyperparameter-Validierung und einen erweiterten Satz von Metriken. Die frühere Implementierung von XGBoost bleibt weiterhin für Kunden verfügbar, die die Migration auf die neue Version verschieben müssen. Diese vorherige Implementierung bleibt jedoch an die Version 0.72 von XGBoost gebunden.

E/A-Schnittstelle für XGBoost Version 0.72

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

Die SageMaker-AI-Implementierung von XGBoost unterstützt CSV- und libsvm-Formate für Trainings und Inferenzen:

  • Für den Trainings-ContentType ist text/libsvm (Standardwert) oder text/csv eine gültige Eingabe.

  • Für den Inferenz-ContentType ist text/libsvm oder (der Standardwert) text/csv eine gültige Eingabe.

Anmerkung

Bei der CSV-Training geht der Algorithmus davon aus, dass die Zielvariable in der ersten Spalte zu finden ist und CSV keinen Header-Datensatz aufweist. Bei der CSV-Inferenz geht der Algorithmus davon aus, dass die CSV-Eingabe keine Kennzeichnungsspalte hat.

Für libsvm-Trainings 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 können Bezeichnungen im libsvm-Format haben, müssen es aber nicht.

Dies unterscheidet sich von anderen SageMaker-AI-Algorithmen, die für Trainings das protobuf-Eingabeformat verwenden, um eine größere Konsistenz hinsichtlich der XGBoost-Datenformate zu erzielen.

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

SageMaker AI XGBoost verwendet das Python Pickle-Modul zur Modellserialisierung/-deserialisierung, die zum Speichern/Laden des Modells verwendet werden kann.

So verwenden Sie ein mit SageMaker AI XGBoost trainiertes Modell in Open-Source-XGBoost
  • Verwenden Sie den folgenden Python-Code:

    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)
Zur Differenzierung der Bedeutung von markierten Datenpunkten verwenden Sie die Instance-Gewichtungsunterstützung.
  • SageMaker AI XGBoost ermöglicht Kunden, die Bedeutung von markierten Datenpunkten zu differenzieren, 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. Beispiel, label:weight idx_0:val_0 idx_1:val_1.... Für text/csv-Eingaben müssen Kunden das csv_weights-Flag in den Parametern aktivieren und Gewichtungswerte in der Spalte nach den Bezeichnungen anfügen. Zum Beispiel: label,weight,val_0,val_1,...).

EC2-Instance-Empfehlung für XGBoost Version 0.72

SageMaker AI XGBoost schult derzeit nur unter Verwendung von CPUs. Es handelt sich um einen speichergebundenen Algorithmus (im Gegensatz zu einem rechnergebundenen). Daher ist eine Allzweck-Datenverarbeitungs-Instance (z. B. M4) 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 das Trainingsdaten 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.

Beispiel-Notebooks für XGBoost Version 0.72

Ein Beispiel-Notebook, das zeigt, wie die aktuelle Version von SageMaker AI XGBoost als integrierter Algorithmus zum Trainieren und Hosten eines Regressionsmodells verwendet wird, finden Sie unter Regression mit dem XGBoost-Algorithmus von Amazon SageMaker AI. Um XGBoost Version 0.72 zu verwenden, müssen Sie die Version im Beispiel-Code auf 0.72 ändern. Anweisungen zum Erstellen von und Zugreifen auf Jupyter-Notebook-Instances, die Sie zum Ausführen des Beispiels in SageMaker AI verwenden können, finden Sie unter SageMaker Amazon-Notebook-Instanzen. Nachdem Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker-AI-Beispiele, um eine Liste aller SageMaker-AI-Beispiele anzuzeigen. Die Beispiel-Notebooks zur Themenmodellierung unter Verwendung der XGBoost-Algorithmen finden Sie im Abschnitt Einführung in die Amazon-Algorithmen. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.

Hyperparameter in XGBoost Version 0.72

Die folgende Tabelle enthält die Hyperparameter für den XGBoost-Algorithmus. Dies sind Parameter, die von Benutzern festgelegt werden, um die Schätzung der Modellparameter aus Daten zu erleichtern. Die obligatorischen Hyperparameter, die festgelegt werden müssen, sind zuerst aufgelistet (in alphabetischer Reihenfolge). Die optionalen Hyperparameter, die festgelegt werden können, sind als Nächstes aufgeführt (ebenfalls in alphabetischer Reihenfolge). Der XGBoost-Algorithmus von SageMaker AI ist eine Implementierung des Open-Source-Pakets XGBoost. Derzeit unterstützt SageMaker AI Version 0.72. Weitere Details zur Hyperparameterkonfiguration für diese Version von XGBoost finden Sie unter XGBoost Parameters.

Name des Parameters Beschreibung
num_class

Die Anzahl der Klassen.

Erforderlich, wenn objective auf multi:softmax oder multi:softprob festgelegt ist.

Gültige Werte: Ganzzahl

num_round

Die Anzahl der Runden, die für die Ausführung des Trainings notwendig ist.

Erforderlich

Gültige Werte: Ganzzahl

alpha

L1-Regularisierungsbedingung für Gewichtungen. Eine Erhöhung dieses Werts macht Modelle konservativer.

Optional

Gültige Werte: Gleitkommazahl

Standardwert: 0

base_score

Die erste Prognosebewertung aller Instances, globale Verzerrung.

Optional

Gültige Werte: Gleitkommazahl

Standardwert: 0.5

booster

Welcher Booster empfiehlt sich? Die Werte gbtree und dart verwenden baumbasierte Modelle, während gblinear eine lineare Funktion verwendet.

Optional

Gültige Werte: Zeichenfolge. Entweder gbtree, gblinear oder dart.

Standardwert: gbtree

colsample_bylevel

Teilstichprobenverhältnis von Spalten für jede Teilung auf jeder Ebene.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,1].

Standardwert: 1

colsample_bytree

Teilstichprobenverhältnis von Spalten beim Erstellen jedes Baums.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,1].

Standardwert: 1

csv_weights

Wenn dieses Flag aktiviert ist, differenziert XGBoost die Bedeutung von Instances für CSV-Eingaben, indem die zweite Spalte (die Spalte nach den Bezeichnungen) in Trainingsdaten als Instance-Gewichtungen herangezogen wird.

Optional

Gültige Werte: 0 oder 1

Standardwert: 0

early_stopping_rounds

Das Modell wird so lange trainiert, bis die Validierungsbewertung keine Verbesserung mehr zeigt. Validierungsfehler müssen sich mindestens bei jeder early_stopping_rounds verringern, damit das Training fortgesetzt wird. Das SageMaker-AI-Hosting verwendet das beste Modell zur Inferenz.

Optional

Gültige Werte: Ganzzahl

Standardwert: -

eta

Reduzierung der Schrittgröße in Updates, um Überanpassung zu verhindern. Nach jedem Boosting-Schritt können Sie direkt die Gewichtungen der neuen Merkmale erhalten. Der Parameter eta verkleinert die Merkmalsgewichtungen, sodass der Boosting-Prozess konservativer wird.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,1].

Standardwert: 0.3

eval_metric

Evaluationsmetriken für die Datenvalidierung. Eine Standardmetrik wird je nach Ziel zugewiesen:

  • rmse: zur Regression

  • error: zur Klassifizierung

  • map: für die Rangfolge

Eine Liste gültiger Eingabeparameter finden Sie unter XGBoost Parameters.

Optional

Gültige Werte: Zeichenfolge

Standardwert: Standard gemäß Ziel.

gamma

Es ist eine minimale Verlustreduzierung erforderlich, um eine weitere Partition auf einem Blattknoten des Baums zu erstellen. Je größer, desto konservativer ist der Algorithmus.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,∞).

Standardwert: 0

grow_policy

Steuert die Art und Weise, wie neue Knoten zur Struktur hinzugefügt werden. Wird derzeit nur unterstützt, wenn tree_method auf hist festgelegt ist.

Optional

Gültige Werte: Zeichenfolge. Entweder depthwise oder lossguide.

Standardwert: depthwise

lambda

L2-Regularisierungsbedingung für Gewichtungen. Eine Erhöhung dieses Werts macht Modelle konservativer.

Optional

Gültige Werte: Gleitkommazahl

Standardwert: 1

lambda_bias

L2-Regularisierungsbedingung für Verzerrungen.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0.0, 1.0].

Standardwert: 0

max_bin

Maximale Anzahl diskreter Pakete zum Gruppieren kontinuierlicher Merkmale. Wird nur verwendet, wenn tree_method auf hist festgelegt ist.

Optional

Gültige Werte: Ganzzahl

Standardwert: 256

max_delta_step

Maximaler Delta-Schritt für die Gewichtungsschätzung für jeden Baum. Wenn eine positive Ganzzahl verwendet wird, trägt dies zu einer konservativeren Aktualisierung bei. Die bevorzugte Option ist die Verwendung in logistischer Regression. Setzen Sie sie auf 1-10, um die Aktualisierung zu kontrollieren.

Optional

Gültige Werte: Ganzzahl. Bereich: [0,∞).

Standardwert: 0

max_depth

Maximale Tiefe eines Baums. Durch Erhöhen dieses Wertes wird das Modell komplexer und wahrscheinlich überangepasst. 0 gibt an, dass keine Begrenzung vorliegt. Ein Begrenzung ist erforderlich, wenn grow_policy=depth-wise.

Optional

Gültige Werte: Ganzzahl. Bereich: [0,∞)

Standardwert: 6

max_leaves

Maximale Anzahl der hinzuzufügenden Knoten. Ist nur relevant, wenn grow_policy auf lossguide festgelegt ist.

Optional

Gültige Werte: Ganzzahl

Standardwert: 0

min_child_weight

Minimale Summe der Instance-Gewichtung (Hesse), die für eine untergeordnete Struktur erforderlich ist. Wenn der Partitionsschritt des Baums einen Blattknoten zum Ergebnis hat, dessen Instance-Gewicht-Summe kleiner als min_child_weight ist, verzichtet der Aufbauprozess auf eine weitere Partitionierung. In linearen Regressionsmodellen entspricht dies einer Mindestanzahl von erforderlichen Instances in den einzelnen Knoten. Je größer der Algorithmus, desto konservativer.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,∞).

Standardwert: 1

normalize_type

Typ eines Normalisierungsalgorithmus.

Optional

Gültige Werte: Entweder tree oder forest.

Standardwert: tree

nthread

Anzahl der parallelen Threads zum Ausführen von xgboost.

Optional

Gültige Werte: Ganzzahl

Standardwert: Maximale Anzahl an Threads.

objective

Legt die Lernaufgabe und das entsprechende Lernziel fest. Beispiele: reg:logistic, reg:softmax, multi:squarederror. Eine vollständige Liste gültiger Eingaben finden Sie unter XGBoost Parameters.

Optional

Gültige Werte: Zeichenfolge

Standardwert: reg:squarederror

one_drop

Wenn diese Kennzeichen aktiviert ist, fällt während eines Abbruchs mindestens ein Baum aus.

Optional

Gültige Werte: 0 oder 1

Standardwert: 0

process_type

Typ des auszuführenden Boosting-Prozesses.

Optional

Gültige Werte: Zeichenfolge. Entweder default oder update.

Standardwert: default

rate_drop

Die Ausfallrate, die einen Bruchteil eines vorherigen Baums angibt, der während eines Abbruchs ausfällt.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0.0, 1.0].

Standardwert: 0.0

refresh_leaf

Dies ist ein Parameter des Aktualisierungs-Plugins 'refresh'. Wenn Sie ihn auf true (1) festlegen, werden die Statistiken der Blätter und Knoten eines Baumes aktualisiert. Wenn Sie ihn auf false (0) festlegen, werden nur die Statistiken der Knoten aktualisiert.

Optional

Gültige Werte: 0/1

Standardwert: 1

sample_type

Typ eines Stichprobenalgorithmus.

Optional

Gültige Werte: Entweder uniform oder weighted.

Standardwert: uniform

scale_pos_weight

Kontrolliert die Balance zwischen positiven und negativen Gewichtungen. Er ist nützlich bei Klassen, die nicht im Gleichgewicht sind. Ein typischer Wert dafür: sum(negative cases) / sum(positive cases).

Optional

Gültige Werte: Gleitkommazahl

Standardwert: 1

seed

Numerischer Startwert.

Optional

Gültige Werte: Ganzzahl

Standardwert: 0

silent

0 bedeutet, laufende Nachrichten zu drucken, 1 bedeutet Lautlosmodus.

Gültige Werte: 0 oder 1

Optional

Standardwert: 0

sketch_eps

Wird nur für einen approximativen Greedy-Algorithmus verwendet. Damit ergibt sich eine Paketanzahl von O(1/ sketch_eps). Im Vergleich zur direkten Auswahl der Paketanzahl besteht hier eine theoretische Garantie im Hinblick auf grafikbezogene Genauigkeit.

Optional

Gültige Werte: Float, Bereich: [0, 1].

Standardwert: 0.03

skip_drop

Wahrscheinlichkeit, mit der das Ausfallverfahren während einer Boosting-Iteration übersprungen wird.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0.0, 1.0].

Standardwert: 0.0

subsample

Teilstichprobenverhältnis der Trainings-Instance. Auf 0,5 setzen, bedeutet, dass XGBoost die Hälfte der Daten-Instances nach dem Zufallsprinzip sammelt, um Bäume zu vergrößern. Dies verhindert eine Überanpassung.

Optional

Gültige Werte: Gleitkommazahl. Bereich: [0,1].

Standardwert: 1

tree_method

Der in XGBoost verwendete Baum-Konstruktionsalgorithmus.

Optional

Gültige Werte: Entweder auto, exact, approx oder hist.

Standardwert: auto

tweedie_variance_power

Parameter, der die Varianz der Tweedie-Verteilung steuert.

Optional

Gültige Werte: Gleitkommazahl. Bereich: (1, 2)

Standardwert: 1.5

updater

Eine durch Komma getrennte Zeichenfolge, welche die Reihenfolge festlegt, in der die Baum-Updater ausgeführt werden. Dies ist eine modulare Methode, um Bäume zu erstellen und zu ändern.

Eine vollständige Liste gültiger Eingabeparameter finden Sie unter XGBoost Parameters.

Optional

Gültige Werte: durch Komma getrennte Zeichenfolge.

Standardwert: grow_colmaker, prune

Optimieren eines Modells in XGBoost Version 0.72

Die automatische Modelloptimierung, auch bekannt als Hyperparameteroptimierung, sucht die beste Version eines Modells, indem viele Aufträge ausgeführt werden, die einen Bereich von Hyperparametern in Ihrem Training und in den Validierungsdatensätzen testen. Sie wählen drei Arten von Hyperparametern:

  • eine objective Lernfunktion zur Optimierung beim Modelltraining

  • einen eval_metric, der während der Validierung zur Bewertung der Modellleistung verwendet werden kann

  • ein Satz von Hyperparametern und ein Wertebereich für jeden, der bei der automatischen Abstimmung des Modells verwendet werden kann

Sie wählen die Bewertungsmetrik aus einer Reihe von Bewertungsmetriken aus, die der Algorithmus berechnet. Die automatische Modelloptimierung durchsucht die ausgewählten Hyperparameter nach der Kombination von Werten, die das Modell ergeben, das die Bewertungsmetrik optimiert.

Mehr Informationen über die Modelloptimierung finden Sie unter Automatisches Modelloptiming mit KI SageMaker.

Vom XGBoost Version 0.72-Algorithmus berechnete Metriken

Der auf Version0.72 basierende XGBoost-Algorithmus berechnet die folgenden neun Metriken, die für die Modellvalidierung verwendet werden sollen. Beim Optimieren des Modells wählen Sie eine dieser Metriken aus, um das Modell zu evaluieren. Eine vollständige Liste gültiger eval_metric-Werte finden Sie unter XGBoost-Parameter für die Lernaufgabe

Metrikname Beschreibung Optimierungsrichtung
validation:auc

Area Under a Curve (Fläche unter der Kurve).

Maximieren

validation:error

Binäre Klassifikationsfehlerrate, als Anzahl (falscher Fälle)/Anzahl (aller Fälle) berechnet.

Minimieren

validation:logloss

Negative log-likelihood.

Minimieren

validation:mae

Mittlerer absoluter Fehler.

Minimieren

validation:map

Mittlere durchschnittliche Präzision.

Maximieren

validation:merror

Mehrklassen-Klassifizierungsfehlerrate, als Anzahl (falscher Fälle)/Anzahl (aller Fälle) berechnet.

Minimieren

validation:mlogloss

Negative log-likelihood für Mehrklassen-Klassifizierung.

Minimieren

validation:ndcg

Normalisierter reduzierter kumulativer Gewinn.

Maximieren

validation:rmse

Wurzel des mittleren quadratischen Prognosefehlers (Root Mean Square Error)

Minimieren

Optimierbare XGBoost-Hyperparameter in Version 0.72

Optimieren Sie das XGBoost-Modell mit den folgenden Hyperparametern. Die Hyperparameter mit den größten Auswirkungen auf die Optimierung von XGBoost-Bewertungsmetriken sind: alpha, min_child_weight, subsample, eta und num_round.

Name des Parameters Parametertyp Empfohlene Bereiche
alpha

ContinuousParameterRanges

MinValue: 0, MaxValue: 1000

colsample_bylevel

ContinuousParameterRanges

MinValue: 0.1, MaxValue: 1

colsample_bytree

ContinuousParameterRanges

MinValue: 0.5, MaxValue: 1

eta

ContinuousParameterRanges

MinValue: 0.1, MaxValue: 0.5

gamma

ContinuousParameterRanges

MinValue: 0, MaxValue: 5

lambda

ContinuousParameterRanges

MinValue: 0, MaxValue: 1000

max_delta_step

IntegerParameterRanges

[0, 10]

max_depth

IntegerParameterRanges

[0, 10]

min_child_weight

ContinuousParameterRanges

MinValue: 0, MaxValue: 120

num_round

IntegerParameterRanges

[1, 4000]

subsample

ContinuousParameterRanges

MinValue: 0.5, MaxValue: 1