随机森林
目录
- 预备知识
- 随机森林
- 随机森林的推广
- 随机森林小结
0. 预备知识
随机森林(Random Forest, 简称RF)[Breiman, 2001a]是Bagging的一个扩展变体。随机森林在以决策树为基学习器构建Bagging集成的基础上,进一步在基决策树的训练过程中引入了随机属性选择。
要理解随机森林首先要了解一下两个内容:
- 决策树
- 集成算法-Bagging
在前面的学习笔记中已经详细的学习过决策树和Bagging的基本原理。本篇笔记只是简要的描述一下Bagging的算法流程,如下
输入:
训练集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);
基学习算法\(\mathfrak{L}\);
训练轮数\(T\)。
过程:
- 对于\(t=1,2,\cdots,T\)
- 对训练集进行第\(t\)次随机采样,共采集\(m\)次,得到包含\(m\)个样本的采样集\(D_t\)
- 用采样集\(D_t\)训练第\(t\)个弱学习器\(G_t(x)\)
- 如果是分类算法预测,则\(T\)个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,\(T\)个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出
输出:
最终的强分类器\(f(x)\)。
1. 随机森林
理解了bagging算法,随机森林就好理解了。前面说过随机森林是Bagging的扩展变体,我们现在来具体的看一看究竟是怎样的一个扩展变体。
具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有\(d\)个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含\(k\)个属性的子集,然后再从这个子集 中选择一个最优属性用于划分。
这里的参数\(k\)控制了随机性的引入程度:若令\(k = d\),则基决策树的构建与传统决策树相同;若令\(k = 1\),则是随机选择一个属性用于划分; 一般情况下,推荐值\(k = log_2d\) [Breiman, 2001a]。在实际案例中,通常也会通过交叉验证调参获取一个合适的\(k\)的值。
随机森林简单、容易实现、计算开销小,令人惊奇的是,它在很多现实任务中展现出强大的性能,被誉为"代表集成学习技术水平的方法"可以看出,随机森林对Bagging只做了小改动,但是与Bagging中基学习器的"多样性"仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。
随机森林的收敛性与Bagging相似。随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时这很容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低。然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。值得一提的是,随机森林的训练效率常优于Bagging ,因为在个体决策树的构建过程中,Bagging使用的是" 确定型"决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的"随机型"决策树则只需考察一个属性子集。
2. 随机森林的推广
由于RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。下面对于这些RF家族的算法中有代表性的做一个总结。
2.1 extra trees
extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
1)对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
2)在选定了划分特征后,RF的决策树会基于基尼系数,平方误差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。
2.2 Totally Random Trees Embedding
Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
TRTE在数据转化的过程也使用了类似于RF的方法,建立\(T\)个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在\(T\)个决策树中叶子结点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子结点,某个数据特征\(x\)划分到第一个决策树的第2个叶子结点,第二个决策树的第3个叶子结点,第三个决策树的第5个叶子结点。则\(x\)映射后的特征编码为\((0,1,0,0,0, \quad 0,0,1,0,0, \quad 0,0,0,0,1)\), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。
2.3 Isolation Forest
Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
对于在\(T\)个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数,为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
对于每一个决策树的建立,IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
对于异常点的判断,则是将测试样本点\(x\)拟合到\(T\)颗决策树。计算在每棵决策树上该样本的叶子节点的深度\(h_t(x)\)。从而可以计算出平均高度\(h(x)\)。此时我们用下面的公式计算样本点\(x\)的异常概率:
\[s(x,m)=2^{−\frac{h(x)}{c(m)}} \]
其中,\(m\)为样本个数。\(c(m)\)的表达式为:
\[c(m)=2ln(m−1)+ \xi − 2 \cfrac{m-1}{m} \]
其中,\(\xi\)为欧拉常数,\(s(x,m)\)的取值范围是\([0,1]\),取值越接近于\(1\),则是异常点的概率也越大。
3. 随机森林小结
RF的算法原理也终于学完了,作为一个可以高度并行化的算法,RF在大数据时候大有可为。这里也对常规的随机森林算法的优缺点做一个总结。
RF的主要优点有:
- 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
- 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
- 在训练后,可以给出各个特征对于输出的重要性
- 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
- 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
- 对部分特征缺失不敏感。
RF的主要缺点有:
- 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
- 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。