【数据集划分Strategy】
- 留出法
- 交叉验证法
- 自助法
留出法
在保证样本类别均衡(正类和负类)的情况下,将数据集划分为:训练集和测试集,一般常见的做法是将大约32~54的样本用于训练,剩余样本用于测试。举例:有1000个样本,其中500个正类,500个负类,使用“分层采样”方法,保证训练集和测试集中正类、负类样本数量1:1,若采用54的比例,则训练集有800个样本,其中正类、负类各400个,测试集,正类、负类各100个。
交叉验证法
先将数据集D划分为k个大小相似的互斥子集,即
D=D1∪D2∪⋯∪Dk,Di∩Dj=∅
每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k−1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最红返回的是这k个测试结果的均值。
自助法
给定包含m个样本的数据集D,我们对它进行采样产生数据集D´:每次随即从D中挑选一个样本,将其拷贝放入D´,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D´,这就是自助采样的结果。显然,D中
有一部分样本会在D´中多次出现,而领一部分样本不出现。样本在m次采样中始终不被采到的概率是(1−m1)m,取极限得到:
m→∞lim(1−m1)m↣e1≈0.368
之所以在这里介绍这些内容,是因为bagging集成算法中用到了自助采样法(自助法),所以才会有了这部分内容。
【Bagging】
Bagging是并行式集成学习算法最著名的代表。对数据集的划分,采用自助采样法,通过T次采样得到T个训练集和测试集,基于每个采样集(训练集)训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程,在对T个基学习器进行组合的时候,通常对分类任务使用简单投票法,对回归任务使用简单平均法。
算法流程图如下:
包外估计
自助采样法为Bagging算法提供了估计模型泛化性能的方法,即包外估计。由于每个基学习器只是用了初始训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对泛化性能进行“包外估计”。为此需记录每个基学习器所使用的训练样本,不妨设Dt表示ht实际使用的训练样本集,令Hoob(x)表示对样本x的包外预测,则仅考虑那些未使用x训练的基学习器在x上的预测,有
Hoob(x)=y∈γarg maxt=1∑TI(ht(x)=y)⋅I(x∉Dt)
则Bagging泛化误差的包外估计为:
ϵoob=∣D∣1(x,y)∈D∑I(Hoob(x)≠y)
从偏差-方差的角度看,Bagging主要关注降低方差,Boosting主要关注减低偏差。
【随机森林】
随机森林是Bagging的一个扩展变体,简称RF。是在Bagging的基础之上,进一步引入了随机属性选择,即在决策树的训练过程中,引入了随机属性选择,增加了基学习器的多样性。
具体做法如下:传统决策树在选择划分属性时是在当前节点的属性集合(假定有d个属性)中选择一个最优属性;而RF,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分;一般情况下,推荐值k=log2d。
具体的代码实现,可以使用scikit-learn工具进行实现,代码可以参考【机器学习】决策树——决策树的两种实现方式(Python版)
【集成学习——结合策略】
在集成学习中,对于训练出来的基学习器我们一般采用以下三种方式进行组合:平均法,投票法,学习法(Stacking典型代表)
这部分内容,请参考:
【机器学习-西瓜书】八、集成学习:结合策略;多样性;总结
机器学习 集成学习的结合策略之stacking学习法



