集成学习:随机森林/GBDT/XGBoost (学习笔记一)

知识点:

  • 随机森林

  • 提升算法

  • GBDT(迭代决策树)

  • Adaboost

  • XGBoost

  • Stacking

集成学习(Ensemble Learning)

集成学习的思想就是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error<0.5);

集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个较为明显的性能提升.

常见的集成学习思想有:

Bagging

Boosting

Stacking

Why need Ensemble Learning?

1.弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误.那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,

2.对于数据过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大分类器;

3.如果数据划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合;

4.对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合.

Bagging方法

Bagging方法又叫做自举汇聚法(BoostStrap Aggregating),思想就是:在原始数据集上通过有放回的抽样方式,重新选怎S个新数据集来分别训练S个分类器的集成技术.也就是说这些模型的训练数据中允许存在重复数据.

Bagging方式训练出来的模型在预测新样本分类的时候,会使用多数投票法或者求均值的方式来统计最终的分类结果.

Bagging方法的弱学习器可以是基本的算法模型,eg:Liner,Ridge,Lasso,Logistic,Softmax,ID3,C4.5,CART,SVM,KNN等.

备注:Bagging方式是有放回的抽样,并且每个子集的样本数量必须和原始样本数量一致,但子集中允许重复数据.

Bagging方法_训练过程

Bagging方法_预测过程

随机森林(Random Forest)

在Bagging策略的基础上进行修改后的一种算法

  • 从原始样本集(n个样本)中使用booststrap采样(有放回重采样)选出n个样本;
  • 从所有属性中随机选择k个属性,选择最佳分割属性作为节点创建决策树;
  • 重复以上两步m次,即建立m棵决策树
  • 这m个决策树形成随机森林,通过投票表决结果决定数据属于哪一类

袋外错误率

随机森林有一个重要的优点,没必要对它,进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计.它可以在内部进行评估,也就是说生成的过程中就可以对误差建立一个无偏估计.

我们知道,在构建每棵树的时候,我们对于每棵树而言使用了不同的boostrap sample (随机且有放回的抽取).对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本.

而这样的采样点就允许我们进行oob估计,它的计算方式如下:

对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);

然后以简单多数投票作为该样本的分类结果;

最后用误分个数占样本总数的比率作为随机森林的oob误分率.

oob误分率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的k折交叉验证.

特征重要度

作为单个的决策树模型,在模型建立时实际上是寻找到某个特征合适的分割点.这个信息可以作为衡量所有特征重要性的一个指标.

它的基本思想:如果一个特征被选为分割点的次数越多,那么这个特征的重要性就越强.这个理念可以被推广到集成算法当中,只要将每棵树的特征重要性进行简单的平均就可以啦.

根据特征重要度进行特征选择.

RF的推广算法

RF算法在实际应用中具有比较好的特性,应用也比较广泛,主要应用在:分类,回归,特征转换,异常点检测等.常见的RF变种算法如下:

  • EXtra tree
  • TRTE(Totally Random Trees Embedding)
  • Isolation Forest

Extra Tree

Extra Tree 是RF的一个变种,原理基本和RF一样,区别如下:

  • 1.RF会随机采样来作为子决策树的训练集,而Extra Tree每个子决策树采用原始数据集训练;
  • 2.RF在选择划分特征点的时候回合传统决策树一样,会基于信息增益,信息增益率,基尼系数,均方差等原则来选择最优特征值;而Extra Tree会随机选择特征进行划分决策树.

Extra Tree因为是随机选择特征值的划分点,这样会导致决策树的规模一般大于RF所生成的决策树.也就是说ExtraTree模型的方差相对于RF进一步减少.在某些情况下,Extra Tree的泛化能力比RF的强.

TRTE(Totally Random Trees Embedding)

TRTE是一种非监督的数据转化方式.将低维数据映射到高维,从而让映射到高维的数据更好 的应用于分类回归模型.

TRTE算法的转换过程类似RF算法的方法,建立T个决策树来拟合数据.当决策树构建完成后,数据集里的每个数据在T个决策树中叶子节点的位置就定下来了,将位置信息转换为向量就完成了特征转换操作.

案例:有3棵决策树,每颗决策树和有5个叶子节点,某个数据x划分到第一个决策树的第三个叶子节点,第三个决策树的第五个叶子节点,那么最终的x映射特征编码为:(0,0,1,0,0,1,0,0,0,0,0,0,0,0,1)

IForest(Isolation Forest)

IForest是一种异常点检测算法,使用类似RF的方式来检测异常点;IForest算法和RF算法的区别在于:

1.在随机采样的过程中,一般只需要少量数据即可;

2.在进行决策树构建过程中,IForest算法会随机选择一个划分特征,并对划分特征随机选择一个划分阈值;

3.IForest算法构建的决策树一般深度max_depth是比较小的.

区别原因:目的是异常点检测,所以只要能够区分异常的即可,不需要大量数据;另外在异常点检测的过程中,一般不需要太大规模的决策树.

对于异常点的判断,则是将测试样本x拟合到T棵决策树上.计算在每棵树上该样本的叶子节点的深度ht(x).从而计算出平均深度h(x);然后就可以使用下列公式极端样本点x的异常概率值,p(s,m)的取值范围为[0,1],越接近于1,则是异常点的概率越大.

RF的主要优点:
1. 训练可以并行化,对于大规模样本的训练具有速度的优势;
2. 由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能;

3. 给以给出各个特征的重要性列表;
4. 由于存在随机抽样,训练出来的模型方差小,泛化能力强;
5. RF实现简单;
6. 对于部分特征的缺失不敏感。

RF的主要缺点:
1. 在某些噪音比较大的特征上,RF模型容易陷入过拟合;
2. 取值比较多的划分特征对RF的决策会产生更大的影响,从而有可能影响模型的效果。

随机森林的思考

在随机森林的构建过程中,由于各棵树之间是没有关系的,相互独立的,在构建的过程中,构建第m棵子树的时候,不会考虑前面的m-1棵树.

思考:

如果构建第m棵树的时候,考虑到前m-1棵子树的结果,会不会对最终结果产生有益的影响?

各个决策树组成随机森林后,在形成最终结果的时候能不能给定一种既定得到决策顺序呢?(也就是那颗子树先进行决策,那颗子树后进行决策)

Boosting

  • 提升学习(Boosting)是一种机器学习技术,可以用于回归和分类问题,它每一步产生弱预测模型(如决策树)并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gradient Boosting);
  • 提升技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的方法得到一个强预测模型

常见模型有:

Adboost

Gradient Boosting(GBDT/GBT/GBRT)

AdaBoost算法原理

Adaptive Boosting是一种迭代算法.每轮迭代中会在训练集上产生一个新的学习器,然后使用该学习器对所有样本进行预测,以评估每个样本的重要性(Informative).换句话说就是,算法会为每个样本赋予一个权重,每次用训练好的学习器标注/预测各个样本,如果某个样本点呗预测的越正确,则将其权重降低,否则提高样本的权重.权重越高的样本在下一次迭代训练中所占的比重就会越大,也就是说越难区分的样本在训练过程中会变得越重要;

整个迭代过程知道错误率足够小或者达到一定的迭代次数为止.

样本加权

Adaboost算法

Adaboost算法将基分类器的线性组合作为强分类器,同时给分类误差率较小的基本分类器以大的权值,给分类误差率较大的分类器以较小的权重值;构建的线性组合为:

最终分类器是在线性组合的基础上进行Sign函数转换:

AdaBoost算法原理

Adaboost算法构建过程

AdaBoost总结

AdaBoost的优点如下:

  • 可以将处理连续值和离散值;
  • 可以将不同的分类算法作为弱分类器;
  • 解释强,结构简单
  • 精度高

AdaBoost的缺点如下:

  • 对异常样本敏感,异常样本可能会在迭代过程中获得较高的权重值,最终影响模型效果
  • 迭代次数(弱分类器个数)不好确定

梯度提升迭代决策树GBDT

GBDT也是Boosting算法的一种,但是和AdaBoost算法不同;区别如下:AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT也是迭代,但是GBDT要求弱学习器必须是CART模型,而且GBDT在模型训练的时候,是要求模型预测的样本损失尽可能的小.

当给定步长的时候,给定一个步长step,在构建下一棵树的时候使用step*残差值作为输入值,这种方式可以减少过拟合发生.

梯度提升迭代决策树GBDT

GBDT由三部分构成:DT(Regression Decistion Tree),GB(Gradient Boosting)和Shrinkage(衰减)

由于多棵决策树组成,所有树的结果累加起来就是最终结果

迭代决策树和随机森林的区别:

  • 随机森林使用抽取不同的样本构建不同的子树,也就是说第m棵树的构建和前m-1棵树的结果没有关系.
  • 迭代决策树在构建子树的时候,使用之前子树构建结果后形成的残差作为输入数据构建下一个子树;然后最终预测的时候按照子树构建的顺序进行预测,并将预测结果相加

GBDT的算法原理

给定输入向量x和输出变量Y组成的若干训练样本(X1,Y1),(X1,Y1),......(Xn,Yn),目标是找到近似函数F(x)的损失函数L(Y,F(x))的损失值最小



L损失函数一般采用最小二乘损失函数或者绝对值损失函数

GBDT回归算法和分类算法的区别

GBDT scikit-learn相关

GBDT总结

GBDT的优点如下:

  • 可以处理连续值和离散值;
  • 在相对少的调参情况下,模型的预测值效果也不错;
  • 模型的鲁棒性比较强

GBDT的缺点如下:

  • 由于弱学习器之间存在关联关系,难以并行训练模型

Bagging、Boosting的区别

  • 1.样本选择:Bagging算法是有放回的随机采样,Boosting算法每一轮训练集不变,只是训练集中的每个样例在分类器中的权重发生变化,而权重根据上一轮的分类结果进行调整;
  • 2.样例权重:Bagging使用随机抽样,样例的权重相等;Boosting根据错误率不断地调整样例的权重值,错误率越大权重越大
  • 3.预测函数:Bagging所有预测模型的权重相等;Boosting算法对于误差小的分类器具有更大的权重.
  • 4.并行计算:Bagging算法可以并行生成各个基模型;Boosting理论上只能顺序生产,因为后一个模型需要前一个的结果;
  • 5.Bagging是减少模型的variance(方差),Boosting是减少模型的Bias(偏度)
  • 6.Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合.

Bagging对样本重采样,对每一轮的采样数据集都训练一个模型,最后取平均.由于样本集的相似性和使用的同种模型,因此各个模型具有相似的bias和variance;

XGBoost概述

XGBoost是GBDT算法的一种变种,是一种常用的有监督集成学习算法;是一种伸缩性强,便捷的可并行构建模型的Gradient Boosting算法.

XGBoost官网:http://xgboost.readthedocs.io;

XGBoost Github源码位置:https://github.com/dmlc/xgboost;

XGBoost支持开发语言:Python,R,Java,Scala,C++等

XGBoost公式推导

XGBoost 的学习策略

当树的结构确定的时候,我们可以得到最优的叶子点数以及对应的最小损失值,问题在于如何确定树结构

  • 暴力穷举所有可能得结构,选择损失值最小的(很难求解);
  • 贪心法,每次尝试选择一个分类点进行分裂,计算操作前后的增益,选择增益最大的方式进行分裂

决策树相关算法计算指标:

  • ID3算法:信息增益
  • C4.5算法:信息增益率
  • CART算法:Gini系数

XGBoost的学习策略

树节点分裂方法

精确算法:遍历所有特征的所有可能得分割点,计算gain值,选择最大的gain值对应的(feature value)进行分割

近似算法:对于每个特征,只考虑分位点,减少计算复杂度

树节点分裂方法

近似算法案例:三分位数

XGBoost的其他特性

XGBoost相关系数

参考链接:http://xgboost.readthedocs.io/en/latest/python/python_api.html#module- xgboost.sklearn

DART

Stacking

猜你喜欢

转载自blog.csdn.net/weixin_41797870/article/details/81937512
今日推荐