Boosting知识点整理(AdaBoost,GBDT,XGBoost)

关于Boosting

概括

减小偏差的角度,将若干个弱学习器按照一定的策略整合成一个强学习器(针对弱项逐个击破,不断降低偏差);
问题:
(1)泛化误差的分解(噪声,方差,偏差),各自代表什么含义?;
(2)bagging vs boosting?(减小方差vs减小偏差);
(3)为什么bagging可以提高泛化能力?(证明公式)
(4)为什么boosting可以提高泛化能力?
(5)如何“好而不同”(样本,特征,输出,参数)

四个基本原则

对于任意的boosting算法模型,四个基本点牢牢抓住:
(1)如何计算学习误差率?
(2)如何得到弱学习器权重?
(3)如何更新弱学习器样本权重?
(4)如何结合多个弱学习器?

关于AdaBoost(分类回归)

基本原理

基于上一个弱学习器的学习结果,对其中分类错误的样本,在下一个弱学习器中,提高他们的权重;

基本步骤

(1)计算当前弱学习器的错误率alpha(分类:指数损失; 回归:绝对损失,平方损失,指数损失);
(2)基于alpha计算当前弱学习器的权重w;
(3)
3.1 基于alpha以及样本判断结果更新下一轮学习器中样本的权重;
3.2 样本权重规范化;
(4)将所有弱学习器整合(加法模型);在这里插入图片描述

损失函数

分类:指数损失
回归:绝对损失,平方损失,指数损失

正则化

  1. 调节学习率
    未正则化模型:
    hk(x)=hk-1(x) + alphak * estimatork
    含正则化项目的模型
    hk(x)=hk-1(x) + V * alphak * estimatork
    其中,V为学习率(步长)
    注意:要达到同样的学习效果,意味着正则化后的模型需要更多的迭代次数(n_estimators)
  2. 调节树参

缺陷

对异常值敏感,如果异常样本获得权重会影响模型效果

调参

常调:n_estimators + learning_rate, 两者同时调
loss: 只针对回归,选择不同损失函数(linear:绝对误差 square:平方误差 exponetial:指数误差)计算各个样本相对误差,最后计算加权损失

关于GBDT(Cart分类回归)

GBDT:gradient boosting decision tree 梯度提升树,注意只能用Cart作为基学习器

基本原理

(1)利用当前学习器来ht(x)拟合上一步得到的学习器ft-1(x)预测样本损失函数对预测值的负梯度目的是使得加入当前学习器ht(x)后当所有样本代价函数能够最快速地减小;
ps:特例
当模型中,损失函数取“平方损失”时,GBDT可以理解为:
利用当前学习器来ht(x)拟合上一步得到的学习器ft-1(x)预测样本 残差目的是使得加入当前学习器ht(x)后当所有样本代价函数能够最快速地减小
(2)GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

损失函数

分类:指数损失,对数似然损失
回归:绝对损失,平方损失,huber损失(异常值鲁棒),quantile损失(异常值鲁棒)

正则化

  1. 调节学习率(步长)
    未正则化:
    hk(x) = hk-1(x) + estimatorsk
    正则化后:
    hk(x) = hk-1(x) + V * estimatorsk
    其中:V为学习率,表示步长
  2. 调节树参
    (1) 子采样比例正则化
    针对树参,调节subsample(小于1),使得每一棵树信息有所差异,减小方差
    (2) 正则化剪枝

问题:过拟合如何处理?

调参

常用参数

(1)boost参:

  1. n_estimators,learning_rate
  2. loss:
    分类:deviance(对数似然损失),exponential(指数损失)
    回归:ls(均方差),lad(绝对损失),huber,quantile(分位数损失) ,后两种针对噪音较多情况,调节alpha值

(2)树参:
3. max_depth:
4. max_features:
5. min_samples_leaf:
6. min_samples_split:
7. subsample: 注意此处为非放回抽样,子采样比例
(3)全局参:
random_state:

调参步骤

n_estimators
max_depth + min_samples_split,
min_samples_split + min_samples_leaf
subsample
n_estimators + learning_rate

优缺点

优点:
(1)灵活处理连续值,缺失值
(2)准确度高
(3)使用健壮的损失函数,对异常值鲁棒性强(如huber损失和quantile损失函数)
缺点:
无法并行

关于XGBoost

基本原理

基于GBDT改进:
(1)算法本身优化:成本函数加入正则化项,基于对成本函数2阶泰勒展开同时计算样本划分规则以及树叶节点输出值;
(2)运行优化:允许并行(问题:允许什么计算并行?);
(3)增加了对缺失值的处理,增强鲁棒性:分别加入左子树与右子树,并选择最优处理方式;

损失函数

回归:MSE(均方差)
二分类:对数损失函数
多分类:softmax函数

正则化

树参:
学习率:
正则化项:

调参

常用参数

boosting参:

  1. n_estimators + learning_rate
  2. objective(损失函数):
    回归:均方差
    分类:对数损失
    多分类:softmax

树参:
3. max_depth:
4. min_child_weight: 类似min_samples_leaf
5. gamma: 分裂节点时评估指标增益的最小阈值(可以理解为类似信息增益的阈值)
6. subsample: 注意此处为非放回抽样,子采样比例
7. ==colsample_bytree/colsample_bylevel/colsample_bynode:==列抽样
8. reg_alpha/reg_lambda: l1,l2正则化系数

全局参数:
9. random_state:
10. n_jobs: 注意xgboost可以并行!!

调参步骤

n_estimators
min_child_weight + gamma
n_estimators + learning_rates

过拟合如何处理?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值