在scikit-learn中使用软标签进行GradientBoostingTree培训?

时间:2017-07-21 12:07:29

标签: python scikit-learn decision-tree training-data

我正在重建一篇论文。他们根据输入X和软目标y_s 训练梯度增强回归树,以获得具有最小均方误差的最终输出y。关于论文,他们使用scitkit-learn包实现了所有基于决策树的方法,没有任何修改。这就是我想要做的。

如果您已经知道解决方案,我会很高兴听到,否则这是我的想法: 只是为了简化,假设我们有二进制问题 X = [[x1 x2 x3] [x1 x2 x3] ...]和 y_s [[0.4 0.6] [0.8 0.2] ......]。

关于用于分类的GradientBoostingTree(参见上面的链接),我只能输入1-dim类数组

  

(y:array-like,shape = [n_samples])目标值(整数)   分类,回归中的实数)用于分类,标签   必须与班级相对应。

,所以即使我要覆盖可处理软标签的成本函数(例如交叉熵),我仍然无法输入2个暗淡的软标签(至少)。

另一个想法是通过仅采用一个软标签将其减少到1-dim(仅适用于两个软标签加起来为1的二进制问题)并使用GradientBoostingRegression代替。但同样只有一个类是可能的,我也不能训练像

这样的独立模型
X = [[1,2,3], [1,2,3], [4,5,6]]
y = [[3.141, 2.718], [3.141, 2.718], [2.718, 3.141]]
rgr = MultiOutputRegressor(GradientBoostingRegressor(random_state=0))
rgr.fit(X, y)
X_test = [[1.5,2.5,3.5], [3.5,4.5,5.5]]
rgr.predict(X_test)

因为输出之间存在相关性。

大图: 1.组合特征的提取 2。 a)训练:提取的特征(Xb),原始标记(y) - >逻辑回归 b)预测:软标签(yb) 3。 a)训练:原始特征(X),软标签(yb) - > GradientBoostingTree b)评估:预测正常标签(y_) - >原始功能的重要性

没有软标签的整个过程毫无价值。我的意思是它必须以某种方式可能但我无法弄清楚如何...

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_regression.html

1 个答案:

答案 0 :(得分:0)

<{>} multi-output decision trees上的scikit-learn文档应该指向正确的方向