Xgboost: Regressão de saída múltipla

Criado em 8 mar. 2017  ·  13Comentários  ·  Fonte: dmlc/xgboost

Como faço a regressão de saída múltipla? Ou simplesmente não é possível?

Minha suposição atual é que eu teria que modificar a base de código de forma que XGMatrix suporte uma matriz como rótulos e que eu teria que criar uma função de objetivo personalizada.

Meu objetivo final seria realizar uma regressão para produzir duas variáveis ​​(um ponto) e otimizar a perda euclidiana. Seria melhor fazer dois modelos separados (um para as coordenadas xe um para as coordenadas y).

Ou ... seria melhor usar um regressor de floresta aleatório no sklearn ou algum outro algoritmo alternativo?

feature-request

Comentários muito úteis

Esse seria um recurso muito bom de se ter.

Todos 13 comentários

A regressão multivariada / multilabel não está implementada no momento # 574 # 680
Tianqi adicionou algumas estruturas de dados de espaço reservado relevantes para o aluno gbtree, mas ninguém teve tempo, eu acho, para trabalhar o mecanismo.

Pena, já que muitas competições são com saídas múltiplas

Esse seria um recurso muito bom de se ter.

Temos alguma atualização sobre isso?

Estou adicionando este recurso ao rastreador de solicitação de recurso: # 3439. Esperançosamente, podemos chegar a algum ponto.

Eu concordo - esse recurso seria extremamente valioso (exatamente o que eu preciso agora ...)

Também concordo, embora seja bastante trivial fazer em redes neurais, seria bom também ser capaz de fazer isso no xgboost.

Gostaria de ver esse recurso chegando

algum motivo pelo qual ele está fechado?

@veonua Veja # 3439.

Enquanto isso, há qualquer alternativa, como qualquer conjunto de modelos de saída ú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

Enquanto isso, há qualquer alternativa, como qualquer conjunto de modelos de saída única, como:

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

Também vou ponderar e dizer que ter esse recurso seria extremamente útil. O MultiOutputRegressor mencionado acima é um ótimo wrapper para construir vários modelos de uma vez e funciona bem para prever variáveis ​​de destino independentes umas das outras. No entanto, se as variáveis ​​de destino forem altamente correlacionadas, você realmente deseja construir um modelo que preveja um vetor.

Esta página foi útil?
0 / 5 - 0 avaliações