这就是向量空间的梯度下降的过程。所谓向量空间的梯度下降,为什么叫做向量空间的梯度下降,因为w是一组向量,我们是在w上给它往下降所以称为向量空间的梯度下降。
3、函数空间的梯度下降:这里面的F*在假如逻辑回归里面就是1/1+e^-z。在其他算法里各自对应其损失函数。对于决策树来说,树其实也是有损失函数的,比如我们之前在后剪枝的时候,通常做法就是,拿测试集或者验证集去检验一下我cancel掉叶子节点会不会变好一点,但实际上还有另一种减枝方式,就是根据损失函数来的,别管损失函数是什么,它是一个L,L跟x有关的,跟叶子节点的数量T有关,表达为L (x,T)。T相当于一个正则项,叶子节点算的数量越多,它的损失函数就越大,它不想让树太复杂了,通过剪枝剪一次去去看损失函数,是上升了还是下降了,如果损失函数下降了,剪枝就承认它,以后就都不要节点了,所以说对于决策树本身是可以定义一个损失函数的,只不过定义出来它意义不大,只能在剪枝的时候看看用来效果怎么样,因为我们知道损失函数是用来评估结果的,评估你的模型到底怎么样的,那我们剪枝的时候拿它进行一个评估也是一个比较科学的方法,但是训练的过程中是用不到损失函数,因为你不知道怎么分裂可以影响到损失函数,所以训练的时候基本都没有提损失函数,而是用基尼系数,信息熵这种变通的方式。另一方面,树的损失函数也不能直接使用梯度下降来下降这个损失函数,按原来的做法我们有一堆w把空先给你留好了,然后你找到一组最好的w让损失函数最小就可以了,但树按照这个思路怎么来呢,应该是找到所有可能性的树,挑出一个能使损失函数最小的树,按理说应该这么做,但是这么做不现实,因为树有无穷多个,所以我们采用其它方式得到一个近似最好的可能性。所以对与单纯的决策树我们一般不适用损失函数。
但是一旦变成了集成学习,我们又可以把损失函数又让它重出江湖了。对于决策树我们不能使用梯度下降的方式,因为在决策树里面损失函数就像一个黑盒,没有具体的参数通过损失函数供我们优化。但是对于集成学习则可以使用,因为集成学习对应着很多树。首先决策树是根据选取的特定条件由根节点开始逐级分裂,直到满足纯度要求或达到预剪枝设置的停止而形成的一种树。那如何选取特定条件? 常见的有:GINI系数, Entropy,最小二乘MSE。而回归树就是每次分裂后计算分裂出的节点的平均值, 将平均值带入MSE损失函数进行评估。而GBDT是一种决策树的提升算法 ,通过全部样本迭代生成多棵回归树, 用来解决回归预测问题(迭代生成的每棵树都是回归树),通过调整目标函数也可以解决分类问题。传统的回归问题损失函数是:
yi是真实的样本的结果,y^是预测的结果。而在集成学习里面,y^就是我们每一次的预测的G(x),所以现在我们的损失函数变成yi和大G(x)的一个损失函数了,因此集成学习里面损失函数表达式为L=L(yi,G)。我虽然不能写出来具体的损失函数,但是肯定是关于yi和G的一个表达式,我想找到一个最好的大G(x),一步去找,找不到,怎么办,我就分步去找,最开始找到一个G0(x),它一般不是能让损失函数最小的,我知道有梯度下降这个工具,能让它更接近损失函数最低点一些。我们希望损失函数下降,希望每一次能找到一个新的G(x),就像向量空间梯度下降中更新w一样,我们希望找到一个新的w,w是损失函数改变的原因,现在变成了每一次的G(x)是损失函数改变的原因,每一次的G(x)的改变一定会改变损失函数,G(x)只要它能改变损失函数,损失函数不是上升就是下降。怎么着能让它损失函数降低呢?我们知道最终的G(x)是一堆g(x)相加,换一个角度来讲,第一步迭代我们得到了一个G1(x)=g1(x),第二步迭代我们得到了G2(x)=G1(x)+g2(x),第三步就是G3(x)=G2(x)+g3(x),注意这个形式,集成树的每一步迭代形式和梯度下降每一步的迭代形式似乎很像,我们注意观察,在梯度下降里,每一步迭代所要加的△w只要是前一项的值带到损失函数里面的负梯度,就可以让损失函数变得更小。而我现在所谓的集成学习一轮一轮的迭代,第一轮我想加上一个g1(x),第二轮我想再加上g2(x),第三轮我想再加上g3(x),根据梯度下降的原则,加上的每一个g(x)等于什么的时候能够让集成学习的损失函数越来越小呢?能不能也让它等于损失函数对于上一次的预测整体的结果G(x)这个东西的负梯度?这样损失函数一定会也是下降的。我把G(x)当做一个整体来看待,类似于原先的w变量。反正都是让损失函数改变的原因。这种梯度下降的过程就称为函数空间的梯度下降过程。函数空间的梯度下降是什么意思呢?因为在函数空间中这个函数它写不出来是由什么w组成的,它的最小单位就是这个弱分类器本身,所以我们只能在函数空间进行梯度下降。