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.
Wichtig
Die XGBoost Version 0.72 ist von Amazon AI veraltet. SageMaker Sie können diese alte Version von XGBoost (als integrierten Algorithmus) weiterhin verwenden, indem Sie deren Bild-URI abrufen, wie im folgenden Codebeispiel gezeigt. Denn die Bild-URI XGBoost, die mit endet, :1
ist für die alte Version.
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")
Wenn Sie neuere Versionen verwenden möchten, müssen Sie die Image-URI-Tags explizit angeben (siehe Unterstützte Versionen).
Diese vorherige Version des Amazon SageMaker XGBoost AI-Algorithmus basiert auf der Version 0.72. XGBoost
Kunden sollten die Verwendung der neuen Version von XGBoost Algorithmus mit Amazon SageMaker AI in Betracht ziehen. Sie können es als integrierten SageMaker KI-Algorithmus oder als Framework verwenden, um Skripts in ihren lokalen Umgebungen auszuführen, wie sie es normalerweise beispielsweise mit einem Tensorflow-Deep-Learning-Framework tun würden. 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 steht Kunden XGBoost weiterhin zur Verfügung, wenn sie die Migration auf die neue Version verschieben müssen. Diese vorherige Implementierung bleibt jedoch an die Version 0.72 von gebunden. XGBoost
Eingabe-/Ausgabeschnittstelle für die Version 0.72 XGBoost
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 KI-Implementierung von XGBoost unterstützt die Formate CSV und libsvm für Training und Inferenz:
-
Für Training ContentType sind die gültigen Eingaben text/libsvm (Standard) oder text/csv.
-
Für Inference ContentType sind gültige Eingaben text/libsvm oder (Standard) text/csv.
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 KI-Algorithmen, die das Protobuf-Trainingseingabeformat verwenden, um eine größere Konsistenz mit Standarddatenformaten zu gewährleisten. XGBoost
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 für serialize/deserialize the model, which can be used for saving/loading das Modell.
Um ein mit SageMaker KI trainiertes Modell XGBoost in Open Source zu verwenden 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 KI XGBoost ermöglicht es Kunden, die Bedeutung von markierten Datenpunkten zu unterscheiden, indem sie jeder Instanz einen Gewichtungswert zuweisen. 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 dascsv_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 Instanzempfehlung für das Release 0.72 XGBoost
SageMaker KI trainiert XGBoost derzeit nur mit 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. Es unterstützt zwar die Verwendung von Festplattenspeicher zur Verarbeitung von Daten, die nicht in den Hauptspeicher passen (die im libsvm-Eingabemodus verfügbare out-of-core Funktion), aber das Schreiben von Cache-Dateien auf die Festplatte verlangsamt die Verarbeitungszeit des Algorithmus.
XGBoost Beispiel-Notizbücher für Version 0.72
Ein Beispielnotizbuch, das zeigt, wie die neueste Version von SageMaker KI XGBoost als integrierten Algorithmus zum Trainieren und Hosten eines Regressionsmodells verwendet wird, finden Sie unter Regression mit dem Amazon SageMaker XGBoost AI-Algorithmus
XGBoost Version 0.72 Hyperparameter
Die folgende Tabelle enthält die Hyperparameter für den Algorithmus. XGBoost 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 SageMaker XGBoost KI-Algorithmus ist eine Implementierung des Open-Source-Pakets XGBoost . Derzeit unterstützt SageMaker AI Version 0.72. Weitere Informationen zur Hyperparameter-Konfiguration für diese Version von XGBoost finden Sie unter XGBoost Parameter.
Name des Parameters | Beschreibung |
---|---|
num_class |
Die Anzahl der Klassen. Erforderlich, wenn 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 Optional Gültige Werte: Zeichenfolge. Entweder Standardwert: |
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, XGBoost unterscheidet es die Wichtigkeit von Instanzen für die CSV-Eingabe, indem die zweite Spalte (die Spalte nach den Labels) in den Trainingsdaten als Gewichtung der Instanz verwendet 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 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 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:
Eine Liste der gültigen Eingaben finden Sie unter XGBoost Parameter 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 Optional Gültige Werte: Zeichenfolge. Entweder Standardwert: |
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 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 Optional Gültige Werte: Ganzzahl. Bereich: [0,∞) Standardwert: 6 |
max_leaves |
Maximale Anzahl der hinzuzufügenden Knoten. Ist nur relevant, wenn 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 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: Optional Gültige Werte: Zeichenfolge Standardwert: |
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 Standardwert: |
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 Optional Gültige Werte: 0/1 Standardwert: 1 |
sample_type |
Typ eines Stichprobenalgorithmus. Optional Gültige Werte: Entweder Standardwert: |
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: 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/ 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. Ein Wert von 0,5 bedeutet, dass XGBoost zufällig die Hälfte der Dateninstanzen gesammelt wird, um Bäume wachsen zu lassen. Dies verhindert eine Überanpassung. Optional Gültige Werte: Gleitkommazahl. Bereich: [0,1]. Standardwert: 1 |
tree_method |
Der Algorithmus zur Baumkonstruktion, der in verwendet wurde XGBoost. Optional Gültige Werte: Entweder Standardwert: |
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 der gültigen Eingaben finden Sie unter XGBoost Parameter Optional Gültige Werte: durch Komma getrennte Zeichenfolge. Standardwert: |
Optimieren Sie ein Modell der 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 Automatische Modelloptimierung mit KI SageMaker .
Mit dem Release-0.72-Algorithmus berechnete Metriken XGBoost
Der auf Version 0.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 der gültigen eval_metric
Werte finden Sie unter Parameter für XGBoost Lernaufgaben
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 |
Tunable XGBoost Release 0.72 Hyperparameter
Optimieren Sie das XGBoost Modell mit den folgenden Hyperparametern. Die Hyperparameter, die den größten Einfluss auf die Optimierung der XGBoost Bewertungsmetriken haben, sind:alpha
,min_child_weight
, subsample
eta
, und. num_round
Name des Parameters | Parametertyp | Empfohlene Bereiche |
---|---|---|
alpha |
ContinuousParameterRanges |
MinValue: 0, MaxValue: 100 |
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: 100 |
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 |