随机森林回归通过集成多棵决策树提升泛化能力,采用 Bootstrap 抽样和特征随机性降低方差。
算法原理
集成学习框架
- Bootstrap 抽样生成 M 个子训练集
- 每个子集独立训练一棵 CART 回归树
双重随机性
| 随机性 | 说明 |
|---|
| 样本随机 | 每棵树约用 63% 原始样本,37% 为袋外数据 |
| 特征随机 | 分裂时随机选择 F ≤ M 个特征 |
预测机制
y^=T1∑t=1Tft(x)
关键参数
| 参数 | 作用 | 建议值 |
|---|
| n_estimators | 树的数量 | 100-500 |
| max_features | 分裂时考虑的特征数 | ”sqrt” |
| max_depth | 树的最大深度 | 5-30 |
| min_samples_leaf | 叶子节点最小样本数 | 5-10 |
| oob_score | 袋外数据评估 | True |
代码示例
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 | n1∑i=1n(yi−y^i)2 |
| RMSE | MSE |
| R² | 1−∑(yi−yˉ)2∑(yi−y^i)2 |
调参策略
- 网格搜索:遍历预设参数组合
- 并行计算:设置
n_jobs=-1 加速