小象学院 第11章 提升

中段这些课程是非常重要的:

 

 

或许我们可以想一个方式,

那么说,我有没有可没有可能,通过样本加权,或者是分类器加权的方式

通过这样子的

或许我们想一个办法,对分类器加上一个权值

这个权值怎么考虑呢?

我们可以通过损失函数

沿着它的梯度、(梯度是一阶导是吧),或者是加上二阶导,(海森矩阵)

如果使用一阶导,或是二阶导

就能得到GBDT,XGBOOST

然后,如果使用损失函数,ADBOOST,自适应提升

所以说呢今天要探索的事情呢,其实相当是对一些基本分类器的集成

但是这种集成,不是简单的像随机森林那样把它加起来

而是要对它加权的方式

 

举个例子

提升的想法是很有趣的

我们想一想,如果要做分类器或回归器的时候,

如果我要做随机森林的时候,理论

但是N个分类器是直接“少数服从多数”

但是100个分类器是相对独立的,

我们来想一下,如果前面已经得到了M-1棵决策树的时候,

我们能不能通过已有的样本的决策树的信息,对第M棵决策树的建立产生有益的影响呢?

比如说,我们得到若干棵决策树以后,真的只能通过小数服从多数这种简单的方式进行最后的预测吗?

我们可以对决策树加上权值吗?

 

 

wiki 百科上的解释:

 

Gradient boosting is a machine learning technique for regression and classificationproblems, which produces a prediction model in the form of an ensemble of weak prediction models, typically decision trees.

梯度提升是一种机器学习的技术,可以用于分类和回归;

它产生一种预测模型,它是一种把弱分类器集成在一起的方法,特别是决策树。

 

课件上的解释:

提升是一种机器学习技术,可以用于分类和回归;

它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中;

如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradient Boosting)

 

梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数); 

提升算法通过迭代,每次选择一个负梯度方向上的基函数来逐渐逼近局部极小值。

 

给定不同的树,损失函数是不断发生变化的:

 我们可以把损失函数看成是“自变量”是树的函数

我们把损失函数对树求偏导的话,沿的负梯度发生下降,不就可以让损失函数越变越小吗?

其实就是仿照着梯度下降法来做的。

 

损失函数是根本实际问题给的

跟提升本身没有关系

我们可能给定MSE,或者交叉熵

当我们有这个损失函数的时候,就来根据这个分类器本身求梯度,然后求负梯度

下降时的“步长”就当做分类器本身的权值

 

我们曾经在代码中,在第4次课,给出了一个代码,

当时叫做Bagging 。

nformal introduction[edit]

(This section follows the exposition of gradient boosting by Li.[6])

Like other boosting methods, gradient boosting combines weak "learners" into a single strong learner in an iterative fashion. It is easiest to explain in the least-squares regression setting, where the goal is to "teach" a model {\displaystyle F}545fd099af8541605f7ee55f08225526be88ce57uploading.gif转存失败重新上传取消F to predict values of the form {\displaystyle {\hat {y}}=F(x)}ad1ceaa8141c3c194c685cac4d222e286d88e1e6uploading.gif转存失败重新上传取消\hat{y} = F(x) by minimizing the mean squared error {\displaystyle 1/n\sum _{i}({\hat {y}}_{i}-y_{i})^{2}}f037c17718147efed43aaf7bb68778a9e8e807bduploading.gif转存失败重新上传取消{\displaystyle 1/n\sum _{i}({\hat {y}}_{i}-y_{i})^{2}}, where {\displaystyle i}add78d8608ad86e54951b8c8bd6c8d8416533d20uploading.gif转存失败重新上传取消iindexes over some training set of size {\displaystyle n}a601995d55609f2d9f5e233e36fbe9ea26011b3buploading.gif转存失败重新上传取消n of actual values of the output variable {\displaystyle y}b8a6208ec717213d4317e666f1ae872e00620a0duploading.gif转存失败重新上传取消y.

At each stage {\displaystyle m}0a07d98bb302f3856cbabc47b2b9016692e3f7bcuploading.gif转存失败重新上传取消m, {\displaystyle 1\leq m\leq M}180b134ce5f780b4dc77bedbcc7e37a0e7b39260uploading.gif转存失败重新上传取消1 \le m \le M, of gradient boosting, it may be assumed that there is some imperfect model {\displaystyle F_{m}}afc15d41d3176d0fb9b4474762c53d49add76fbfuploading.gif转存失败重新上传取消F_m (at the outset, a very weak model that just predicts the mean y in the training set could be used). The gradient boosting algorithm improves on {\displaystyle F_{m}}afc15d41d3176d0fb9b4474762c53d49add76fbfuploading.gif转存失败重新上传取消F_m by constructing a new model that adds an estimator h to provide a better model: {\displaystyle F_{m+1}(x)=F_{m}(x)+h(x)}71763b3f4f7524fed7836433b33c7a3bdc1ccab4uploading.gif转存失败重新上传取消F_{m+1}(x) = F_m(x) + h(x). To find {\displaystyle h}b26be3e694314bc90c3215047e4a2010c6ee184auploading.gif转存失败重新上传取消h, the gradient boosting solution starts with the observation that a perfect h would imply

{\displaystyle F_{m+1}(x)=F_{m}(x)+h(x)=y}42940917117b12ff21c2c936bfef526a6cb62779uploading.gif转存失败重新上传取消{\displaystyle F_{m+1}(x)=F_{m}(x)+h(x)=y}

or, equivalently,

{\displaystyle h(x)=y-F_{m}(x)}0190d9401eba2ab598f747b6c6b19bf023a30545uploading.gif转存失败重新上传取消h(x) = y - F_m(x).

Therefore, gradient boosting will fit h to the residual {\displaystyle y-F_{m}(x)}e8cb01b82cfae01caa755f9a25ead42d05225e81uploading.gif转存失败重新上传取消y - F_m(x). As in other boosting variants, each {\displaystyle F_{m+1}}f79d37287d73b20d8cab41477cda062c8b9e8912uploading.gif转存失败重新上传取消F_{m+1} attempts to correct the errors of its predecessor {\displaystyle F_{m}}afc15d41d3176d0fb9b4474762c53d49add76fbfuploading.gif转存失败重新上传取消F_m.

 

随机森林是在样本上做文章

 

 

 

决策产生的模型一般都比较弱

 

每次都这么贪心

最终的结果不一定最好,但是应该是个还不错的结果

 

树就是一个函数

给一个Xi, 就能得到一个 y

大家可能不知道我在做什么,

L关于树T可以写成一个

f(x) = x-1

 

只要把T看成是一个变量就好了

另外,T本身是怎么成了函数了,

我样这么想,现在可能建立了一棵决策树,可能是ID3,C4.5,CART 等 等 

那么当我们得到了一棵决策树的时候,为什么 说这个树看做函数呢?

我们这样想,这个

 

我们给了Xi 这么一个样本,

它可能落在左枝或者右枝

然后又落在左枝。。

这个Xi 最终落在某一个叶子上,

那么这个叶子总归会有一个预测值,这个是决策树本身的特点

这样的话,相当于Xi 这个样本,它最终就有一个估计值 Yi_hat

这个 Yi_hat 是怎么来的呢?

它其实就是把Xi 喂给了这棵树,这棵树就给它返回了一个yi_hat

那么我们就可以说,这个Xi经过了树的作用得到了一个yi_hat

这样这个树 不就可以看成一个函数吗,它加工的对象,或者说自变量,就是X, 因变量,就是最后的预测值

所以树在我们眼中就是函数,跟数学中的函数没有什么区别,只不过这个函数是非线性的

 

 

 F(xi)  是当F(xi) 变化一点点时,损失函数的变化

所以把前边已经有的—— Fm-1(x) 是之前所有的基函数其实权值的加和

把损失函数在这些地方求偏导

这样一个东西呢,我们管叫做伪残差

如果这个L,取做 f(xi) -y(i) 的平方,再对所有样本求和,如下:

 

这个F(xi) - yi 真的就是残差

这样每一个样本都有一个伪残差

我们就去拟合一个伪残差,这种总是可做的嘛

就是有了X,有了R,我们现在要做一个决策树,去拟合它,

不管是离散还是连续的

(不管是回归还是分类)

 

我们再给定某一个学习率,那么说,我们不叫得到它的权值吗。

事实上,关于它的这个学习率,我们没提

比如在做梯度下降的时候,往往就会拍脑门,给一个0.01

然后呢,随着这个。。

比如最开始,可以给的学习诣0.1,然后经过1000次迭代,把它变成0.001

又经过1000次迭代,把它变成 。。。。

所以这个学习率,给的是比较自由的

但是其实这个伽MA,是可以正规地算出来的

可以查一下“自适应学习率”的计算方式

所以说,其实这里是有一个线性搜索的过程的。

就是,这里,我们可以根据某一个准确,折半也好,

 

 

我们可以形式化的说说,要不然大家还是觉得有点别扭

 

 

 

 

GBDT 仅仅使用一阶导

XGBOOST使用二阶导

 

考虑t-1 棵决策树,每一棵决策树都是有权值的

 

如下:

第一棵决策树,权值是阿尔法1

第二棵决策树,权值是阿尔法2

。。

第t-1棵决策树,权值是阿尔法t-1

那这样,对于某一个样本Xi ,

第一棵树的预测结果是T1(Xi) 

第二棵树的预测结果是T2(Xi) 

树不是还有权值嘛

把预测结果与权值相乘相加

换一下记号:

一共有M个样本

相当于我们现在就有了这样的M个数据

现在要算的是:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值