Ensemble Learning——随机森林\极限森林\梯度提升树\GBDT


随机森林和决策森林都是数据集成学习(Ensemble Learning)中的算法,而在集成学习中,主要分为 bagging 算法和 boosting 算法。

本文部分原理及实例来自《统计学习方法》By 李航

Bagging (套袋法)

Bagging的算法过程如下:
1.从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
2.对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
3.对于分类问题:由投票表决产生分类结果;
4.对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

Boosting(提升法)

Boosting的算法过程如下:
1.对于训练集中的每个样本建立权值 w i wi wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
2.进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

Bagging/Boosting的主要区别

1.样本选择:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
2.样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大。
3.预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大。
4.并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提升树

3)Gradient Boosting + 决策树 = GBDT

1.随机森林

随机森林里的随机包含的意思是:
样本随机
特征随机
参数随机
模型随机(ID3 ,C4.5)

随机森林的构建过程大致如下:
1.从原始训练集中使用Bootstraping方法随机有放回采样选出N个样本,共进行K次采样,生成K个训练集
2.对于K个训练集,我们分别训练K个决策树模型
3.对于单个决策树模型,假设训练样本特征的个数为m,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂;
4.每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝
5.将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

算法 API

sklearn.ensemble.RandomForestClassifier(n_estimators=100, criterion='gini', max_depth=None, min_samples_split=2, )

2.极限森林

极限树/极端随机树里的随机包含的意思是:
特征随机
参数随机
模型随机(ID3 ,C4.5)
分裂随机

极限树与随机森林的主要区别:

  • RandomForest应用的是Bagging模型;ExtraTree使用的所有的样本,只是特征是随机选取的,因为分裂是随机的,所以在某种程度上比随机森林得到的结果更加好;

  • 随机森林是在一个随机子集内得到最佳分叉属性;而ExtraTree是完全随机的得到分叉值,从而实现对决策树进行分叉的。

算法 API

sklearn.ensemble.ExtraTreesClassifier(n_estimators=100, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1)

3.Adaboost 算法

基本流程

先假设给定一个二分类的训练数据集:
T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T=(x1,y1),(x2,y2),...,(xN,yN)

  1. 生成一个初始化的训练集数据均匀分布的权值: D 1 = ( w 11 , . . . . , w 1 i , . . . . , w 1 N ) D_1=(w_{11},....,w_{1i},....,w_{1N} ) D1=(w11,....,w1i,....,w1N) w 1 i = 1 N w_{1i}= \frac{1}{N} w1i=N1 其中 i = 1 , 2 , 3... , N i=1,2,3...,N i=1,2,3...,N
  2. 对于 m = 1 , 2 , 3... , M m=1,2,3...,M m=1,2,3...,M
    a)使用第m个权值分布 D m D_m Dm的训练数据集学习,得到基分类器: G m ( x ) : χ → { − 1 , + 1 } G_m(x): \chi \rightarrow \lbrace-1,+1\rbrace Gm(x):χ{ 1,+1}
    b)计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率: e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^{N} {P(G_m(x_i)\neq y_i)}=\sum_{i=1}^{N} {w_{mi}I(G_m(x_i)\neq y_i)} em=i=1NP(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)
    c)计算 G m ( x ) G_m(x) Gm(x)的系数
    α = 1 2 l o g 1 − e m e m \alpha=\frac{1}{2}log\frac{1-e_m}{e_m} α=21logem1em
    d)更新训练数据集的权值分布: D m + 1 = ( w m + 1 , 1 , . . . . , w m + 1 , i , . . . . , w m + 1 , N ) D_{m+1}=(w_{m+1,1},....,w_{m+1,i},....,w_{m+1,N} ) Dm+1=(wm+1,1,....,wm+1,i,...
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值