机器学习:随机森林——基于决策树的模型

序言

随机森林是通过构建多棵相对独立的决策树来进行预测的集成方法,用于分类或回归 任务。其核心思想是"bagging "(Bootstrap Aggregating),即在训练时从数据集中有放回地随机采样,生成多份样本集,每份样本集用于训练一棵决策树。最后,将所有决策树的预测结果通过投票(分类)或平均(回归)得到最终结果。

注:阅读本篇文章前,最好先了解决策树的基本知识,包括决策树的类型、原理和构建方法等。

(决策树相关内容可以参考我另一篇文章。如果大佬的话,就当我没说吧哈哈哈哈哈)

核心步骤

(一)数据采样

从原始训练数据集 D(包含 n 个样本)中,有放回地抽取多个子集 Di,假设抽取T个子集。每个子集大小与原始数据集相同(包含 n 个样本)。有放回采样会导致每个子集内的样本有重复。

(二)构建决策树

对于每个子集 Di​,构建一棵决策树。在每个节点进行划分时,随机选择一个特征子集 m(通常 m≈​,其中 M 是总特征数),然后在该子集上选择最优划分特征。这样,避免所有树在相同的特征上划分,提高了模型的多样性。

(三)集成预测

对于分类任务,随机森林通过所有决策树(共T棵)的"投票"来决定最终的预测类别;对于回归任务,则通过所有决策树预测结果的平均值作为最终预测。

  • 对于分类任务:每棵决策树输出一个类别预测结果,选择票数最多的类别作为最终预测结果。

  • 对于回归任务:每棵决策树输出一个数值预测结果,取所有预测结果的平均值作为最终预测结果。

优点

  • **高准确率:**随机森林结合了多棵决策树的预测结果,能显著提高模型的精度,尤其适用于特征空间复杂的数据集。

  • 抗过拟合:随机森林通过"bagging"方法、随机采样和特征选择等机制,有效减少了过拟合的风险。与单棵决策树相比,随机森林对训练数据中的噪声不敏感。

  • **特征重要性评估:**随机森林可以通过统计决策树的特征分裂次数,量化特征的重要性。,使得模型在特征选择上具有直观性,便于解释和优化数据。

  • **鲁棒性强:**随机森林对缺失值和异常值的鲁棒性较好。即使存在少量缺失值和噪声,它依然能保持较好的预测性能。

  • **适用性广泛:**随机森林可以用于分类、回归任务,还可以拓展到异常检测、特征选择等问题。

  • 不要求必须标准化或归一化 **:**随机森林基于决策树,不依赖特征的缩放。

  • **可以并行计算:**随机森林中的每棵树可以独立训练和预测,因此可以并行计算,能够充分利用多核处理器,提升训练效率。

缺点

  • **计算成本高、占用内存大:**随机森林需要训练多棵决策树,尤其在树的数量较多时,计算开销较大。尽管可以并行化,但在大数据集上依然可能较慢。随机森林模型中存储了大量树结构,占用的内存可能较大,尤其在树的数量较多、深度较大的情况下。

  • **模型复杂,具体决策过程不易解释:**随机森林是由多棵树组成的集成模型,虽然能输出特征重要性,但具体决策过程不易解释。相比单棵决策树或线性模型,其决策过程不够透明。

  • **对高维稀疏数据效果不佳:**随机森林在高维、稀疏数据(如文本分类)上效果一般,不如线性模型或神经网络等适用。

  • 无法处理时间序列数据: 随机森林不擅长处理时间序列数据,尤其是++有序依赖关系的数据++。对这类数据,通常需要引入特征工程或采用其他专门算法(如LSTM或ARIMA)。

  • 对极端类别不平衡敏感: 随机森林对类别不平衡的数据可能表现不佳,往往会++偏向于多数类++。需要额外的采样方法或调整策略来平衡模型的效果。

优化方法

1. 调整超参数

可以通过网格搜索或随机搜索结合交叉验证来优化下面这些超参数。

  • 树的数量(n_estimators

    树的数量越多,模型的预测结果越稳定,但训练时间也会增加。可以通过交叉验证找到最佳的树数量,一般树的数量适当增多可以提升模型性能,但在一定数量之后效果会逐渐减小。

  • 最大特征数(max_features

    每次节点分裂时可以使用的最大特征数,控制树的多样性。推荐设置为 sqrt(n_features)(分类问题)或 log2(n_features),但具体选择可以通过验证调整。减小该值可以减少模型的方差,但会增加偏差。

  • 树的最大深度(max_depth

    决定每棵树的深度限制,可以避免每棵树过于复杂导致过拟合。较浅的树可以减少过拟合,但也可能带来欠拟合。

  • 叶节点最小样本数(min_samples_leaf

    控制每个叶节点最小的样本数量。如果设置为较大的值,则每棵树更稳定,但可能欠拟合。

  • 最大节点数(max_leaf_nodes

    限制每棵树的叶节点数量,可以避免树过于复杂导致过拟合。

2. 数据预处理

如果数据类别不平衡(尤其是分类任务),可以通过下采样、过采样或生成合成样本(如SMOTE平滑)来平衡类别,从而提升模型在小类上的预测效果。

3. 特征工程

  • 选择重要特征 :通过随机森林的feature_importances_属性,可以得到各特征的重要性评分,剔除重要性较低的特征以减少模型的复杂度和训练时间。

  • 特征组合:对于某些复杂问题,可以尝试组合已有特征,构造交叉特征,提高模型的表达能力。

  • 标准化和归一化:虽然随机森林对特征缩放不敏感,但归一化和标准化可能对部分特征关系敏感的任务有所帮助。

4. 使用增量学习或部分训练数据

对于非常大的数据集,可以使用增量学习或对数据进行分批采样,每次只用部分数据训练一小部分树,避免过大的内存开销。

5. 减少过拟合和加快训练

  • 减少样本数或特征数:在训练数据量较大的情况下,可以使用PCA等方法降维或选择重要特征,减少训练时间。

  • 使用并行化 :随机森林模型可以并行化训练和预测,通过设置n_jobs参数(例如n_jobs=-1)利用多核CPU资源,加速训练过程。

6. 使用早停法

当树的数量增多时,模型的提升会逐渐减小,甚至出现过拟合。可以在训练中监控模型性能,一旦模型在验证集上的性能停止提升,则停止增加树的数量。

# 文章内容来源于各渠道整理。若对大噶有帮助的话,希望点个赞支持一下叭!

# 文章如有错误,欢迎大噶指正!

相关推荐
对方正在长头发丿23 分钟前
LETTERS(DFS)
c++·笔记·算法·深度优先·图论
zy_destiny32 分钟前
【工业场景】用YOLOv12实现饮料类别识别
人工智能·python·深度学习·yolo·机器学习·计算机视觉·目标跟踪
能来帮帮蒟蒻吗1 小时前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
chushiyunen2 小时前
dom操作笔记、xml和document等
xml·java·笔记
chushiyunen2 小时前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat
汇能感知2 小时前
光谱相机的光谱数据采集原理
经验分享·笔记·科技
人人题2 小时前
汽车加气站操作工考试答题模板
笔记·职场和发展·微信小程序·汽车·创业创新·学习方法·业界资讯
小脑斧爱吃鱼鱼2 小时前
鸿蒙项目笔记(1)
笔记·学习·harmonyos
lulinhao4 小时前
HCIA/HCIP基础知识笔记汇总
网络·笔记
杉之5 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat