随机森林回归通过集成多棵决策树提升泛化能力,采用 Bootstrap 抽样和特征随机性降低方差。
算法原理
集成学习框架
- Bootstrap 抽样生成 M 个子训练集
- 每个子集独立训练一棵 CART 回归树
双重随机性
| 随机性 | 说明 |
|---|
| 样本随机 | 每棵树约用 63% 原始样本,37% 为袋外数据 |
| 特征随机 | 分裂时随机选择 F ≤ M 个特征 |
预测机制
$$\hat{y} = \frac{1}{T} \sum_{t=1}^T f_t(x)$$
关键参数
| 参数 | 作用 | 建议值 |
|---|
| n_estimators | 树的数量 | 100-500 |
| max_features | 分裂时考虑的特征数 | “sqrt” |
| max_depth | 树的最大深度 | 5-30 |
| min_samples_leaf | 叶子节点最小样本数 | 5-10 |
| oob_score | 袋外数据评估 | True |
代码示例
1
2
3
4
5
6
7
8
9
10
| from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(
n_estimators=200,
max_features='sqrt',
max_depth=10,
oob_score=True
)
rf.fit(X_train, y_train)
y_pred = rf.predict(X_test)
|
评估指标
| 指标 | 公式 |
|---|
| MSE | $\frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2$ |
| RMSE | $\sqrt{\text{MSE}}$ |
| R² | $1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}$ |
调参策略
- 网格搜索:遍历预设参数组合
- 并行计算:设置
n_jobs=-1 加速
Comments