2016-09-16 3 views
5

Xgboost에서 여러 개의 연속 출력 (다중 회귀)을 가진 모델을 학습 할 수 있습니까? 그런 모델을 훈련시키는 목적은 무엇입니까? 어떤 제안xgboost에서 muti 출력 회귀

+0

출력이 둘 이상의 값인 경우 RNN (GRU, LSTM 등)과 같은 시퀀스 모델이 필요합니다. [Keras] (https://keras.io/)는 그러한 모델의 프로토 타입을 빠르게 만들 수 있도록 도와줍니다. – uyaseen

+0

나는 RNN을 알고있다. 나는 나무를 부양하는 것이 내 문제 공간에서 잘 수행된다는 것을 이미 알고 있기 때문에 그러한 것이 Xgboost에서도 가능했는지 궁금합니다. 나는 또한 내 출력 vecor 크기가 고정 될 수 있음에 유의해야합니다. – user1782011

+0

출력 간의 관계를 알고 있다면이를 활용하여 목적 함수를 구현할 수 있어야합니다. [선형 관계가있는 임의의 포리 스트] (https://cran.r-project.org/web/packages/MultivariateRandomForest/MultivariateRandomForest.pdf)에 대해 수행되었습니다. 그리고 XGBoost 저자는 [그것이 가능하다고 생각합니다] (https://github.com/dmlc/xgboost/issues/680). –

답변

2

나의 제안에 미리

덕분에 xgb.XGBRegressor의 래퍼로 sklearn.multioutput.MultiOutputRegressor을 사용하는 것입니다. MultiOutputRegressor은 목표 당 하나의 퇴행자를 훈련시키고 회귀자는 fitpredict을 구현하기 만하면 xgboost가 지원됩니다.

# get some noised linear data 
X = np.random.random((1000, 10)) 
a = np.random.random((10, 3)) 
y = np.dot(X, a) + np.random.normal(0, 1e-3, (1000, 3)) 

# fitting 
multioutputregressor = MultiOutputRegressor(xgb.XGBRegressor(objective='reg:linear')).fit(X, y) 

# predicting 
print np.mean((multioutputregressor.predict(X) - y)**2, axis=0) # 0.004, 0.003, 0.005 

이 아마 (당신이 원래 sklearn API를 사용한다면) 당신은 당신의 코드의 다른 부분을 변경할 필요가 없습니다 것처럼 xgboost 사용하여 다중 차원의 목표를 회귀 할 수있는 가장 쉬운 방법입니다.

그러나이 방법은 대상 간의 가능한 관계를 활용하지 않습니다. 그러나이를 달성하기 위해 customized objective 함수를 디자인 할 수 있습니다.