集成学习之前向分步算法

1. 前向分布算法

1.1 算法介绍

  我们在上一篇文章中简单介绍并实现了Adaboost算法,我们需要通过M个基本分类器,每个分类器的错误率、样本权重以及模型权重。即每次Adaboost都是在学习单一分类器以及单一分类器的权重。(解决的是分类问题)。我们通过去抽象Adaboosts算法的整体框架逻辑,构建集成学习的一个重要框架—前方分布算法,**通过此算法,我们不仅可以解决分类问题,也可以解决回归问题。**这里将简单。

1.2 AdaBoost算法模型抽象化

  AdaBoost算法模型是模型加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类学习算法。可以当作AdaBoost算法是前向分步算法的特例。
  对于这几类算法,这里不做过多解释。有几点要注意:

  • 前向分步算法的思想和贝叶斯有类似的地方:它们都假设每一步之间的基函数和系数是独立不相关的(在贝叶斯估计中这叫独立同分布),也因为这一假设才可以把原始的全局最优解求解等价为分布的子项求解过程。但是这种假设会丢失一部分的精度,即每一步之间的依赖关联会被丢弃。
  • 和其它统计学习模型一样,前方分布算法的策略也同样是:经验风险最小化,如果在模型中加入了penalty惩罚项,那么就可以演进为结构风险最小化。

2. 提升树(GBDT Gradient Boostring Decision Tree)

2.1 提升树模型简介

  提升树是一种以分类树或者回归树为基本分类器的提升方法。提升树实际上采用的是加法模型(基函数的线性组合)与前向分布算法。以决策树为基函数的提升方法称为提升树(Boosting tree),对二分类问题决策树是二叉树,对二分类问题决策树是二叉树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型。

2.2 提升树的具体解释

如果抽象来看,把每个基分类器的权重概率看作模型的参数,即每一轮的模型都接收上一步模型的参数作为输入,这一点很像深度神经网络的层一层之间的关系。
区别在于Boosting方法每轮得到的模型参数在输入下一轮迭代时是固定不变的,在每轮跌倒之间变动的只有:1)数据的概率权重;及2)模型的决策权重,而DNN会在每轮迭代中不断调整模型自身内部的所有神经元(对应基分类器)的内部参数。
打个不巧当的比喻:DNN坚信自己就是最棒的,不断提升自己。而Boostring认为众人拾柴火焰高,一个人不行我们就用祖父子->祖父子代代之间不断去优化,然后大家一起来参与决策

由于树的线性组合可以很好地拟合训练数据中存在的概率规则分布(可能是多峰的),即使数据中的输入与输出之间的关系很复杂也是如此,所以提升树是一个高效地学习算法。

下面讨论针对不同问题的提升树学习算法,其主要区别在于使用的损失函数不同:

1)用平方误差损失函数的回归问题:用平方误差求导更平滑可微;
2)用指数损失函数的分类问题;
3)用一般损失函数的一般决策问题;

我的理解目前是这些,具体关于提升树的案例分析和代码实战,还需要再琢磨一下后,整理好思路再分享给大家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

很随便的wei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值