我正在使用python库,并且我无法使用gbline助推程序获得一个简单的工作示例。
M = np.array([
[1, 2],
[2, 4],
[3, 6],
[4, 8],
[5, 10],
[6, 12],
])
xg_reg = xgb.XGBRegressor(objective ='reg:linear', booster='gblinear')
X, y = M[:, :-1], M[:, -1]
xg_reg.fit(X,y)
plt.scatter(range(-5, 20), [xg_reg.predict([i]) for i in range(-5, 20)])
plt.scatter(M[:,0], M[:,-1])
plt.show()

预测是蓝色的,真实数据是橙色的
我是不是遗漏了什么?
发布于 2019-04-07 11:08:33
我认为问题是,模型没有收敛到最优的配置和数据量,您已经选择了。GBM不使用升压模型直接拟合目标,而是对梯度进行拟合,然后从前一步开始将预测的分数(分数等于学习率)添加到预测中。
因此,提高学习速度、增加迭代次数、增加数据大小是明显的改进方法。
例如,代码的这个变体已经给出了一个更好的预测:
X = np.expand_dims(range(1,7), axis=1)
y = 2*X
# note increased learning rate!
xg_reg = xgb.XGBRegressor(objective ='reg:linear', booster='gblinear', learning_rate=1)
xg_reg.fit(X, y, verbose=20, eval_set=[(X,y)])
plt.scatter(range(-5, 20), [xg_reg.predict([i]) for i in range(-5, 20)], label='prediction')
plt.scatter(X[:20,:], y[:20], label='target')
plt.legend()
plt.show()这导致训练数据的度量值为0.872 (我在fit函数中添加了评估,以查看它是如何变化的)。如果你把样品的数量从7个增加到70个,这将进一步减少到0.1。
https://stackoverflow.com/questions/55493454
复制相似问题