简短回答您的问题:
当算法适合残差(或负梯度)时,它是在每一步使用一个特征(即单变量模型)还是所有特征(多变量模型)?
该算法使用一种功能或所有功能取决于您的设置。在下面列出的长答案中,在决策树桩和线性学习器示例中,它们都使用了所有特征,但如果您愿意,也可以拟合特征子集。采样列(特征)被视为减少模型的方差或增加模型的“稳健性”,尤其是在您拥有大量特征的情况下。
在xgboost
中,对于树基学习器,您可以设置colsample_bytree
样本特征以适应每次迭代。对于线性基础学习器,没有这样的选项,因此,它应该适合所有特征。此外,通常没有太多人在 xgboost 或梯度提升中使用线性学习器。
线性作为弱学习器的长答案:
在大多数情况下,我们可能不会使用线性学习器作为基础学习器。原因很简单:将多个线性模型加在一起仍然是线性模型。
提升我们的模型是基础学习者的总和:
f(x)=∑m=1Mbm(x)
其中是 boosting 中的迭代次数,是次迭代的模型。Mbmmth
如果基础学习器是线性的,例如,假设我们只运行次迭代,并且 和,那么2b1=β0+β1xb2=θ0+θ1x
f(x)=∑m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x
这是一个简单的线性模型!换句话说,集成模型与基础学习器具有“相同的力量”!
更重要的是,如果我们使用线性模型作为基础学习器,我们可以通过求解线性系统一步完成,而不是在 boosting 中进行多次迭代。XTXβ=XTy
因此,人们希望使用线性模型以外的其他模型作为基础学习器。树是一个不错的选择,因为添加两棵树不等于一棵树。我将用一个简单的案例来演示它:决策树桩,它是一棵只有 1 个拆分的树。
我正在做一个函数拟合,其中数据是由一个简单的二次函数生成的,f(x,y)=x2+y2. 这是填充轮廓地面实况(左)和最终决策树桩增强拟合(右)。
现在,检查前四次迭代。
注意,与线性学习器不同,第 4 次迭代中的模型不能通过具有其他参数的一次迭代(一个单一决策树桩)来实现。
到目前为止,我解释了为什么人们不使用线性学习器作为基础学习器。然而,没有什么能阻止人们这样做。如果我们使用线性模型作为基学习器,并限制迭代次数,则等于求解线性系统,但在求解过程中限制了迭代次数。
同样的例子,但在 3d 图中,红色曲线是数据,绿色平面是最终拟合。你可以很容易地看到,最终模型是一个线性模型,它z=mean(data$label)
平行于 x,y 平面。(你可以想为什么?这是因为我们的数据是“对称的”,所以平面的任何倾斜都会增加损失)。现在,看看前 4 次迭代中发生了什么:拟合模型正在慢慢上升到最优值(均值)。
最后的结论是,线性学习器并没有被广泛使用,但没有什么能阻止人们使用它或在 R 库中实现它。此外,您可以使用它并限制迭代次数来规范模型。
相关帖子:
线性回归的梯度提升 - 为什么它不起作用?
决策树桩是线性模型吗?