机器学习(十一)——提升方法

集成学习:通过构建并结合多个学习器来完成学习任务

集成学习方法大致可以分为两大类:a.个体学习器间存在强依赖关系,必须串行生成序列化方法——代表:Boosting;b.个体学习器间不存在强依赖关系,可同时生成的并行化方法——代表:Bagging和”随机森林“

一、Boosting

Boosting的工作机制类似:先从初始训练集训练出一个基学习器(算法+数据),再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

二:、AdaBoost算法理解

 Adaboost算法的步骤代码描述:

二、提升树

提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法,以决策树为基函数(基函数+数据训练=基学习器)的提升方法称为提升树。

2.1 提升树的原理

关于提升树的权值问题:参考:https://blog.csdn.net/qq_41393570/article/details/81234665

2.1 算法过程

 

三、梯度提升(Gradient Boosting) 

3.1 梯度提升的概念

提升树利用加法模型与前向分布算法实现的优化过程,当损失函数是平方损失和指数损失函数时,每一步优化是很简单的,但对一般损失函数而言,往往每一步优化并不那么容易。针对这一问题,Freidman提出了梯度提升(gradient boosting)算法,这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值

作为回归问题提升树算法中的残差的近似值,拟合一个回归树。(对于平方损失函数,他就是通常所说的残差;对于一般损失函数,它就是残差的近似值)

3.2 GBDT的思想的通俗的例子解释:

假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

3.3 GBDT(Gradient Boosting Decision Tree) 回归算法

算法第1步初始化,估计使损失函数极小化的常数值,它是只有一个根节点的树,第2(a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计,对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值,第2(b)步估计回归树叶节点区域,以拟合残差的近似值,第2(c)步利用线性搜索估计叶节点区域的值,使损失函数极小化。第2(d)步更新回归树。第3步得到输出的最终模型f(x)。

 

3.4 GBDT分类算法

这里我们再看看GBDT分类算法,GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。

    为了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。

GBDT分类算法参考:https://www.cnblogs.com/pinard/p/6140514.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值