张芷铭的个人博客

随机森林回归通过集成多棵决策树提升泛化能力,采用 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}}$
$1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}$

调参策略

  • 网格搜索:遍历预设参数组合
  • 并行计算:设置 n_jobs=-1 加速

Comments