决策树与随机森林
决策树像一串「如果……就……」的判断规则,直观可解释。单棵树容易过拟合,随机森林通过多棵树的集成平均,既保住可解释性又显著提升稳定与精度,是表格数据的常胜模型。
树怎么分裂
树从根节点出发,对每个特征找最佳切分点,使子节点的纯度最高。常用准则有信息增益(基于熵)与基尼不纯度。递归分裂直到达到最大深度或节点样本过少,再于叶节点给出预测。
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=4, random_state=0)
tree.fit(X_train, y_train)
print(tree.feature_importances_)
随机森林的集成
随机森林在样本(自助采样)与特征两个层面引入随机性,训练出多棵差异化的树,预测时分类取多数投票、回归取平均。这种 bagging 降低了方差,使结果比单棵树稳健得多。
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(X_train, y_train)
注意点
单棵决策树要控制 max_depth 防止过拟合;随机森林的树越多越稳,但计算开销随之上升。特征重要性可帮助筛选变量,但高相关特征会稀释重要性估计。
小结
决策树用纯度准则递归分裂,可解释却易过拟合;随机森林以双重随机集成压制方差,成为表格数据的主力。调 max_depth 与 n_estimators 是常用旋钮。
参考与延伸阅读
- scikit-learn 决策树文档。已核验。https://scikit-learn.org/stable/modules/tree.html
- Breiman 2001 随机森林原始论文。已核验。https://link.springer.com/article/10.1023/A:1010933404324
本文累计阅读 — 次