TASK1__随机森林算法梳理

集成学习
集成学习是一种通过构建并结合多个学习器来完成学习任务的方法。要获得好的集成,个体学习器应“好而不同”。其中个体学习器的性能应该至少不差于弱学习器,同时不同的学习器之间应该具有差异。
弱学习器常指泛化性能略优于随机猜测的学习器。例如在二分类问题上精确度略高于百分之五十的分类器。
个体学习器
由一个现有的学习算法从训练数据中产生的学习器。
Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制是:先从初始训练集训练出一个基,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本在后续受到更多的关注,然后基于调整后的样本分布训练下一个基学习器;如此重复进行,直至基学习器数目达到指定的值T,最终将这T个基学习器进行加权结合。
AdaBoosting 算法是Boosting算法族中最著名的代表,设f为真实函数,yi∈{-1,+1}。AdaBoosting算法将最终学习的模型H(x)用多个学习器的线性组合来表示
TASK1__随机森林算法梳理
AdaBoosting算法的具体过程如图所示
TASK1__随机森林算法梳理
AdaBoosting是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,然后把这些分类器集成起来,就构成了一个更强大的分类器。
在训练第一个基学习器h1的时候,直接将基学习算法应用于初始数据,然后迭代地生成αt以及下一步地分布Dt+1,从而迭代地生成新的基学习器,最后将基学习器进行线性组合。
Boosting算法要求基学习器能够针对特定的数据分布进行学习,这可以通过“重赋权法”实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋一个权重。对于无法接受带权的基学习算法,可以通过“重采样法”进行处理,即在每一轮的学习中,根据样本分布对训练集进行重新采样,再用重采样得到的样本对基学习器进行训练。
Bagging
一种基于自助采样法的方法,在给定的m个样本的数据集中,我们采用有放回的采样方法,使得每次采样面对的样本集合相同,这样,经过m次随机采样操作,我们可以得到含有m个样本的采样集,并且初始的训练集中仍有36.8%左右的数据不在采样集合中,因此可以用作测试集。我们用这种方法进行T次采样在进行训练,就可以得到T个不同的学习器,然后再将这些基学习器进行结合。
TASK1__随机森林算法梳理
学习器的结合
学习器结合的原因:通常学习任务的假设空间一般很大,可能会存在多个假设在训练集上能达到同等的性能,此时如果使用单一的学习器可能会使得泛化性能比较差,因此结合多个学习器可以减小这一风险;从计算的方面来看,学习算法在求最值得时候往往会陷入局部极小,因此通过多次运行之后的结合可以降低陷入局部极小值的风险;从假设空间方面看,因为假设空间可能并不包含真实假设,因此通过结合多个学习器,可能使得假设空间变大,使得真实假设被包含在内。
结合策略:
1、 平均法
简单平均法
TASK1__随机森林算法梳理
加权平均法
TASK1__随机森林算法梳理
2、 投票法
对于分类任务来说,学习器hi将从类别标记集合中预测一个标记,最常用的就是投票法。
绝对多数投票法是某标记得票超过半数才输出标记,否则拒绝标记:
TASK1__随机森林算法梳理
相对多数投票法选择得票最多的标记作为输出:
TASK1__随机森林算法梳理
加权投票法:
TASK1__随机森林算法梳理
3、 学习法
学习法的典型代表是Stacking,这个方法先从初始数据集训练出一个初始的学习器,然后“生成”一个新的数据集用于训练次级学习器。

TASK1__随机森林算法梳理
先用初始数据集训练出T个初级学习器,然后把这些初始学习器的输出当作样本的输入特征,而初试样本的标记仍然是样本的标记。
若是直接用出基学习器的训集来产生次级训练集,那么过拟合的风险会很大;因此一般是通过使用交叉验证或者留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。

随机森林思想
随机森林是Bagging的一个扩展变体,在Bagging的基础上做了修改。
(1)从样本中用BootStrap 采样了n个样本。
(2)从所有属性中随机选择K个属性,选择最佳分割属性作为结点建立决策树。
(3)重复上边2步m次,即建立m棵决策树。
(4)这m棵CART树形成随机森林,通过投票表决结果属于哪一类。
随机森林的推广
1、 extra trees
extra tree是随机森林(RF)的一个变种,原理几乎和RF一模一样,仅有的区别:
1) RF中每个决策树的训练集是用随机采样的方式得到的,但是在extra trees中,每个决策树都是使用的原始数据集。
2) 在选定划分特征之后,RF的决策树会基于基尼系数,均方差之类的原则,但是在extra trees中,他会随机选择一个特征来划分决策树。
2、 Totally Random Trees Embedding
使用RF产生决策树之后,将决策树的结果映射到高维空间中继续使用监督学习的各类分类算法。
3、 Isolation Forest
是一种异常点检验的方法。
随机森林的优缺点
优点:
训练可以高度并行化,这对于提高训练速度很有优势;
由于可以随机地选择特征,这样在样本特征维度很高的时候,仍然能高效的训练模型;
具有极高的准确率;
随机性的引入,使其不容易造成过拟合,也有较强的抗噪能力;
不论是离散型数据还是连续型数据都可以处理,数据集不需要进行规范化。
缺点:
使用大量的树使得随机森林虽然训练速度很快,但是预测速度不快,这对于需要实时预测的情况不适用。
当随机森林中的决策树个数很多的时候,训练需要的时间和空间都很大。

随机森林调参
RF需要调参的参数包括两方面,第一个部分是Bagging框架的参数,第二部分是CART决策树的参数。
RF框架参数:
1) n_estimators:也就是弱学习器的最大迭代次数,或者说是弱学习器的个数。太大容易过拟合,太小容易欠拟合。一般来说取100左右可以达到可接受的性能和误差率。
2) obb_score:即是否采用袋外样本来评估模型的好坏,因为袋外分数反映了一个模型拟合之后的泛化能力。
3) criterion:即CART树做划分时,对特征的评判标准。分类RF对应的CART分类树默认是基尼系数gini,另一个可选择的标准是信息增益。回归RF对应的CART回归树默认是均方差mse,另一个可以选择的标准是绝对值差mae。一般来说选择默认的标准就已经很好的。
RF决策树参数:
1) 最大特征数max_features
2) 决策树的最大深度max_depth:一般数据少或者特征少的时候可以不管这个值,但是如果模型样本量多,推荐限制这个深度。
3) 内部节点再划分所需要的最小样本数min_samples_split:如果某个节点的样本数少于这个值就不会再继续尝试选择最优特征来进行划分,如果样本量不够大,一般不需要管这个值。
4) 叶子节点最少样本数min_sample_leaf:如果叶子节点的样本数小于这个数,那么该叶子节点就会被剪掉。
5) 叶子节点最小的样本权重和min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。
6) 最大叶子节点数max_leaf_nodes: 通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。
7) 节点划分最小不纯度min_impurity_split: 这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。

应用场景
可以用作分类,同时这种思想可以用在一些回归的模型上进行一些预测。