决策树、随机森林、GBDT——树模型凭什么还没死

📅 发布时间:2026/7/27 3:31:21
决策树、随机森林、GBDT——树模型凭什么还没死 2012年深度学习翻盘之后整个CV和NLP领域几乎被神经网络统治了。但你去任何一个做结构化数据预测的公司看看——金融风控、电商推荐、广告点击率预估、销售预测——树模型尤其是XGBoost和LightGBM依然是绝对主流深度学习在这类场景里连30%的份额都吃不到。为什么今天咱们就聊聊树模型的不死神话。决策树——所有树模型的祖宗简单到令人发指决策树的逻辑就是一个问问题的过程。你要判断今天适不适合打球决策树会一路问天气怎么样晴天→湿度高吗高→不适合低→适合。这就是一个树形结构的决策链条。训练决策树就是在找最好的分叉方式——哪个特征、哪个阈值能把数据分得最纯让每个子节点里的样本尽可能属于同一类。信息增益、基尼系数、方差减少是三种最常用的纯度指标。决策树的优点是可解释性极强——你不但能知道模型预测了什么还能看到它是怎么做决策的每一步问的是什么特征、阈值是多少。这在金融风控里是硬需求——监管要求银行必须解释为什么拒绝了这个贷款申请不能黑箱输出一个拒绝了事。决策树的缺点是不稳定且容易过拟合——数据稍微变一点整棵树的结构就全变了。而且单棵树的深度深了它在训练集上可以做到100%准确但泛化能力极差。随机森林——一群人投票总比一个人靠谱随机森林的核心思想就四个字——三个臭皮匠顶个诸葛亮。你训练上百棵决策树每棵树用不同的数据子集Bootstrap采样和不同的特征子集随机选一部分特征来做分裂让它们各学各的、各有各的偏见最后把它们的预测结果做投票分类或者平均回归。随机主要体现在两个方面数据随机——每棵树只用60%~80%的训练数据有放回抽样相当于每棵树看到的视野都窄了一点但也因此避开了某些异常值的影响特征随机——每棵树分裂时不是考虑全部特征而是只随机挑选一部分比如总特征数的平方根这样每棵树长出来的样子都不一样互相之间的相关性就降低了随机森林的泛化能力远强于单棵决策树而且天然能处理高维数据、对缺失值不敏感、不需要特征归一化——这些都是工业界特别喜欢的懒人友好属性。它的最大缺点是解释性下降了——几百棵树投票出来的结果你说不清为什么最后判定是拒绝毕竟没有一个统一的决策路径。不过可以通过特征重要性排名来给一个全局解释——告诉你在整体上这个特征对预测结果的影响最大。GBDT——串行训练每一棵树补上一棵的漏洞随机森林的树是并行训练的彼此独立、最后投票。GBDT梯度提升决策树是串行训练的——第一棵树先做个预测算出预测值和真实值之间的残差第二棵树专门去补第一棵树没补上的残差第三棵树再补第二棵的残差……如此往复。这个迭代式纠错的思路极其高效每一轮新增的树都在往减少残差的方向前进所以GBDT通常用更少的树就能达到比随机森林更高的精度。GBDT的工程巅峰就是XGBoost和LightGBM。这两个库把GBDT的效率和工程化做到了极致二阶泰勒展开加速优化比传统GBDT只用一阶导快得多对缺失值自动学习最优分裂方向省掉了预处理里的缺失值填充步骤列采样、早停、正则化L1L2极大降低了过拟合风险支持并行化、分布式训练、GPU加速百万级数据也能在小时级别训完为什么树模型在表格数据上还压着深度学习打这个问题我问过自己很多次也在不少场合跟同行争论过。我的结论是几个原因的叠加。第一表格数据没有局部结构。图像有空间局部性相邻像素相关、文本有序列局部性相邻词相关但表格数据的列之间没有这种顺序关系。你交换两列的位置表格还是那个表格。CNN的卷积和Transformer的位置编码都是利用局部结构的在表格数据上根本发挥不出优势。第二树模型对特征尺度和分布不敏感。深度学习中你不归一化就训不出来树模型完全不用。你把所有特征乘以100树的分裂阈值也跟着乘100结果完全不变——这对工程人员来说是巨大的省心。第三树模型天然处理类别型特征和缺失值。深度学习的Embedding和填充需要额外设计XGBoost直接支持category类型的列内部自动one-hot缺失值自动学最优分裂方向——省了多少预处理代码。第四树模型的训练快、调参少。一个XGBoost模型在百万级数据上一个小时内搞定训练。同等数据量下训一个深度神经网络光调学习率和batch size可能就得三天还不算架构设计的时间。第五可解释性。金融、医疗、政府监管领域你输出的结论必须有据可查。树模型可以给出为什么是这个结果的完整决策路径深度学习再怎么搞可解释性工具LIME、SHAP也是事后解释不如树模型那种天然透明来得硬气。树模型的未来——它不会死只会换着方式活你会看到越来越多的工作在用树模型深度学习的混合架构。比如用GBDT学到的特征重要性来指导神经网络的特征选择用树模型的特征变换作为深度学习的输入特征或者用神经网络来做树的非线性表达的增强。两者不是谁替代谁的关系而是各擅胜场的互补关系。总结一句话如果是图像、语音、文本、视频用深度学习如果是结构化表格数据优先选XGBoost/LightGBM。违背这个原则的不是学术探索就是工程事故。