文章目录
一、随机森林算法介绍
随机森林是集成学习领域中基于Bagging(Bootstrap Aggregating)思想的经典算法,其核心在于通过构建多个决策树弱学习器,利用“群体智慧”提升模型的泛化能力和鲁棒性。与传统单一决策树相比,随机森林通过双重随机化机制(样本抽样随机化和特征选择随机化)有效降低了模型方差,避免过拟合问题。
集成学习介绍:网页链接
1.1 算法核心思想
- Bagging集成框架:通过有放回抽样(Bootstrap)生成多个不同的训练子集,每个子集训练一棵决策树,最终通过投票机制整合结果
- 双重随机化:
- 样本层面:每次从原始数据集有放回抽取约63.2%的样本构成新训练集
- 特征层面:每个节点分裂时仅从随机选择的k个特征中选择最优分裂特征
- 决策树基学习器:默认使用CART(分类与回归树)作为弱学习器,不进行剪枝操作
1.2 算法优势
- 抗噪声能力强:通过多棵树投票抵消单一树的预测偏差
- 处理高维数据高效:自动筛选重要特征,无需复杂特征工程
- 可解释性:可通过特征重要性评估理解各特征对预测的贡献
- 并行计算友好:各决策树可独立训练,适合大规模数据处理
1.3 理论基础
- 方差-偏差分解:通过增加模型多样性降低方差,保持偏差稳定
- 大数定律:随着树的数量增加,集成模型的预测精度趋近于理论最优值
- 多样性-准确性权衡:通过控制抽样和特征选择的随机性平衡模型多样性与一致性
二、随机森林算法计算流程示例
2.1 示例数据集
假设我们有一个二分类问题,包含5个样本,每个样本有3个特征,数据集如下:
| 样本编号 | 特征1 | 特征2 | 特征3 | 类别 |
|---|---|---|---|---|
| 1 | 1 | 2 | 3 | 0 |
| 2 | 4 | 5 | 6 | 1 |
| 3 | 7 | 8 | 9 | 0 |
| 4 | 2 | 3 | 4 | 1 |
| 5 | 5 | 6 | 7 | 0 |
待预测新样本为:[3, 4, 5],我们将构建3棵决策树(n_estimators=3),每棵树随机选取2个特征(max_features=2)。
决策树介绍:网页链接
2.2 决策树构建过程
决策树1构建
- 样本抽样:有放回抽取5个样本,结果为
[1, 2, 2, 4, 5](样本2被抽取两次,样本3未被抽取) - 特征选择:随机选取特征1和特征2
- 训练过程:
- 计算特征1和特征2的分裂增益,假设最优分裂点为特征1=3
- 分裂规则:若特征1 < 3 分类为0;否则分类为1
- 树结构:

决策树2构建
- 样本抽样:有放回抽取5个样本,结果为
[1, 3, 3, 4, 5](样本3被抽取两次,样本2未被抽取) - 特征选择:随机选取特征2和特征3
- 训练过程:
- 计算特征2和特征3的分裂增益,最优分裂点为特征2=5
- 分裂规则:若特征2 < 5 分类为0;否则分类为1
- 树结构:

决策树3构建
- 样本抽样:有放回抽取5个样本,结果为
[2, 2, 3, 4, 5](样本2被抽取两次) - 特征选择:随机选取特征1和特征3
- 训练过程:
- 计算特征1和特征3的分裂增益,最优分裂点为特征3=6
- 分裂规则:若特征3 < 6 分类为0;否则分类为1
- 树结构:

2.3 新样本预测流程
- 决策树1预测:
- 特征1=3,不满足特征1 < 3 预测为1
- 决策树2预测:
- 特征2=4 < 5 预测为0
- 决策树3预测:
- 特征3=5 < 6 预测为0
- 投票结果:1票支持类别1,2票支持类别0 最终预测为0
三、sklearn中随机森林算法的API与实现原理
3.1 核心API详解(sklearn.ensemble.RandomForestClassifier)
class sklearn.ensemble.RandomForestClassifier(
n_estimators=100, *,
criterion='gini',
max_depth=None,
max_features='auto',
bootstrap=True,
random_state=None,
...
)
关键参数解析:
- n_estimators:决策树数量,默认100。增加数量可提高精度,但会增加计算开销
- criterion:节点分裂准则,可选’gini’(基尼系数)或’entropy’(信息熵),默认’gini’
- 基尼系数: G i n i ( p ) = 1 − ∑ k = 1 K p k 2 Gini(p) = 1 - \sum_{k=1}^K p_k^2 Gini(p)=1

最低0.47元/天 解锁文章
452

被折叠的 条评论
为什么被折叠?



