文章目录
一、算法概念
什么是随机森林?
随机森林是一种常用的机器学习算法,它将多个决策树的输出组合起来以得出一个结果,可以处理分类和回归问题。
虽然决策树是常见的监督学习算法,但它们容易出现偏差和过度拟合等问题。然而,当多棵决策树在随机森林算法中形成一个整体时,它们会预测更准确的结果,尤其是当各个树彼此不相关时。
集成学习(ensemble learning)是一种通过组合多个基学习器(模型)来提高整体预测性能的方法。它通过集成多个学习器形成一个强学习器,从而提高模型的泛化能力和准确性。集成学习的核心思想是利用不同模型的组合弥补单一模型的缺点。集成学习可以分为两大类,一类是序列化方法:个体学习器之间存在强依赖关系,必须串行生成,例如boosting;一类是并行化方法:个体学习器之间不存在强依赖关系、可以同时生成,例如bagging(也称为bootstrap聚合)。bagging 方法中,会替换地选择训练集中的随机数据样本,这意味着可以多次选择单个数据点。生成多个数据样本后,将独立训练这些模型,并且根据任务类型(即回归或分类),这些预测的平均值或大多数会得出更准确的估计值。这种方法通常用于减少嘈杂数据集中的方差。
随机森林算法是bagging方法的扩展,因为它同时利用bagging和特征随机性来创建不相关的决策树森林。特征随机性也称为特征bagging或“随机子空间方法”(链接位于ibm.com之外),可生成随机的特征子集,从而确保决策树之间的相关性较低。这是决策树和随机森林之间的一个关键区别。决策树会考虑所有可能的特征分割,而随机森林只会选择这些特征的一个子集,通过考虑数据中的所有潜在变异性,我们可以降低过度拟合、偏差和整体方差的风险,从而得到更精确的预测。算法如下:
二、算法原理
随机森林算法有三个主要超参数,需要在训练之前设置。
- 节点大小:每棵树分裂到叶节点之前的最小样本数,控制树的深度。
- 树的数量:随机森林中包含的决策树的数量,更多的树通常能够提高模型的稳定性和准确性。
- 采样的特征数量:每次分裂时随机选择的特征数量,这决定了每棵树的多样性。
随机森林由多棵决策树组成,每棵树通过在训练集中有放回地抽取样本来构建。由于抽取样本时存在放回的情况,同一个样本可能会被多次选中(称为引导样本)。在每次抽取时,大约三分之一的数据不会被选为训练样本,这部分数据被称为袋外样本(OOB)。袋外样本可以用于评估模型的性能,而不需要额外划分测试集,随机森林的误差近似为训练过程中的袋外误差。
每棵树都是基于不同的引导样本构建的,因此每个引导样本会随机遗漏大约三分之一的观察值。这些遗漏的观察值即为该树的OOB样本。寻找能降低OOB误差的模型参数是模型选择和参数调整的关键环节之一。在随机森林算法中,预测变量子集的大小决定了树的最终深度,因此是模型调优过程中需要调整的重要参数。随机森林在回归和分类任务中的预测方式有所不同:
- 回归任务:通过对所有决策树的预测结果进行平均,得到最终的预测值。
- 分类任务:通过多数投票法,选择所有决策树中预测次数最多的类别作为最终结果。
最后,随机森林通过袋外样本来评估模型性能,这相当于一种交叉验证,不需要额外的数据集,从而更高效地利用了数据。
随机森林是基于决策树的集成,每棵树都取决于随机变量的集合。对于表示实值输入或预测变量的p维随机向量:
其中,随机变量Y表示要预测的目标变量,也叫响应变量。它可以是连续的(比如房价、气温)或者离散的(比如分类任务中的类别标签)。我们假设未知的联合分布。目标是找到一个预测函数f(X)来预测Y。该预测函数由损失函数确定,并定义为最小化损失的期望值:
随机森林通过多个决策树的集成预测,目的是通过最小化某个损失函数来寻找最优的预测函数f(X),使其能够对未知的目标变量Y进行准确预测。
(一)定义
正如本节前面提到的,随机森林使用树 ( h j ( X , Θ j ) ) ( h_j(X, \Theta_j) ) (hj(X,Θj)) 作为基础学习器。对于训练数据 D = { ( x 1 , y 1 ) , … , ( x N , y N ) } D = \{(x_1, y_1), \dots , (x_N, y_N)\} D={(x1,y1),…,(xN,yN)},其中 x i = ( x i , 1 , … , x i , p ) T x_i = (x_{i,1}, \dots , x_{i,p})^T xi=(xi,1,…,xi,p)T 表示第 p p p个预测变量, y i y_i yi</