Machine learning xgboost中的多输出回归

Machine learning xgboost中的多输出回归,machine-learning,random-forest,xgboost,Machine Learning,Random Forest,Xgboost,是否可以在Xgboost中训练具有多个连续输出(多元回归)的模型? 培养这样一个模式的目标是什么 提前感谢您的建议我的建议是用作xgb.XGBRegressor的包装器MultiOutputRegressor为每个目标训练一个回归器,只要求回归器实现xgboost恰好支持的fit和predict # get some noised linear data X = np.random.random((1000, 10)) a = np.random.random((10, 3)) y = np.d

是否可以在Xgboost中训练具有多个连续输出(多元回归)的模型? 培养这样一个模式的目标是什么

提前感谢您的建议

我的建议是用作
xgb.XGBRegressor
的包装器
MultiOutputRegressor
为每个目标训练一个回归器,只要求回归器实现xgboost恰好支持的
fit
predict

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


但是,此方法不利用目标之间的任何可能关系。但是您可以尝试设计一个函数来实现这一点

如果输出不止一个值,那么您需要一个序列模型,如RNN(GRU、LSTM等)。我知道RNN,它可以帮助你快速建立这样的模型。我想知道这样的事情在Xgboost中是否也有可能,因为我已经知道提升树在我的问题空间中表现良好。我还应该注意,我的输出向量大小可以是固定的。如果输出之间的关系已知,您应该能够利用这一点实现目标函数。这件事已经做了很久了。XGBoost的作者认为,@uyaseen这不是真的,只有当输出数量可变时才是真的(甚至不一定是真的)。你可以有多个输出并计算它们的总损失如果一些x有一个目标和一些50怎么办?@Eran你说的“一些50”是什么意思?我的意思是每个样本的输出数量不是固定的。你能给我一个例子吗?回归问题应该具有固定的输入和输出形状。否则,这不是一个单一的问题,应该分开处理;它是两个模型的包装。