04-10 Bagging和随机森林

Bagging算法和随机森林

在这里插入图片描述

  集成学习主要分成两个流派,其中一个是Boosting算法,另一个则是本文要讲的Bagging算法,Bagging算法
算法的弱学习器是没有依赖关系的,因此弱学习之间可以并行拟合。

  Bagging算法中最著名的算法是随机森林,由于随机森林的不容易过拟合性以及简便性,可以说是和梯度提升树同名的算法。

Bagging算法和随机森林学习目标

  1. Bagging算法原理
  2. Bagging算法流程
  3. 随机森林和Bagging算法区别
  4. 随机森林流程

Bagging算法原理回顾

  Bagging算法的弱学习器的训练集是通过随机采样得到的。通过 T T T次的随机采样,我们可以通过自主采样法(bootstrap sampling)得到 T T T个采样集,然后对于这 T T T个采样集独立的训练出 T T T个弱学习器,之后我们通过某种结合策略将这 T T T个弱学习器构造成一个强学习器。

  在一个有 m m m个样本的训练数据中随机采样,一个样本每次被采样的概率为 1 m {\frac{1}{m}} m1,不被采集的概率为 1 − 1 m 1-{\frac{1}{m}} 1m1,如果 m m m次采样都没有采中的概率为 ( 1 − 1 m ) m (1-{\frac{1}{m}})^m (1m1)m,当 m → ∞ m\rightarrow{\infty} m ( 1 − 1 m ) m → 1 e ≈ 0.368 (1-{\frac{1}{m}})^m\rightarrow{\frac{1}{e}}\approx0.368 (1m1)me10.368,即在Bagging算法的随机采样中,大约有 36.8 36.8% 36.8的数据没有被采中。

  Bagging算法的结合策略,对于分类问题,一般使用相对多数投票法,即票数最多的类别即为样本预测类别;对于回归问题,一般使用简单平均法,即对 T T T个弱学习的输出做算术平均得到样本预测值。

在这里插入图片描述

Bagging算法流程

输入

   m m m个样本 n n n个特征的训练数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} D={(x1,y1),(x2,y2),,(xm,ym)};弱学习器迭代次数为 T T T

输出

  最终强学习器 f ( x ) f(x) f(x)

流程

  1. 对训练集进行第 t ( t = 1 , 2 , ⋯   , T ) t\quad(t=1,2,\cdots,T) t(t=1,2,,T)次随机采样,共采集 m m m次,得到有 m m m个样本的采样集 D t D_t Dt
  2. 用采样集 D t D_t Dt训练第 t t t个弱学习器 G t ( x ) G_t(x) Gt(x)
  3. 对于分类问题,使用相对多数投票法预测分类结果;对于回归问题,使用简单平均法得到预测值

随机森林详解

在这里插入图片描述

随机森林和Bagging算法区别

  随机森林(random forest,RF)基于Bagging算法的思想,做了一定的改进,即对特征进行了选择。

  RF使用CART决策树作为弱学习器,但是RF对普通的CART决策树做了改进,普通的CART树选择最优特征作为决策树划分的条件;RF的CART决策树则是在训练数据的 n n n个特征中随机选择 n s u b n_{sub} nsub特征,一般情况下 n s u b < n n_{sub}<n nsub<n,然后在这 n s u b n_{sub} nsub个特征中选择最优特征作为决策树划分的条件。

  如果 n s u b = n n_{sub}=n nsub=n,则RF的决策树为普通的决策树; n s u b n_{sub} nsub越小,则模型鲁棒性越好,模型方差也会减小,但模型对训练集的拟合程度会变差,反之,模型的偏差会变小,模型对训练集的泛化能力会变差。

随机森林拓展

  RF在实际应用中不仅能解决分类和回归问题,还可以用于特征转换、异常点检测等。

Extra Trees

  Extra Trees和RF的区别有以下两点:

  1. 对于每个决策树的训练集,RF采用的随机采样集;对于extra trees,每个决策树采用原始数据集
  2. RF会基于基尼系数、信息熵的方式,选择一个最优的特征值划分;extra teees则会随机选择一个特征值划分特征数

  以上两点导致extra trees生成的随机森林的决策树规模一般会大于RF。即可以一定程度的减小模型的方差,增强模型的泛化能力。

# 使用ExtraTree判断特征重要性程度
from sklearn.datasets import make_friedman1
from sklearn.ensemble import ExtraTreesRegressor

X, y = make_friedman1(n_samples=100, n_features=10, random_state=0)

# 通过ExtraTreesRegressor模型获取每个特征的重要性
et = ExtraTreesRegressor(n_estimators=10)
et = et.fit(X, y)
print('10个特征各自的重要性:{}'.format(et.feature_importances_))
10个特征各自的重要性:[0.11488041 0.12557425 0.08477273 0.45483849 0.09753123 0.01384401
 0.0364967  0.0256125  0.01965904 0.02679065]

Totally Random Trees Embedding

   Totally Random Trees Embedding(TRTE)是一种无监督学习的数据转换方式,它可以将低维的数据集映射到高维,在支持向量机中使用了核技巧将低维的数据映射到高维,TRTE提供了不同于核技巧的方法。

  TRTE首先会构成一个类似RF的随机森林模型,模型定下来后模型中 T T T个决策树的叶子节点位置也会被确定。

  现在假设我们有3棵决策树,每个决策树有4个叶子节点,某个数据特征 x x x划分到第1个决策树的第1个叶子节点,第2棵决策树的第2个节点,第3棵决策树的第4个节点,则 x x x映射后的特征编码为 ( 1 , 0 , 0 , 0 0 , 1 , 0 , 0 0 , 0 , 0 , 1 ) (1,0,0,0\quad0,1,0,0\quad0,0,0,1) (1,0,0,00,1,0,00,0,0,1),由此既可以得到12维的高维特征。

Isolation Forest

  Isolation Forest(IForest)可以检测异常点。

  IForest类似于RF,但在随机采样的时候,IForest随机采样的数量并不是 m m m个,而是远远小于训练集个数,因为IForest的作用是检测异常点,如果采样过多正确样本会掩盖掉异常点。

  在划分特征的时候,IForest对划分特征随机选择一个划分阈值,并随机选择一个特征划分决策树。

  由于IForest的样本数过少,IForest也会选择一个较小的最大决策树深度控制决策树的深度。

  将测试样本 x x x拟合到 T T T棵决策树,计算每颗决策树上该样本的叶子节点的深度 h t ( x ) h_t(x) ht(x),从而计算出平均高度,则样本点 x x x的异常概率为
s ( x , m ) = 2 − h ( x ) c ( m ) s(x,m) = 2^{-{\frac{h(x)}{c(m)}}} s(x,m)=2c(m)h(x)
其中 m m m为样本个数, c ( m ) c(m) c(m)的表达式为
c ( m ) = 2 ln ⁡ ( m − 1 ) + ξ − 2 m − 1 m c(m) = 2\ln(m-1)+\xi-2{\frac{m-1}{m}} c(m)=2ln(m1)+ξ2mm1
其中 ξ \xi ξ为欧拉常数, s ( x , m ) s(x,m) s(x,m)的取值范围是 [ 0 , 1 ] [0,1] [0,1],取值越接近1,测试样本点是异常点的概率越大。

随机森林流程

输入

   m m m个样本 n n n个特征的训练数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} D={(x1,y1),(x2,y2),,(xm,ym)};弱学习器迭代次数为 T T T

输出

  最终强学习器 f ( x ) f(x) f(x)

流程

  1. 对训练集进行第 t ( t = 1 , 2 , ⋯   , T ) t\quad(t=1,2,\cdots,T) t(t=1,2,,T)次随机采样,共采集 m m m次,得到有 m m m个样本的采样集 D t D_t Dt
  2. 用采样集 D t D_t Dt训练第 t t t个决策树模型 G t ( x ) G_t(x) Gt(x),在训练决策树模型的时候,从 n n n个特征中随机选择 n s u b n_{sub} nsub个特征,然后从 n s u b n_{sub} nsub个特征中选择最优的特征作为划分决策树的条件。
  3. 对于分类问题,使用相对多数投票法预测分类结果;对于回归问题,使用简单平均法得到预测值

随机森林优缺点

优点

  1. 由于弱学习器之间不存在依赖关系,所以可以并行训练模型,这对于大数据非常有优势
  2. 既可以解决回归问题又可以解决分类问题,灵活
  3. 由于在生成模型的时候,可以自由选择特征的划分,可以一定程度解决特征维度较高的问题
  4. RF相当于AdaBoost和GBDT,简单,看数学公式推导量就知道了
  5. 由多个不存在依赖关系的弱学习器结合而成,所以对部分特征缺失不敏感

缺点

  1. 由于决策树模型对特征进行了选择,因此取值划分较多的特征,会影响RF模型拟合的效果

小结

  集成学习到这也算是告一段落了,相信大家对Boosting和Bagging算法有了很清晰的了解,对于Boosting中的AdaBoost和GBDT,由于逻辑较为复杂,可以多看一看;对于Bagging中的随机森林,随机森林本身并不是很难理解,只要能够很自如的运用随机森林的一些拓展算法即可。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值