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