【发布时间】:2017-12-27 11:35:00
【问题描述】:
我正在重构一篇论文。他们在给定输入 X 和软目标 y_s 的情况下训练 Gradient Boosting Regression Trees,以获得具有最小均方误差的最终输出 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 的二进制问题)将其减少到 1-dim,并改用 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
【问题讨论】:
标签: python scikit-learn decision-tree training-data