
摘要本文系统梳理决策树与 CART 树的核心知识点。首先介绍决策树的基本概念与建立三步特征选择、树生成、剪枝随后重点讲解 CART 树——一种强制二分、自带剪枝的分类与回归树涵盖其五大核心原理二分法、纯度最优分割、递归划分、回归取均值、剪枝防过拟合及优缺点最后给出 sklearn 中决策树的分类、回归与可视化 API并对比预剪枝与后剪枝两种剪枝策略。一、决策树简介1.1 基本概念决策树是一种树形结构每个内部节点表示一个特征上的判断每个分支代表一个判断结果的输出每个叶子节点代表一种分类结果1.2 决策树建立过程特征选择选取有较强分类能力的特征决策树生成根据选择的特征生成决策树剪枝决策树易过拟合采用剪枝方法缓解二、CART 树介绍2.1 什么是 CART 树CARTClassification and Regression Tree分类与回归树通过一层一层的“是/否”问题不断对数据进行逻辑判断和划分把杂乱的数据分到不同的小群体里最终得出明确结论是机器学习中一种决策树也是所有主流树模型的“老祖宗”2.2 背景为什么有 CART 树CART 树解决了前辈算法ID3 / C4.5的局限性前辈算法局限CART 树破局功能单一仅支持分类任务全能型分类回归双栖容易过拟合模型复杂不稳定强制二分法逻辑清晰降低计算复杂度规则不统一分裂方式随意自带剪枝自动识别并移除无用分支CART 树是随机森林、XGBoost、LightGBM 等现代集成学习算法的基石2.3 应用场景分类电商推荐是否购买、金融风控欺诈检测、医疗辅助诊断回归市场预测房价、股价、资源调度用电量、交通流量高级应用随机森林RF、梯度提升树GBDT、XGBoost、LightGBM 的核心组件三、CART 树核心原理3.1 原理一每次只做二分无论选择哪个特征进行划分只能将数据分成两组分类特征如“青绿” vs “非青绿”不是三组同时分数值特征如“大于 5 斤” vs “小于等于 5 斤”优势保证结构清晰、规则统一、计算效率高3.2 原理二寻找“最有用”的分割点核心目标找到一个特征使划分后两组数据的**“纯度”最高**纯度让分割后的两组数据内部尽可能“一致”好的分割一组绝大多数是好瓜另一组绝大多数是坏瓜CART 树会自动遍历所有特征与分割点量化计算并锁定最优特征3.3 原理三一层一层往下分递归第一层划分选择最有效特征将样本一分为二第二层细分对子组再次寻找局部最优特征进行二分持续递归在更小分组里寻找下一个最优特征层层递进停止生长完全纯净子组全为好瓜或坏瓜样本不足数据太少继续划分无意义最终叶子节点代表明确的判定结果3.4 原理四回归问题处理逻辑和分类树几乎一样只是“纯度”定义变了目标让分割后两组数据组内数值差异尽可能小最终预测叶子节点输出该组所有样本目标值的平均值3.5 原理五剪枝防止“想太多”过拟合问题树为了把所有样本分对学到奇葩规则如“瓜蒂上有小黑点的才是好瓜”在新数据上完全不适用CART 解决方案自动识别对预测贡献不大的细枝末节砍掉无用分支让树更简单、更通用四、CART 树优缺点4.1 优点优点说明简单易懂决策过程清晰可见结果易于解释功能强大既能处理分类问题也能处理回归问题规则简洁基于强制二分法逻辑简单直观计算速度快鲁棒性好自带剪枝功能有效防止过拟合应用广泛众多高级集成学习算法的基础模块4.2 缺点缺点说明容易过拟合参数设置不当时会过度学习局部特征结果不稳定对训练数据微小变化敏感分支结构可能剧烈变化非全局最优采用“贪心”策略每步只选局部最优无回溯机制五、决策树 API5.1 分类 APIfromsklearn.treeimportDecisionTreeClassifier DecisionTreeClassifier(criteriongini,# 特征选择标准gini基尼系数或 entropy信息增益默认 gini 即 CARTmax_depthNone,# 决策树最大深度min_samples_splitNone,# 内部节点再划分所需最小样本数min_samples_leafNone,# 叶子节点最少样本数random_stateNone)5.2 回归 APIfromsklearn.treeimportDecisionTreeRegressor5.3 可视化fromsklearn.treeimportplot_tree plot_tree(estimator,max_depth10,filledTrue,feature_names[Pclass,Age,Sex_female,Sex_male],class_names[died,survived])六、决策树剪枝6.1 为什么要剪枝决策树剪枝是一种防止过拟合的正则化方法目的提高泛化能力做法把子树的节点删掉用叶子节点来替换6.2 剪枝方法方法说明预剪枝在决策树生成过程中对每个节点划分前先估计若划分不能带来泛化性能提升则停止划分并标记为叶节点后剪枝先从训练集生成完整决策树然后自底向上考察非叶节点若将子树替换为叶节点能带来泛化性能提升则替换6.3 预剪枝 vs 后剪枝对比项预剪枝后剪枝优点降低过拟合风险显著减少训练/测试时间开销保留更多分支欠拟合风险小泛化性能往往更优缺点有些分支当前划分无用但后续可能有用带来欠拟合风险训练时间开销比未剪枝和预剪枝都大得多附核心点速记决策树结构内部节点特征判断分支判断输出叶子分类结果建立三步特征选择 → 树生成 → 剪枝CART 树分类与回归树强制二分自带剪枝核心原理二分法 → 找纯度最高分割点 → 递归划分 → 回归取平均值纯度分割后两组数据内部尽可能一致CART 优点简单易懂、功能强大、规则简洁、鲁棒性好、应用广泛CART 缺点容易过拟合、结果不稳定、非全局最优贪心策略预剪枝生成过程中一边建树一边验证速度快但有欠拟合风险后剪枝先生成完整树再自底向上裁剪泛化好但训练开销大剪枝本质防止过拟合的正则化方法