Xgboost: Mehrfachausgaberegression

Erstellt am 8. März 2017  ·  13Kommentare  ·  Quelle: dmlc/xgboost

Wie führe ich eine Mehrfachausgaberegression durch? Oder ist es einfach nicht möglich?

Meine derzeitige Annahme ist, dass ich die Codebasis so ändern müsste, dass XGMatrix eine Matrix als Labels unterstützt und ich eine benutzerdefinierte Zielfunktion erstellen müsste.

Mein Endziel wäre es, eine Regression durchzuführen, um zwei Variablen (einen Punkt) auszugeben und den euklidischen Verlust zu optimieren. Wäre ich besser dran, zwei separate Modelle zu erstellen (eines für x-Koordinaten und eines für y-Koordinaten).

Oder... wäre ich besser dran, einen Random Forest-Regressor in sklearn oder einen anderen alternativen Algorithmus zu verwenden?

feature-request

Hilfreichster Kommentar

Das wäre ein wirklich nettes Feature.

Alle 13 Kommentare

Multivariate/Multilabel-Regression ist derzeit nicht implementiert #574 #680
Tianqi hatte gbtree learner einige relevante Platzhalter-Datenstrukturen hinzugefügt, aber vermutlich hatte niemand Zeit, die Maschinerie auszuarbeiten.

Schade, denn viele Wettbewerbe sind mit Multi-Outputs

Das wäre ein wirklich nettes Feature.

Haben wir dazu Neuigkeiten?

Ich füge diese Funktion dem Feature Request Tracker hinzu: #3439. Hoffentlich kommen wir irgendwann dazu.

Ich stimme zu - diese Funktion wäre äußerst wertvoll (genau das, was ich gerade brauche...)

Ich stimme auch zu, während dies in neuronalen Netzen ziemlich trivial ist, wäre es schön, dies auch in xgboost zu tun.

Diese Funktion würde gerne kommen

irgendein grund, warum es geschlossen ist?

@veonua Siehe #3439.

In der Zwischenzeit gibt es jede Alternative, wie jedes Ensemble von Single-Output-Modellen wie:

# Fit a model and predict the lens values from the original features
model = XGBRegressor(n_estimators=2000, max_depth=20, learning_rate=0.01)
model = multioutput.MultiOutputRegressor(model)
model.fit(X_train, X_lens_train)
preds = model.predict(X_test)

von: https://gist.github.com/MLWave/4a3f8b0fee43d45646cf118bda4d202a

In der Zwischenzeit gibt es jede Alternative, wie jedes Ensemble von Single-Output-Modellen wie:

https://scikit-learn.org/stable/modules/generated/sklearn.multioutput.MultiOutputRegressor.html

Ich werde auch abwägen und sagen, dass es sehr praktisch wäre, eine solche Funktion zu haben. Der oben erwähnte MultiOutputRegressor ist ein netter Wrapper, um mehrere Modelle gleichzeitig zu erstellen, und er funktioniert gut, um voneinander unabhängige Zielvariablen vorherzusagen. Wenn die Zielvariablen jedoch stark korreliert sind, möchten Sie wirklich ein Modell erstellen, das einen Vektor vorhersagt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen