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.
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
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 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-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
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 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, 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 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 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 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. 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 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 gültiger Eingabeparameter finden Sie unter XGBoost Parameters Optional Gültige Werte: durch Komma getrennte Zeichenfolge. Standardwert: |
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
objectiveLernfunktion 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 |