引言
自上节使用了随机森林与adaboost做了kaggle后,我便有一个问题,为什么对于泰坦尼克号来讲随进森林在其里面反而是最优的,同样是集成,为什么adaboost会稍微弱一筹呢?那么本篇,将在我理解的范围内,从理论上推导一下提升算法的过程。
梯度的概念
梯度可以说是一个方向,一个增长最快的方向,梯度的长度是这个最大的变化率.更严格的说,从欧氏空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似.在这个意义上,梯度是雅戈比矩阵的一个特殊情况。而我们最常见的运用梯度的方式,或者就是梯度下降法和梯度下降法了。
梯度下降法是一种迭代算法,在给定初值 x ( 0 ) x^{(0)} x(0)的情况下,不断迭代,更新 x x x的值,从而达到目标函数的极小化,但注意这里只能说明取到了极值,并不能说明拿到了全局最优解。梯度上升法类似,我们可以看下图:
上图不是一个凸函数,所以如果如果运用梯度,很容易陷入局部最优解,这里的收敛速度也很明显不是太快。而关于凸函数的例子,我们可以类比于高中学的二元一次方程,我们一般做法是求导,但不精确,这里我们还可以采用迭代的方式去获取极值,类似于下坡和爬坡,比如说下图:
取自百度图片,上面这张图可以看成是 y = x 2 − 2 x y=x^{2}-2x y=x2−2x的表达式曲线,那么我们下坡的过程的表达式就可以表示为:
x i + 1 = x i − a ∂ f ( x i ) x i x_{i+1}=x_{i}-a\frac{\partial f(x_{i})}{x_{i}} xi+1=xi−axi∂f(xi)
那么接下来就是如上图那样,小球一直往下滚,不断迭代,那么达到最低的时候,找到最优值。
下面再来复习一下线性回归和逻辑回归的梯度求解,线性回归的方向为:
逻辑回归的梯度方向为:
先在这里放着,不会的可以跳过去,等我有时间会写一个回归总结的。
提升(boosting)
提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型,并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradient boosting)。可以类比于决策树,它可以看做一个预测模型,可我们并不知道它每一棵树具体的含义,可能是回归的,也可能是分类的,我们只有让它们不断去加权累加,让它逐步逼近于局部最小值,那么这个就可以叫做梯度提升算法。
-
给定输入向量x和输出变量y组成的若干训练样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n}) (x1,y1),(x2,y2),...,(xn,yn),目标是找到近似函数 F ^ ( x ⃗ ) \hat{F}(\vec{x}) F^(x),使得损失函数 L ( y , F ( x ) ) L(y,F(x)) L(y,F(x))的损失值最小
-
L ( y , F ( x ) ) L(y,F(x)) L(y,F(x))的典型定义为:
L ( y , F ( x ⃗ ) ) = 1 2 ( y − F ( x ⃗ ) ) 2 L ( y , F ( x ⃗ ) ) = ∣ y − F ( x ⃗ ) ∣ \begin{matrix} L(y,F(\vec{x}))=\frac{1}{2}(y-F(\vec{x}))^{2} & \\ & \\ L(y,F(\vec{x}))= |y-F(\vec{x})| & \end{matrix} L(y,F(x))=21(y−F(x))2L(y,F(x))=∣y−F(x)∣ -
假定最优函数为 F ∗ ( x ⃗ ) F^{*}(\vec{x}) F∗(