前文详细介绍了利用决策树模型解决分类和回归问题的基本思路。决策树作为一种被广泛采用的机器学习模型,不仅因为其在可解释性、可视化和特征兼容性等方面的优势外,更因为其是一种被各种集成算法所广泛采用的基学习器。
那么,为什么决策树在集成学习中在受到青睐呢?除开前文提到的优势,可能还包括以下因素:
(1)单棵树的能力具有较大弹性。通过简单的设置树深、叶子节点样本数等参数,可以保证单棵树在强、弱学习器间调节,从而满足不同深度学习框架的需求。
(2)模型的随机性较大。决策树本身对样本特征值的变化较为敏感,可以很容易地创造模型的随机性,从而增强模型的泛化能力。
本文就介绍将决策树用于bagging框架的一种集成算法:随机森林。
一、随机森林算法详解
随机森林,顾名思义,就是用一系列具有随机因素的决策树作为基学习器,联合构成一片森林来对结果进行预测的模型。其随机性主要体现在:
(1)样本采样的随机性。随机森林在每棵子决策树的训练过程中,沿用了bagging框架的有放回式采样(bootstrap)方法。
(2)特征选择的随机性。单纯的决策树默认会选择所有的特征进行信息增益的计算。而在随机森林算法中,每棵子决策树的每一次分裂过程前,都会从全量特征中随机选择指定数目的特征作为候选特征。
(3)特征分裂点的随机性。单纯的决策树在搜索某个特征的最佳分裂点时,会穷尽其所有可能的分类组合(离散型变量)或插值中点(连续性变量)计算信息增益。而在随机森林算法中,每棵子决策树分裂时的信息增益计算,可以选择在随机生成的若干组备选分裂点进行选择。
随机森林通过创造以上的随机性,保证了各子决策树的差异性,从而使得组合后的总模型方差更小,从而具备更强的泛化能力。
随机森林的各子决策树间并无关联,所以在实践中可以并行计算。完整的算法流程如下:
(1)预设指定数目的随机森林数量,进行步骤(2)中的子决策树的并行生成;
(2)对于每棵子决策树:采用bootstrap选取若干个样本进行训练,在每次分叉时,对随机选取指定数目的特征进行遴选(视情采用随机分裂点)。
(3)最终模型即为各子决策树的投票结果(对于分类问题)或平均值结果(对于回归问题)。
二、随机森林的推广
鉴于随机森林算法优秀的性质,其还存在各种变种算法,用于解决各类问题。
2.1 Extra trees
其与随机森林非常类似,仅有的两点变化为:
(1)Extra tree与 普通决策树的变化。Extra tree即是Extra trees的基学习器,其可视为高度随机化的普通决策树。其随机性体现在:特征在分裂时会采用随机分裂的形式,而非全局最优搜索(如前文所述,实际上在一些随机森林的实现算法里已经考虑了特征的随机分裂)
(2)bagging框架的变化。在Extra trees中,一般不再采用bootstrap采样,而使用全量的原始训练数据。
相较于随机森林,Extra trees的每棵子决策树由于未采用贪婪的分裂方式,所以其规模往往更大,从而使得Extra trees的泛化能力可能有所提高。
2.2 Isolation Forest
这是将随机森林应用于异常点检测的一种方法。其核心思想是:通过随机森林的一系列子决策树对数据集进行划分,计算每个样本从根节点到所在叶子节点的平均高度,平均高度的越低的样本越有可能是异常值。
上述思想为什么合理呢?简单而言:异常值意味着具备该值的样本量很少,通过随机分裂的方式,其更容易检出。
Isolation Forest相较于随机森林有如下明显区别:
(1)每棵子决策树需要的采样数远小于随机森林中的子树。因为Isolation Forest并非寻找样本中的潜在映射关系,少量的样本也能保证异常点的检出。
(2)树的分裂并不依循于信息增益,而是完全的随机模式。既在每棵树的每一次分枝时,随机选择一个特征,然后随机设定一个分裂点,对样本点进行划分。
(3)每棵树的深度相对随机森林更浅。
在实际的Isolation Forest,往往会对平均深度进行归一化处理,从而更方便判断。
2.3 Totally Random Trees Embedding
Totally Random Trees Embedding是一种基于随机森林的数据特征提取算法。
因为随机森林的每棵树具有明显的随机性和差异性,所以可以将训练得到的每棵树视为一个独立的one-hot编码器,编码器的长度为子节点的个数,除了其所在的第 i i i个节点编码为1外,该子树其他位置处的编码为0。最后,将所有子决策树的编码串联起来,即得到该样本的最终特征编码。
随机深林的叶子节点总数一般远大于数据的原始特征数,所以Totally Random Trees Embedding可视为一种原始低维特征空间向高维特征空间的映射,且其结果具有高稀疏性。