随机森林(RF)

随机森林是一种集成学习方法,通过结合多个决策树以提升预测性能。本文详细介绍了随机森林的概念,包括个体学习器的多样性增强策略(如数据样本扰动、输入属性扰动、输出表示扰动和算法参数扰动)、集成策略(平均法、投票法和学习法),以及随机森林的优缺点。文章还讨论了Boosting和Bagging的区别,以及随机森林的推广如ExtraTrees、Totally Random Tree Embedding (TRTE) 和 Isolation Forest (IForest)。最后,介绍了sklearn中随机森林的相关参数及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 集成学习概念

集成学习通俗理解就是“三个臭皮匠,顶个诸葛亮”。对于复杂任务,通过适当的方式集成多个个体学习器(弱分类器)所得到的最终模型要比单独的个体学习器(弱分类器)的性能更优。所以问题的关键点就转化为两点:如何选择、生成弱分类器和如何对他们进行集成,通常有以下三种思路:

  • 将不同类型的弱分类器进行集成,例如同用于分类的SVM,LR,RF等
  • 将相同类型不同参数的弱分类器进行集成,例如GBDT的迭代次数,树的深度等
  • 将相同类型但训练集不同的弱分类器进行集成,例如K折交叉验证,随机抽样等

要想获得好的集成学习需要注意:

  • 个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)
  • 个体学习器的多样性(差异性):学习器之间要有差异。

二 个体学习器概念

集成学习的基础就是要得到多个个体学习器,个体学习器通常由一个现有的学习算法从训练数据产生:

  • 只包含同种类型的个体学习器,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称为”基学习器“(base learning),相应的学习算法称为”基学习算法“(base learning algorithm)。
  • 集成也可包含不同类型的个体学习器,这样集成是”异质“的(heterogeneous)。相应的个体学习器,常称为”组件学习器“(component learning)或直接称为个体学习器。
    在一般的经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比坏的好一些,比好的要坏一些

如何增强个体学习器的多样性:

2.1 数据样本扰动

数据样本扰动对“不稳定基学习器”很有效,这样的“不稳定基学习器”主要有决策树、神经网络。训练样本稍微有些变化就会导致学习器有显著的变动。而有些基学习器对数据样本的扰动是不敏感的,比如线性学习器、支持向量机、朴素贝叶斯、K近邻学习器,这样的基学习器称为稳定基学习器,稳定基学习器对数据样本的扰动不敏感,对这类稳定基学习器一般采用的是输入属性扰动等其他机制。数据样本扰动基于的是采样法,在Bagging中使用的是自助采样法,而在AdaBoost中采样的是序列采样。

2.2 输入属性扰动

著名的随机子空间算法依赖的就是输入属性扰动,这个算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集在子空间中训练个体学习器不仅能够产生多样性大的个体,还会因属性数的减少而大幅节省时间开销。

2.3 输出表示扰动

基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”,翻转法由Breiman在2000年随机改变一些训练样本的标记;或者是对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建个体学习器。还可以将原任务拆解为多个可同时求解的子任务。

2.4 算法参数扰动

这里的算法参数一般要对参数进行设置,比如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。比如可以将决策树使用的属性选择机制替换为其他的属性选择机制。“负相关法”显示地通过正则化项来强制个体神经网络使用不同的参数。

三 Boosting&Bagging

集成方法分类:
串行集成方法多个模型顺序生成。此方法是利用模型之间的依赖关系。算法可以通过提高被分错样本的权重来提高性能。具体参见Boosting。
并行集成方法多个模型并行生成。此方法是利用模型之间的独立性,因为可以通过平均来降低误差。具体参见Bagging。
树行集成方法这种方法可分多层,每一层可包括多种模型,下层的训练数据集为上一层的训练结果,类似于树。具体参见Stacking、Blending。

类型 算法
Bagging 随机森林(RF)
Boosting AdaBoost、GBDT、XGBoost、LightGBM、CatBoost

3.1 Bagging

Bagging就是通过 M M M个弱模型的结果,通过并行集成的方式来获得最终结果。因为 M M M数据集是相互独立的,因此这M个弱模型之间也是相互独立的,在最终的集成结果时,每个模型的权重是一样的。Bagging主要是减少方差,Bagging的主要步骤如下:

  1. 在包含 N N N个样本的数据集中随机有放回的抽取一定数量的样本,构成数据集;
  2. 按步骤1的方式生成 M M M个数据集;
  3. 利用机器学习方法对得到的 M M M个数据集生成 M M M个弱分类器;
  4. 集成 M M M个弱分类器结果作为最终的结果;

3.2 Boosting

每个模型的重要度作为每个模型结果的权重,然后加权计算得出结果。可以看出Boosting中生成多个模型的方式并不是和Bagging一样并行生成,而是串行生成,因此也决定了多个模型结果的集成是串行集成,也就是每个模型的结果权重并不是一样的。Boosting主要是减少偏差。如何来调整样本分布以及计算模型的重要度,不同方法有不同的定义。主要的步骤如下:

  1. 每一次根据上一次训练得到的结果,调整数据集样本的分布,然后再生成下一个模型;

  2. 生成 M M M个模型;

  3. 根据 M M M个模型的结果生成最终结果;

四 结合策略

4.1 平均法

对数值型输出 h i ( x ) ∈ R h_i(x)\in R hi(x)R,最常见的结合策略就是使用平均法,平均法分为简单平均法和加权平均法。

简单平均法:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T

### 关于随机森林 (Random Forest, RF) 的算法原理及应用 #### 随机森林概述 随机森林是一种基于集成学习(ensemble learning)思想的监督学习方法,它通过构建多个决策树并汇总其预测结果来进行分类回归任务。该模型不仅能够提高准确性还能有效防止过拟合现象的发生[^1]。 #### 构建过程 在创建每一棵子树之前,会利用自助法(Bootstrap Sampling)从未标记的数据集中抽取样本集作为训练数据;对于特征选择,则采用随机抽样的方式减少各棵树之间的相关性从而增强整体性能表现。具体来说,在节点分裂时只考虑部分输入变量而不是全部参与计算最佳切分点的位置[^2]。 #### 工作机制 当给定一个新的观测值用于预测类别标签或者连续数值目标变量的时候,RF 将这个实例传递给所有的个体成员即单棵 CARTs (Classification And Regression Trees),最后综合所有基估计器给出的结果得到最终输出:如果是分类问题则取多数投票决定所属类目;若是回归分析则是求平均值得到预期响应值[^3]。 ```python from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(n_estimators=100) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) ``` #### 应用场景 由于具备良好的泛化能力和鲁棒性的特点使得 RandomForests 广泛应用于各个领域当中比如金融风险评估、医疗诊断辅助系统以及图像识别等领域都取得了不错的效果。此外还经常被用来处理高维稀疏矩阵类型的数据集因为它可以自动忽略那些不重要的属性而专注于真正有贡献的因素之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值