8.21 随机森林
一、Bagging(Bootstrap Aggregating)
1 机制
• 并行训练:对原始数据做有放回采样(Bootstrap),每棵树用不同子集;
• 随机特征:在每节点分裂时只随机考察 max_features 个特征,进一步去相关;
• 结果聚合:分类任务采用多数投票,回归任务采用均值。
2. 代表算法——随机森林
• 超参数:
n_estimators:森林规模,树越多方差越低但计算量线性增加;
max_depth / min_samples_leaf:控制单棵树复杂度,防过拟合;
max_features:‘sqrt’、‘log2’ 或整数,决定随机特征子集大小;
bootstrap / oob_score:开启袋外估计即可免交叉验证。
• 优点:
a) 高维数据无需显式做特征选择;
b) 训练后可输出 feature_importance,方便业务解释;
c) 天然并行,CPU 多核线性加速;
d) 对异常值和噪声鲁棒,且支持概率输出。
• 缺点:相比单棵决策树,解释性略弱;对超高稀疏特征(文本 TF-IDF 百万维)仍可能内存爆炸。
3. 可视化
取 rf.estimators_[0]
用 plot_tree
或 export_graphviz
即可展示单棵树划分路径,帮助业务人员理解模型逻辑。
二、Boosting
• 代表:AdaBoost、Gradient Boosting、XGBoost、LightGBM、CatBoost。
• 核心:串行训练,每轮加大上一轮错分样本权重(或拟合残差),最终加权投票。
• 优点:偏差低、精度高;缺点:对异常值敏感、训练顺序不可并行。
三、 Stacking
• 两层结构:第一层多个异构基模型(RF、KNN、SVM…)输出概率;第二层用 Logistic Regression / 神经网络把概率再拟合一次。
• 关键点:为防止过拟合,第一层需用交叉验证或 out-of-fold 预测产生元特征。