Xgboostで複数の連続出力(多重回帰)を持つモデルをトレーニングすることは可能ですか?そのようなモデルをトレーニングする目的は何でしょうか?
提案を事前にありがとう
私の提案は、xgb.XGBRegressor
のラッパーとして sklearn.multioutput.MultiOutputRegressor を使用することです。 MultiOutputRegressor
は、ターゲットごとに1つのリグレッサをトレーニングし、リグレッサがfit
とpredict
を実装することのみを要求します。これは、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
コードの他の部分を変更する必要がないため、xgboostを使用して多次元ターゲットを回帰する最も簡単な方法です(元々sklearn
APIを使用していた場合)。
ただし、このメソッドはターゲット間の可能な関係を利用しません。しかし、それを達成するために カスタマイズされた目的 関数を設計することを試みることができます。