艰难的秋招 机器学习笔记 集成学习、随机森林、Adaboost、提升树、GBDT、XGBoost

集成学习

【机器学习】模型融合方法概述

【机器学习】集成学习之stacking

介绍

集成学习(ensemble learning)通过构建并结合多个弱学习器(也叫基学习器)来完成机器学习任务,提升单个学习器的性能。

集成学习主要三个类别:Bagging,Boosting和Stacking。Bagging有随机森林算法,Boosting有Adaboost、GBDT等算法,Stacking没有具体的算法,只是把多种算法融合在一起。

Bagging使用了有放回抽样方法,每次从训练数据抽取N个样本(N是训练数据的大小),训练一个基学习器,最后综合多个基学习器得到最终的模型。Bagging中的基学习器可以并行训练,彼此之间没有依赖关系。

Boosting也可以称为提升方法,实际采用加法模型(基学习器的线性组合)与前向分步算法。Boosting会初始化一个先验模型作为当前模型。根据训练数据的权值或者根据训练数据和当前模型的残差训练一个基学习器,并将这个基学习器添加到当前模型中,下一轮会根据训练数据和更新后的模型再训练一个基学习器。所以,Boosting中的基学习器是相互依赖的,只能串行训练。

Stacking是一种可以把多种算法融合在一起的集成方法,也称为模型融合。给定训练集和测试集,选择一个模型,比如逻辑回归,对训练集进行K折交叉验证,因此可以训练K个逻辑回归模型。对于每个模型,

  • 需要对对应的验证集进行预测,然后把所有验证集的预测结果叠加起来,可以得到一个列向量,长度等于训练集的大小。该向量可以看作训练集的一个新的特征。
  • 需要对预测集进行预测,然后把测试集的预测结果相加并求平均值,长度等于测试集的大小。该向量可以看作测试集的特征。

接下来可以选择参数不同的逻辑回归模型或者选择其他模型,再生成多个新的特征。

最后,在新的训练集进行训练一个算法,并对新的测试集进行预测。

Stacking过程如下图所示:
在这里插入图片描述

Bagging和Boosting的区别

Bagging选择不稳定的、方差大的基学习器,比如决策树和神经网络,不可以选线性模型;Boosting方法选择拟合能力强的基学习器,比如决策树和线性学习器。

从方差和偏差的角度看,Bagging方法主要关注降低方差,Boosting方法主要关注降低偏差。但是在GBDT的实现中,也可以使用数据和特征抽样方法来降低方差。

Boosting降低偏差比较容易理解,每次对当前模型在训练数据上的预测值与真实值的残差拟合一棵树,使训练误差越来越小。

Bagging降低方差不太好理解。Bagging中的每个基学习器在不完全相同的数据集上训练,基学习器之间的方差比较大。但是,基学习器的效果是优于随机的,而且每个学习器的误差有一定独立性。通过集成所有基学习器的预测结果,可以使模型的预测结果趋于正确值,降低了模型的方差,提高了模型的泛化能力。

随机森林

随机森林(Random Forest)是一种Bagging集成算法。它对Bagging进行了改进,选择CART决策树作为基学习器;还有在分裂结点时,随机抽取一部分特征并选择其中最好的特征。

Adaboost

介绍

Adaboost是一种Boosting集成算法。它为每一个样本分配了一个权重,根据训练数据和对应的权重训练一个基学习器,计算该学习器的加权分类误差率,然后根据分类误差率调整每个样本的权重:减小分类正确的样本的权重,增大分类错误的样本的权重。Adaboost依次训练多个基学习器,最终组合所有学习器为最终的模型。

描述

训练数据是二类的,目标值是-1+1。训练集大小为N,每个样本的初始权重为1/N,权重之和为1

需要训练多个基学习器,对于一个基学习器:

  • 根据当前的训练数据和权重,训练一个基学习器 G m G_m Gm,使该学习器的分类误差率最低。分类误差率是分类错误的数据的权重之和。
  • 假设分类误差率为 e m e_m em,计算该基学习器的系数 α m = 1 2 l n 1 − e m e m \alpha_m=\frac{1}{2}ln\frac{1-e_m}{e_m} αm=21lnem1em。分类正确的样本的权重乘以 e − α m e^{-\alpha_m} eαm,分类错误的样本的权重乘以 e α m e^{\alpha_m} eαm,然后对所有样本的权重进行归一化,保证权重之和为1
  • 因为分类误差率小于二分之一,所以 α m > 0 \alpha_m>0 αm>0,分类正确的样本权重减小,分类错误的样本权重增大。

最后,构建基学习器的线性组合: G ( x ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(\sum_{m=1}^{M}\alpha_mG_m(x)) G(x)=sign(m=1MαmGm(x))

提升树

介绍

提升树(Boosting Tree)是一种Boosting集成算法。提升树算法使用决策树作为基学习器,对分类问题是二叉分类树,回归问题是二叉回归树。

对于二分类问题,提升树算法只需要将AdaBoost 算法中的基学习器限制为二叉分类树即可。可以说这时的提升树算法是Adaboost算法的特殊情况。

对于回归问题,提升树算法每次根据训练数据的真实目标值当前模型的预测值残差训练一个基学习器,更新当前模型,并不断重复。

前提:

  1. 提升树模型可表示为决策树的加法模型: f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) f_M(x)=\sum_{m=1}^MT(x;\Theta_m) fM(x)=m=1MT(x;Θm)
  2. 首先初始化提升树 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0,则第 m m m 步的模型为: f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) f_m(x)=f_{m-1}(x)+T(x;\Theta_m) fm(x)=fm1(x)+T(x;Θm)
  3. 通过经验风险最小化确定下一棵决策树的参数。换句话说,下一棵决策树需要拟合训练数据和当前模型的残差。

Θ ^ m = arg ⁡ min ⁡ Θ m ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; Θ m ) ) \hat{\Theta}_m=\arg\underset{\Theta_m}{\min}\sum_{i=1}^NL(y_i,{\color{Red} f_{m-1}(x_i)+T(x_i;\Theta_m)}) Θ^m=argΘmmini=1NL(yi,fm1(xi)+T(xi;Θm))

描述

输入:训练集 T =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值