中文
News Update
资讯中心
机器学习之随机森林模型
医睿达 2020-01-06 17:48:36 浏览: 370

 

一、随机森林核心概念与原理

✅ 1. 什么是随机森林(Random Forest)

随机森林是集成学习(Ensemble Learning) 中最经典的Bagging(自助聚合) 算法,核心思想是:构建多棵相互独立的决策树,最终通过「投票法」(分类任务)或「平均法」(回归任务)输出结果
 
  • 分类任务:所有决策树投票,得票最多的类别为最终预测结果
  • 回归任务:所有决策树预测值取平均值,为最终预测结果

✅ 2. 随机森林的两大核心随机性(核心优势来源)

随机森林的 “随机” 体现在两个关键环节,这也是它能解决单棵决策树过拟合、泛化能力弱问题的核心:

(1)样本随机:自助采样(Bootstrap)

从原始数据集(共  个样本)中,有放回地随机抽取  个样本,构成每一棵决策树的训练集。
 
  • 约 36.8% 的样本不会被抽到(未参与单棵树训练),这部分样本称为「袋外样本(OOB)」,可直接用于模型评估,无需额外划分测试集。
  • 每棵树的训练样本互不相同,保证了树与树之间的独立性。

(2)特征随机:随机特征子集选择

训练每一棵决策树时,在节点分裂的关键步骤,不从全部特征中选最优分裂特征,而是随机选取特征子集(通常取 总特征数),再从子集里选最优特征
 
  • 避免单棵树过度依赖某几个强特征,降低树之间的相关性,进一步提升模型泛化能力。

✅ 3. 随机森林 vs 单棵决策树(核心优势)

单棵决策树的致命问题:易过拟合、方差大、结果不稳定(数据微小波动就会导致树结构巨变)。
 
随机森林完美解决以上问题,优势总结:
 
✅ 泛化能力极强,几乎不会过拟合(树越多、随机性越强,效果越稳定)
 
✅ 抗噪能力强,对异常值、缺失值不敏感
 
✅ 能自动输出特征重要性,实现特征筛选
 
✅ 支持分类、回归两大核心任务,适用场景广
 
✅ 训练速度快(多棵树可并行训练)

二、随机森林核心超参数(调优重点)

使用随机森林的核心是超参数调优,以下是 Sklearn 库中RandomForestClassifier(分类)、RandomForestRegressor(回归)的高频核心参数,掌握这些即可解决 90% 的业务问题,按优先级排序:

第一优先级(最核心,必调)

  1. n_estimators:决策树的数量
    • 核心逻辑:树越多,模型效果越稳定,泛化能力越强;但超过阈值后效果不再提升,且占用更多内存、训练变慢。
    • 调优建议:默认 100,常用取值 [100, 200, 300, 500],根据算力逐步增加。
  2. max_depth:每棵决策树的最大深度
    • 核心逻辑:限制树的生长,防止单棵树过拟合(深度越大,单棵树越复杂,越易过拟合)。
    • 调优建议:默认None(树无限制生长),常用取值 [5, 10, 20, 30],结合数据复杂度调整。

第二优先级(次核心,按需调)

  1. max_features:节点分裂时的最大特征数(随机特征子集大小)
    • 核心逻辑:控制特征随机性,直接影响树的相关性。
    • 调优建议:分类任务默认 总特征数,回归任务默认 总特征数;可手动设值 sqrt/log2/ 具体数字。
  2. min_samples_split:节点分裂所需的最小样本数
    • 核心逻辑:值越大,树越简单,越不易过拟合(样本不足则不分裂)。
    • 调优建议:默认 2,常用取值 [2, 5, 10, 20]。
  3. min_samples_leaf:叶子节点的最小样本数
    • 核心逻辑:值越大,叶子越 “稀疏”,树越简单,泛化能力越强。
    • 调优建议:默认 1,常用取值 [1, 5, 10]。

第三优先级(辅助优化)

  1. bootstrap:是否开启自助采样,默认True(必须开启,否则失去 Bagging 核心特性)
  2. oob_score:是否使用袋外样本评估模型,默认False,开启后可直接用 OOB 得分判断模型效果,无需划分测试集。
  3. random_state:随机种子,设固定值(如 42)可保证实验结果可复现。
  4. n_jobs:并行训练的线程数,设-1表示使用 CPU 全部核心,大幅提升训练速度。