继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【机器学习】集成学习——Bagging与随机森林

Peak_One
关注TA
已关注
手记 25
粉丝 7092
获赞 168

【数据集划分Strategy】

  • 留出法
  • 交叉验证法
  • 自助法

留出法

在保证样本类别均衡(正类和负类)的情况下,将数据集划分为:训练集测试集,一般常见的做法是将大约23\frac{2}{3}~45\frac{4}{5}的样本用于训练,剩余样本用于测试。举例:有1000个样本,其中500个正类,500个负类,使用“分层采样”方法,保证训练集和测试集中正类、负类样本数量1:1,若采用45\frac{4}{5}的比例,则训练集有800个样本,其中正类、负类各400个,测试集,正类、负类各100个。

交叉验证法

先将数据集DD划分为kk个大小相似的互斥子集,即
D=D1D2Dk,DiDj=D=D_1 \cup D_2 \cup \cdots \cup D_k, D_i \cap D_j=\emptyset
每个子集DiD_i都尽可能保持数据分布的一致性,即从DD中通过分层采样得到。然后,每次用k1k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得kk组训练/测试集,从而可进行kk次训练和测试,最红返回的是这kk个测试结果的均值。

自助法

给定包含mm个样本的数据集DD,我们对它进行采样产生数据集D´\acute{D}:每次随即从DD中挑选一个样本,将其拷贝放入D´\acute{D},然后再将该样本放回初始数据集DD中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行mm次后,我们就得到了包含mm个样本的数据集D´\acute{D},这就是自助采样的结果。显然,DD
有一部分样本会在D´\acute{D}中多次出现,而领一部分样本不出现。样本在mm次采样中始终不被采到的概率是(11m)m(1-\frac{1}{m})^m,取极限得到:
limm(11m)m1e0.368\lim_{m\to \infty}\left(1- \frac{1}{m}\right)^m \rightarrowtail \frac{1}{e} \thickapprox 0.368
之所以在这里介绍这些内容,是因为bagging集成算法中用到了自助采样法(自助法),所以才会有了这部分内容。

【Bagging】

Bagging是并行式集成学习算法最著名的代表。对数据集的划分,采用自助采样法,通过TT次采样得到TT个训练集和测试集,基于每个采样集(训练集)训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程,在对TT个基学习器进行组合的时候,通常对分类任务使用简单投票法,对回归任务使用简单平均法。
算法流程图如下:
图片描述

包外估计

自助采样法为Bagging算法提供了估计模型泛化性能的方法,即包外估计。由于每个基学习器只是用了初始训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对泛化性能进行“包外估计”。为此需记录每个基学习器所使用的训练样本,不妨设DtD_t表示hth_t实际使用的训练样本集,令Hoob(x)H^{oob}(x)表示对样本xx的包外预测,则仅考虑那些未使用xx训练的基学习器在xx上的预测,有
Hoob(x)=arg maxyγt=1TI(ht(x)=y)I(xDt)H^{oob}(x)=\underset{y\in \gamma}{arg\ max}\sum_{t=1}^{T}I(h_t(x)=y) \cdot I(x \notin D_t)
则Bagging泛化误差的包外估计为:
ϵoob=1D(x,y)DI(Hoob(x)y)\epsilon^{oob}=\frac{1}{|D|}\sum_{(x,y)\in D}I(H^{oob}(x)\neq y)
从偏差-方差的角度看,Bagging主要关注降低方差,Boosting主要关注减低偏差。

【随机森林】

随机森林是Bagging的一个扩展变体,简称RF。是在Bagging的基础之上,进一步引入了随机属性选择,即在决策树的训练过程中,引入了随机属性选择,增加了基学习器的多样性。
具体做法如下:传统决策树在选择划分属性时是在当前节点的属性集合(假定有dd个属性)中选择一个最优属性;而RF,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含kk个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数kk控制了随机性的引入程度:若k=dk=d,则基决策树的构建与传统决策树相同;若令k=1k=1,则是随机选择一个属性用于划分;一般情况下,推荐值k=log2dk=\log_2d
具体的代码实现,可以使用scikit-learn工具进行实现,代码可以参考【机器学习】决策树——决策树的两种实现方式(Python版)

【集成学习——结合策略】

在集成学习中,对于训练出来的基学习器我们一般采用以下三种方式进行组合:平均法,投票法,学习法(Stacking典型代表)
这部分内容,请参考:
【机器学习-西瓜书】八、集成学习:结合策略;多样性;总结
机器学习 集成学习的结合策略之stacking学习法

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP