梯度提升算法 介绍
来源:互联网 发布:917发卡平台源码 编辑:程序博客网 时间:2024/06/06 11:43
翻译维基百科介绍
梯度提升算法
梯度提升算法是一种解决回归和分类问题的机器学习技术,它通过对弱预测模型(比如决策树)的集成产生预测模型。它像其他提升方法一样以分步的方式构建模型,并且通过允许使用任意可微分的损失函数来推广它们。
非正式介绍
和其他boost方法一样,梯度提升方法也是通过迭代的方法联合弱”学习者”联合形成一个强学习者。很容易在最小二乘回归中解释算法的原理,最小二乘法回归的目的就是“教”模型F通过将平方误差
在梯度提升的
算法
在许多监督学习问题中,都有一个输出变量
梯度提升算法假设一个真值
其中
不幸的是,在任意损失函数L的每个步中选择最佳函数h,一般来说这是一个计算上不可行的优化问题。因此我们可以通过一些限制简化问题。简化的办法就是使用梯度下降法解决最小化问题。假设我们考虑连续的情况,比如
其中导数是关于
通用梯度提升方法的伪代码如下:
输入:训练集
算法如下:
1. 使用常量初始化模型:
2. For m = 1 to M:
1.使用损失函数的负梯度在当前模型
2. 使用基学习器
3. 解一维优化问题计算乘子
4.更新模型:
3.输出
梯度提升树
梯度提升算法通常用具有固定大小的决策树(特别是CART树)作为基学习器。对于这种特殊情况,Friedman提出了一种改进梯度提升的方法,提高了每个基学习期的质量。一般梯度提升算法在第m步使用
Friedman建议修改该算法,以便为每个树的区域选择单独的最优值
树的大小
Hastie等人评论认为,
(译注:由于译者水平有限,没有完全这段话含义,尤其是相互作用这几句话,希望得到大神指
点,现贴出原文)。
Hastie et al.[7] comment that typically
正则化
拟合训练集太过于接近可能会降低模型的泛化能力。几种所谓的正则化技术通过约束拟合过程来减少这种过拟合效应。一个很自然的正则化参数是梯度提升的迭代次数M(即当基学习器是决策树时,模型中树的数目)。 增加M可减少训练误差,但将其设置得太高可能导致过拟合。 通常通过在单独的验证集上监测误差来选择M的最优值。 除了控制M之外,还可以使用其他一些正则化技术:
收缩
梯度提升算法的一个重要部分是收缩正则化,其中包括修改更新规则如下:
其中参数
随机梯度提升
引入梯度提升方法不久之后,Friedman提出对该算法的微小修改,想法源于Breiman提出的bagging方法。具体来说,他提出在算法的每一次迭代中,基础学习器应该随机抽取训练集的子样本作为训练集拟合。Friedman观察到这种修改对梯度提升的精度有实质性改善。
子样本大小由常分数
和bagging算法一样,子样本通过评价那些在构建下一个基学习器中没有使用的样本集,可以定义预测性能改进的包外误差(out-of-bag)。 包外估计可以避免需要独立的验证数据集,但往往低估实际性能的提升和最佳迭代次数。
叶节点中包含样本数
梯度提升树的实现中,还可以通过限制树叶节点中的最小样本数量来进行正则化(该参数在R gbm包中称为n.minobsinnode [10])。 它忽略将导致叶节点包含少于某一阈值数量的训练集实例节点的分裂(译注:也就是预剪枝)。施加此限制有助于减少叶节点预测的方差。
树复杂度的罚项
梯度提升树的另一个有用的正则化技术是惩罚学习模型的模型复杂性。模型复杂度可以定义为树中叶子的比例数(译注:比例数?应该是指叶子总数与树数目的比值)。 损失函数加上模型复杂度的罚项对应于修剪后的算法,可以去除一些增加模型复杂度,但对损失函数的降低影响不大的分支。 还可以添加其他类型的正则化,例如
- 梯度提升算法 介绍
- 梯度提升(gradient boosting)算法
- 梯度树提升算法GBRT
- GBDT梯度提升算法调参
- 机器学习算法-梯度树提升GTB(GBRT)
- 用Python进行梯度提升算法的参数调整
- GBDT梯度提升树算法原理小结(一)
- GBDT梯度提升树算法原理小结(二)
- GBDT梯度提升树算法原理小结(三)
- 机器学习算法-梯度树提升GTB(GBRT)
- GBDT(Gradient Boosting Decision Tree 梯度提升/迭代树)算法
- 机器学习算法-梯度树提升GTB(GBRT)
- 梯度提升&随机森林混杂算法预测红酒口感
- 【机器学习】GBDT梯度提升算法调参法总结II
- 方向梯度直方图-Hog算法介绍
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- 梯度提升思想
- opencv3:AttributeError: 'module' object has no attribute 'CV_LOAD_IMAGE_COLOR'
- CCF NOI1170 质因数分解
- 暗网购物指南
- linux常用命令及总结
- 什么是面向切面编程AOP
- 梯度提升算法 介绍
- Ajax技术之与服务器通信-发送请求与处理响应
- React Native ref高级用法&&setNativeProps使用
- JS resizes事件(UI)
- DAO模式总结
- mysql 主从复制原理
- poj 3693 Maximum repetition substring
- AJAX技术
- leetcode85 ma error