GBDT

之前在集成学习(https://blog.csdn.net/yingjiaotuo8368/article/details/79866457)中,我们说了Adaboost有两种理解角度:

1.statistical view 2.margin theory  这里就再次介绍下statistical view并由此引出GBDT。

在adaboost中的权重更新中,对correct样本和incorrect样本,u(t+1)的表达式是不同的,现在将两种情况合二为一:

对correct样本来说,;反之,。可以看出,u(t+1)由u(t)与某个常数相乘得到,所以,我们可以将最后一轮更新的u(T+1)写成u(1)的级联形式,再加之初始值是1/N,所以:

上式被称为voting score,而最终的模型就是。voting score由许多乘以各自的系数线性组合而成。我们可以将看成对xn的特征转换,α就是线性模型中的权重w。这里对比SVM,w与的乘积再除以w的模就是margin。所以,voting score也可以看成没有正则化(即没有除w的模)的距离。这里也是为后面讲adaboost的margin theory中margin的直观定义。所以我们可以将voting score看成该点到分类边界距离的。从效果上说,距离越大越好,也就是voting score尽可能大一些。除此之外,乘积再与yn相乘,表示点是在正确的一方(乘积为正)还是错误的乙方(乘积为负)。所以算法的目的就是让yn与voting score的乘积是正的,且越大越好。那在的推导中,

就该越小越好,也就是越小越好。

所以,在Adaboost中,随着训练轮数的增加,每个样本的u是逐渐减小的。减小需要轮数到一定程度,比如第一轮u就可能变大。之所以会减小,是因为经过一定程度的训练,每个样本都会大概率被分对,所以对应的u应该减小。这是从单个样本点来看,总体来说,所有样本的之和也应该最小。所以我们的目标就是在(T+1)轮学习后,让之和尽可能小,即:

这个形式恰好就是指数损失,因为是用于二分类,所以来看看它和01loss的关系。

可见,指数损失也是01损失的一个凸的上界。按照机器学习一般的套路,我们的问题就是继续求最小值,同样也可以使用梯度下降法。和以往不同的是,这里的梯度方向是一个函数,而不是一个向量。函数和向量的唯一区别就是一个下标是连续的,一个下标是离散的,二者在梯度下降算法上没太大区别。而梯度下降核心就是在某点处做一阶泰勒展开,由此可得:

这样Eada就被分解成了两部分,一个是前N个u之和,也就是当前所有Ein之和;另一个包含下一步前进方向h(xn)和步长的第二项。所以如果要最小化Eada的话,就要让第二项(包括负号)越小越好。则我们的目标就是找到好的h(xn)和步长来最小化

对于二分类来说,y和h(x)均限定取值1或-1,据此我们对上式进行推导和平移,得:

所以现在就目标就成了最小化Ein了,而能让Ein变得更小的正是表现好的g,所以这里g(基学习器)就等于h(下降方向)。至于这里就不做推到了,可以求得

所以Adaboost中使用base algorithm得到的g就是让Eada减小的方向,而步长就是前面的α,也就是Adaboostg的权重。所以,Adaboost所做的其实就是在gradient descent上找到下降最快的方向和最大的步长。

至此为止我们我们考虑的都是二分类任务,优化的损失函数是指数损失(adaboost只针对分类任务)。

假如我们想做回归任务该当如何?首先要将损失函数换成均方误差。

这里的err可以针对不同任务换成不同的err function。然后将其进行泰勒展开

现在就需要最小化第二项,对于第二项,h(xn)的大小是不重要的,因为是下降方向,只需要确定方向,长短后面可以有来控制。为了防止h大小过大,需要对其大小进行限制,如果简单地加个类似 ||h(xn)||=1 这种条件会给优化问题引入麻烦(非凸),所以我们可以借用拉格朗日算子的那种思想,将条件加入到优化问题本身中,这个和正则化也是类似的,可以将h的大小视作一个惩罚项。

   表示当前第n个样本真实值和预测值的差,称之为余数。余数表示了当前预测s能够做到与真实值y的差值是多少。那么,如果我们想要让上式最小化,求出对应的的话,只要让h尽可能地接近余数即可。在平方误差上尽可能接近其实很简单,就是使用regression的方法,对所有N个点做squared error的regression,得到的回归方程就是我们要求的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值