HistGradientBoostingRegressor#
- class sklearn.ensemble.HistGradientBoostingRegressor(loss='squared_error', *, quantile=None, learning_rate=0.1, max_iter=100, max_leaf_nodes=31, max_depth=None, min_samples_leaf=20, l2_regularization=0.0, max_features=1.0, max_bins=255, categorical_features='from_dtype', monotonic_cst=None, interaction_cst=None, warm_start=False, early_stopping='auto', scoring='loss', validation_fraction=0.1, n_iter_no_change=10, tol=1e-07, verbose=0, random_state=None)[Quelle]#
Histogramm-basierter Gradient Boosting Regressionsbaum.
Dieser Schätzer ist für große Datensätze (n_samples >= 10 000) wesentlich schneller als
GradientBoostingRegressor.Dieser Schätzer unterstützt fehlende Werte (NaNs) nativ. Während des Trainings lernt der Baumgenerator an jedem Split-Punkt, ob Samples mit fehlenden Werten aufgrund des potenziellen Gewinns nach links oder rechts gehen sollen. Bei der Vorhersage werden Samples mit fehlenden Werten entsprechend dem linken oder rechten Kind zugewiesen. Wenn während des Trainings für ein bestimmtes Merkmal keine fehlenden Werte gefunden wurden, werden Samples mit fehlenden Werten dem Kind zugewiesen, das die meisten Samples hat. Ein Anwendungsbeispiel dieser Funktion finden Sie unter Features in Histogram Gradient Boosting Trees.
Diese Implementierung ist inspiriert von LightGBM.
Mehr dazu im Benutzerhandbuch.
Hinzugefügt in Version 0.21.
- Parameter:
- loss{‘squared_error’, ‘absolute_error’, ‘gamma’, ‘poisson’, ‘quantile’}, Standard=’squared_error’
Die zu verwendende Verlustfunktion im Boosting-Prozess. Beachten Sie, dass die Verluste „squared error“, „gamma“ und „poisson“ intern „half least squares loss“, „half gamma deviance“ und „half poisson deviance“ implementieren, um die Berechnung des Gradienten zu vereinfachen. Außerdem verwenden die Verluste „gamma“ und „poisson“ intern einen Log-Link, „gamma“ erfordert
y > 0und „poisson“ erforderty >= 0. „quantile“ verwendet den Pinball-Verlust.Geändert in Version 0.23: Option „poisson“ hinzugefügt.
Geändert in Version 1.1: Option „quantile“ hinzugefügt.
Geändert in Version 1.3: Option „gamma“ hinzugefügt.
- quantilefloat, Standard=None
Wenn loss „quantile“ ist, gibt dieser Parameter an, welches Quantil geschätzt werden soll, und muss zwischen 0 und 1 liegen.
- learning_ratefloat, Standard=0.1
Die Lernrate, auch bekannt als Shrinkage. Diese wird als multiplikativer Faktor für die Blattwerte verwendet. Verwenden Sie
1für keine Schrumpfung.- max_iterint, default=100
Die maximale Anzahl von Iterationen des Boosting-Prozesses, d. h. die maximale Anzahl von Bäumen.
- max_leaf_nodesint oder None, Standard=31
Die maximale Anzahl von Blättern pro Baum. Muss größer als 1 sein. Wenn None, gibt es keine maximale Grenze.
- max_depthint oder None, Standard=None
Die maximale Tiefe jedes Baumes. Die Tiefe eines Baumes ist die Anzahl der Kanten, die vom Wurzelknoten zum tiefsten Blatt führen. Die Tiefe ist standardmäßig nicht begrenzt.
- min_samples_leafint, Standard=20
Die minimale Anzahl von Samples pro Blatt. Für kleine Datensätze mit weniger als einigen hundert Samples wird empfohlen, diesen Wert zu senken, da nur sehr flache Bäume gebaut würden.
- l2_regularizationfloat, Standard=0
Der L2-Regularisierungsparameter, der Blätter mit kleinen Hessians bestraft. Verwenden Sie
0für keine Regularisierung (Standard).- max_featuresfloat, Standard=1.0
Anteil zufällig ausgewählter Merkmale bei jedem Split eines Knotens. Dies ist eine Form der Regularisierung, geringere Werte machen die Bäume zu schwächeren Lernenden und können Überanpassung verhindern. Wenn Interaktionsbeschränkungen aus
interaction_cstvorhanden sind, werden nur zulässige Merkmale für die Unterstichprobenentnahme berücksichtigt.Hinzugefügt in Version 1.4.
- max_binsint, Standard=255
Die maximale Anzahl von Bins für nicht-fehlende Werte. Vor dem Training wird jedes Merkmal des Eingabearrays
Xin Ganzzahl-Bins eingeteilt, was eine deutlich schnellere Trainingsphase ermöglicht. Merkmale mit einer geringen Anzahl eindeutiger Werte können weniger alsmax_binsBins verwenden. Zusätzlich zu denmax_binsBins wird immer ein weiterer Bin für fehlende Werte reserviert. Darf nicht größer als 255 sein.- categorical_featuresarray-like von {bool, int, str} der Form (n_features) oder (n_categorical_features,), Standard=’from_dtype’
Zeigt die kategorialen Merkmale an.
None : kein Merkmal wird als kategorisch betrachtet.
boolean array-like : boolesche Maske, die kategorische Merkmale angibt.
integer array-like : ganzzahlige Indizes, die kategorische Merkmale angeben.
str array-like: Namen von kategorischen Merkmalen (vorausgesetzt, die Trainingsdaten haben Merkmalnamen).
"from_dtype": Dataframe-Spalten mit dtype „category“ werden als kategorische Merkmale betrachtet. Die Eingabe muss ein Objekt sein, das eine__dataframe__Methode bereitstellt, wie z. B. Pandas- oder Polars-DataFrames, um diese Funktion zu nutzen.
Für jedes kategorische Merkmal darf es höchstens
max_binseindeutige Kategorien geben. Negative Werte für kategorische Merkmale, die als numerische dtypes kodiert sind, werden als fehlende Werte behandelt. Alle kategorischen Werte werden in Gleitkommazahlen umgewandelt. Das bedeutet, dass die kategorischen Werte 1.0 und 1 als dieselbe Kategorie behandelt werden.Mehr dazu im Benutzerhandbuch und Unterstützung für kategorische Merkmale in Gradient Boosting.
Hinzugefügt in Version 0.24.
Geändert in Version 1.2: Unterstützung für Merkmalsnamen hinzugefügt.
Geändert in Version 1.4: Option
"from_dtype"hinzugefügt.Geändert in Version 1.6: Der Standardwert änderte sich von
Nonezu"from_dtype".- monotonic_cstarray-like von int der Form (n_features) oder dict, Standard=None
Monotone Beschränkungen, die für jedes Merkmal erzwungen werden sollen, werden mit den folgenden Ganzzahlwerten angegeben.
1: monoton steigend
0: keine Beschränkung
-1: monoton fallend
Wenn ein dict mit str-Schlüsseln vorliegt, werden Merkmale anhand ihres Namens mit monotonen Beschränkungen abgebildet. Wenn ein Array vorliegt, werden die Merkmale anhand ihrer Position mit Beschränkungen abgebildet. Ein Anwendungsbeispiel finden Sie unter Verwendung von Merkmalnamen zur Angabe von monotonen Beschränkungen.
Lesen Sie mehr im Benutzerhandbuch.
Hinzugefügt in Version 0.23.
Geändert in Version 1.2: Akzeptiert dict von Beschränkungen mit Merkmalnamen als Schlüssel.
- interaction_cst{„pairwise“, „no_interactions“} oder Sequenz von Listen/Tupeln/Sets von int, Standard=None
Angabe von Interaktionsbeschränkungen, d. h. die Menge von Merkmalen, die miteinander in Kindknoten-Splits interagieren dürfen.
Jeder Eintrag gibt die Menge von Merkmalindizes an, die miteinander interagieren dürfen. Wenn mehr Merkmale vorhanden sind als in diesen Beschränkungen angegeben, werden sie so behandelt, als wären sie als zusätzlicher Satz angegeben.
Die Strings „pairwise“ und „no_interactions“ sind Abkürzungen für die Zulassung nur paarweiser bzw. keinerlei Interaktionen.
Beispielsweise ist bei 5 Merkmalen insgesamt
interaction_cst=[{0, 1}]äquivalent zuinteraction_cst=[{0, 1}, {2, 3, 4}]und gibt an, dass jeder Zweig eines Baumes entweder nur auf den Merkmalen 0 und 1 oder nur auf den Merkmalen 2, 3 und 4 gesplittet wird.Siehe dieses Beispiel zur Verwendung von
interaction_cst.Hinzugefügt in Version 1.2.
- warm_startbool, Standard=False
Wenn auf
Truegesetzt, wird die Lösung des vorherigen Aufrufs von fit wiederverwendet und dem Ensemble weitere Schätzer hinzugefügt. Für gültige Ergebnisse sollte der Schätzer nur auf denselben Daten neu trainiert werden. Siehe Glossar.- early_stopping‘auto’ oder bool, Standard=’auto’
Wenn „auto“, wird das vorzeitige Stoppen aktiviert, wenn die Stichprobengröße größer als 10000 ist oder wenn
X_valundy_valanfitübergeben werden. Wenn True, wird das vorzeitige Stoppen aktiviert, andernfalls ist es deaktiviert.Hinzugefügt in Version 0.23.
- scoringstr oder callable oder None, Standard=’loss’
Bewertungsmethode für das vorzeitige Stoppen. Wird nur verwendet, wenn
early_stoppingaktiviert ist. Optionenstr: siehe Zeichenkettennamen für Bewerter für Optionen.
callable: Ein Scorer-Callable-Objekt (z. B. Funktion) mit der Signatur
scorer(estimator, X, y). Siehe Callable Scorer für Details.None: Der Bestimmtheitsmaß (\(R^2\)) wird verwendet.„loss“: Das vorzeitige Stoppen wird in Bezug auf den Verlustwert überprüft.
- validation_fractionint oder float oder None, Standard=0.1
Anteil (oder absolute Größe) der Trainingsdaten, der als Validierungsdaten für das vorzeitige Stoppen zurückgestellt wird. Wenn None, erfolgt das vorzeitige Stoppen auf den Trainingsdaten. Der Wert wird ignoriert, wenn entweder kein vorzeitiges Stoppen durchgeführt wird (z. B.
early_stopping=False) oder wennX_valundy_valan fit übergeben werden.- n_iter_no_changeint, Standard=10
Wird verwendet, um zu bestimmen, wann „vorzeitig gestoppt“ werden soll. Der Anpassungsprozess wird gestoppt, wenn keiner der letzten
n_iter_no_changeWerte besser ist als dern_iter_no_change - 1-letzte Wert, bis zu einer gewissen Toleranz. Wird nur verwendet, wenn ein vorzeitiges Stoppen durchgeführt wird.- tolfloat, Standard=1e-7
Die absolute Toleranz, die beim Vergleichen von Werten während des vorzeitigen Stoppens verwendet wird. Je höher die Toleranz, desto wahrscheinlicher ist es, dass vorzeitig gestoppt wird: eine höhere Toleranz bedeutet, dass es für nachfolgende Iterationen schwieriger ist, als Verbesserung gegenüber dem Referenzwert zu gelten.
- verboseint, default=0
Die Detailgenauigkeitsstufe. Wenn nicht null, werden einige Informationen über den Anpassungsprozess ausgegeben.
1gibt nur zusammenfassende Informationen aus,2gibt Informationen pro Iteration aus.- random_stateint, RandomState-Instanz oder None, default=None
Pseudo-Zufallszahlengenerator zur Steuerung der Unterstichprobenentnahme beim Binning-Prozess und der Aufteilung der Trainings-/Validierungsdaten, wenn das vorzeitige Stoppen aktiviert ist. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.
- Attribute:
- do_early_stopping_bool
Gibt an, ob während des Trainings ein vorzeitiges Stoppen verwendet wird.
n_iter_intAnzahl der Iterationen des Boosting-Prozesses.
- n_trees_per_iteration_int
Die Anzahl der Bäume, die in jeder Iteration gebaut werden. Für Regressoren ist dies immer 1.
- train_score_ndarray, Form (n_iter_+1,)
Die Werte bei jeder Iteration auf den Trainingsdaten. Der erste Eintrag ist der Wert des Ensembles vor der ersten Iteration. Werte werden gemäß dem Parameter
scoringberechnet. Wennscoringnicht „loss“ ist, werden Werte auf einer Teilmenge von höchstens 10 000 Samples berechnet. Leer, wenn kein vorzeitiges Stoppen stattfindet.- validation_score_ndarray, Form (n_iter_+1,)
Die Werte bei jeder Iteration auf den zurückgehaltenen Validierungsdaten. Der erste Eintrag ist der Wert des Ensembles vor der ersten Iteration. Werte werden gemäß dem Parameter
scoringberechnet. Leer, wenn kein vorzeitiges Stoppen stattfindet oder wennvalidation_fractionNone ist.- is_categorical_ndarray, Form (n_features, ) oder None
Boolesche Maske für die kategorischen Merkmale.
None, wenn keine kategorischen Merkmale vorhanden sind.- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
Hinzugefügt in Version 0.24.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
Siehe auch
GradientBoostingRegressorExakte Gradient Boosting-Methode, die auf Datensätzen mit einer großen Anzahl von Samples nicht so gut skaliert.
sklearn.tree.DecisionTreeRegressorEin Entscheidungsbaum-Regressor.
RandomForestRegressorEin Meta-Schätzer, der eine Anzahl von Entscheidungsbaum-Regressoren auf verschiedenen Teilstichproben des Datensatzes anpasst und Mittelwertbildung verwendet, um die statistische Leistung zu verbessern und Überanpassung zu kontrollieren.
AdaBoostRegressorEin Meta-Schätzer, der damit beginnt, einen Regressor auf dem ursprünglichen Datensatz anzupassen, und dann zusätzliche Kopien des Regressors auf demselben Datensatz anpasst, wobei die Gewichte der Instanzen entsprechend dem Fehler der aktuellen Vorhersage angepasst werden. Nachfolgende Regressoren konzentrieren sich somit stärker auf schwierige Fälle.
Beispiele
>>> from sklearn.ensemble import HistGradientBoostingRegressor >>> from sklearn.datasets import load_diabetes >>> X, y = load_diabetes(return_X_y=True) >>> est = HistGradientBoostingRegressor().fit(X, y) >>> est.score(X, y) 0.92...
- fit(X, y, sample_weight=None, *, X_val=None, y_val=None, sample_weight_val=None)[Quelle]#
Anpassen des Gradient Boosting-Modells.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Die Eingabestichproben.
- yarray-like von Form (n_samples,)
Zielwerte.
- sample_weightArray-ähnlich der Form (n_samples,) Standard=None
Gewichte der Trainingsdaten.
Hinzugefügt in Version 0.23.
- X_valarray-like der Form (n_val, n_features)
Zusätzliche Stichprobe von Merkmalen zur Validierung, die beim vorzeitigen Stoppen verwendet wird. In einer
PipelinekannX_valauf dieselbe Weise transformiert werden wieXmitPipeline(..., transform_input=["X_val"]).Hinzugefügt in Version 1.7.
- y_valarray-like der Form (n_samples,)
Zusätzliche Stichprobe von Zielwerten zur Validierung, die beim vorzeitigen Stoppen verwendet wird.
Hinzugefügt in Version 1.7.
- sample_weight_valarray-like der Form (n_samples,) Standard=None
Zusätzliche Gewichte für die Validierung, die beim vorzeitigen Stoppen verwendet werden.
Hinzugefügt in Version 1.7.
- Gibt zurück:
- selfobject
Angepasster Schätzer.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
- Gibt zurück:
- routingMetadataRequest
Ein
MetadataRequest, der Routing-Informationen kapselt.
- get_params(deep=True)[Quelle]#
Holt Parameter für diesen Schätzer.
- Parameter:
- deepbool, default=True
Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.
- Gibt zurück:
- paramsdict
Parameternamen, zugeordnet ihren Werten.
- predict(X)[Quelle]#
Vorhersagen von Werten für X.
- Parameter:
- Xarray-ähnlich, Form (n_samples, n_features)
Die Eingabestichproben.
- Gibt zurück:
- yndarray, Form (n_samples,)
Die vorhergesagten Werte.
- score(X, y, sample_weight=None)[Quelle]#
Gibt den Bestimmtheitskoeffizienten auf Testdaten zurück.
Das Bestimmtheitsmaß, \(R^2\), ist definiert als \((1 - \frac{u}{v})\), wobei \(u\) die Residuenquadratsumme
((y_true - y_pred)** 2).sum()und \(v\) die gesamte Summe der Quadrate((y_true - y_true.mean()) ** 2).sum()ist. Der bestmögliche Wert ist 1.0 und er kann negativ sein (da das Modell beliebig schlechter sein kann). Ein konstantes Modell, das immer den Erwartungswert vonyvorhersagt, unabhängig von den Eingabemerkmalen, würde einen \(R^2\)-Wert von 0.0 erhalten.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Teststichproben. Für einige Schätzer kann dies eine vorab berechnete Kernelmatrix oder eine Liste von generischen Objekten sein, stattdessen mit der Form
(n_samples, n_samples_fitted), wobein_samples_fitteddie Anzahl der für die Anpassung des Schätzers verwendeten Stichproben ist.- yarray-like der Form (n_samples,) oder (n_samples, n_outputs)
Wahre Werte für
X.- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- Gibt zurück:
- scorefloat
\(R^2\) von
self.predict(X)bezogen aufy.
Anmerkungen
Der \(R^2\)-Wert, der beim Aufruf von
scoreauf einem Regressor verwendet wird, nutzt ab Version 0.23multioutput='uniform_average', um mit dem Standardwert vonr2_scorekonsistent zu bleiben. Dies beeinflusst diescore-Methode aller Multi-Output-Regressoren (außerMultiOutputRegressor).
- set_fit_request(*, X_val: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$', sample_weight_val: bool | None | str = '$UNCHANGED$', y_val: bool | None | str = '$UNCHANGED$') HistGradientBoostingRegressor[Quelle]#
Konfiguriert, ob Metadaten für die
fit-Methode angefordert werden sollen.Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit
enable_metadata_routing=Trueaktiviert ist (siehesklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.Die Optionen für jeden Parameter sind
True: Metadaten werden angefordert und, falls vorhanden, anfitübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anfit.None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.
Der Standardwert (
sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.Hinzugefügt in Version 1.3.
- Parameter:
- X_valstr, True, False, oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
X_valinfit.- sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
sample_weightinfit.- sample_weight_valstr, True, False, oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
sample_weight_valinfit.- y_valstr, True, False, oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
y_valinfit.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
- set_params(**params)[Quelle]#
Setzt die Parameter dieses Schätzers.
Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie
Pipeline). Letztere haben Parameter der Form<component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.- Parameter:
- **paramsdict
Schätzer-Parameter.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') HistGradientBoostingRegressor[Quelle]#
Konfiguriert, ob Metadaten für die
score-Methode angefordert werden sollen.Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit
enable_metadata_routing=Trueaktiviert ist (siehesklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.Die Optionen für jeden Parameter sind
True: Metadaten werden angefordert und, falls vorhanden, anscoreübergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anscore.None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.
Der Standardwert (
sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.Hinzugefügt in Version 1.3.
- Parameter:
- sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
sample_weightinscore.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
- staged_predict(X)[Quelle]#
Vorhersage von Zielwerten für die Regression für jede Iteration.
Diese Methode ermöglicht die Überwachung (d.h. Bestimmung von Fehlern auf dem Testdatensatz) nach jeder Stufe.
Hinzugefügt in Version 0.24.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Die Eingabestichproben.
- Gibt:
- yGenerator von ndarray der Form (n_samples,)
Die vorhergesagten Werte der Eingabestichproben für jede Iteration.
Galeriebeispiele#
Vergleich von Random Forests und Histogram Gradient Boosting Modellen
Unterstützung für kategorische Merkmale in Gradient Boosting
Vorhersageintervalle für Gradient Boosting Regression
Partial Dependence und Individual Conditional Expectation Plots
Poisson-Regression und nicht-normale Verlustfunktion