Xgboost: Regresión de salida múltiple

Creado en 8 mar. 2017  ·  13Comentarios  ·  Fuente: dmlc/xgboost

¿Cómo realizo una regresión de salida múltiple? ¿O simplemente no es posible?

Mi suposición actual es que tendría que modificar el código base de modo que XGMatrix admita una matriz como etiquetas y que tenga que crear una función de objetivo personalizada.

Mi objetivo final sería realizar una regresión para generar dos variables (un punto) y optimizar la pérdida euclidiana. Sería mejor para mí hacer dos modelos separados (uno para las coordenadas xy otro para las coordenadas y).

O ... ¿estaría mejor usando un regresor de bosque aleatorio dentro de sklearn o algún otro algoritmo alternativo?

feature-request

Comentario más útil

Esta sería una característica realmente agradable.

Todos 13 comentarios

La regresión multivariante / multilabel no está implementada actualmente # 574 # 680
Tianqi había agregado algunas estructuras de datos de marcador de posición relevantes para el alumno de gbtree, pero nadie tenía tiempo, supongo, para trabajar con la maquinaria.

Lástima, ya que muchas competiciones son con múltiples salidas

Esta sería una característica realmente agradable.

¿Tenemos alguna actualización sobre esto?

Estoy agregando esta función al rastreador de solicitudes de funciones: # 3439. Con suerte, podemos llegar a eso en algún momento.

Estoy de acuerdo, esta característica sería extremadamente valiosa (exactamente lo que necesito ahora ...)

También estoy de acuerdo, si bien esto es bastante trivial de hacer en redes neuronales, sería bueno poder hacerlo también en xgboost.

Me gustaría ver venir esta función.

alguna razón por la que está cerrado?

@veonua Ver # 3439.

Mientras tanto, existe cualquier alternativa, como cualquier conjunto de modelos de salida única como:

# 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)

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

Mientras tanto, existe cualquier alternativa, como cualquier conjunto de modelos de salida única como:

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

También voy a opinar y decir que tener tal característica sería extremadamente útil. El MultiOutputRegressor mencionado anteriormente es un buen contenedor para construir múltiples modelos a la vez y funciona bien para predecir variables de destino que son independientes entre sí. Sin embargo, si las variables de destino están altamente correlacionadas, entonces realmente desea construir un modelo que prediga un vector.

¿Fue útil esta página
0 / 5 - 0 calificaciones