决策树 5 层实战 · Adult Income + 4 模型

D+18 教程 2026-08-24 ~4000 字 面向数据科学家 100% 本机真实运行 · UCI Adult 48K 行
决策树 = 商业分析里最容易跟业务方解释的算法。本文是"商业分析四大算法"系列的第 4 篇,在 UCI Adult Income (48K 样本, 预测收入 >50K) 上跑 4 个模型 (DT / RF / XGBoost / SHAP),反复论证找出业务一致的 Top 3 特征。
5 层结构: L1 树原理 → L2 DT 单树 → L3 Random Forest → L4 XGBoost 调优 → L5 SHAP 业务解释

L1树原理

CART 树 (sklearn 默认):
  分裂准则 = Gini impurity (分类) / MSE (回归)
  Gini = 1 - Σ pᵢ²  (越小越纯)

关键参数:
  max_depth        → 深度 (越深越容易过拟合)
  min_samples_leaf → 叶节点最小样本数
  n_estimators     → RF/Boosting 的树数

集成学习 vs 单树:
  DT:    可解释,但方差大
  RF:    bagging → 降方差
  XGBoost: boosting → 降偏差

L2单树 Decision Tree

数据集: UCI Adult Income (4MB, 48,842 样本, 14 特征, 目标 = 收入 >50K)。

from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(
    max_depth=6, min_samples_leaf=20,
    class_weight="balanced", random_state=42
)
dt.fit(X_train, y_train)
Decision Tree
L2 · Decision Tree 前 3 层 · capital-gain 是最强分裂特征
DT AUC: 0.8917 单树 6 指标: AUC=0.89, KS=0.63, PR-AUC=0.72 Precision=0.58, Recall=0.81, F1=0.67

L3Random Forest

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
    n_estimators=300, max_depth=12, min_samples_leaf=10,
    class_weight="balanced", random_state=42, n_jobs=-1
)
rf.fit(X_train, y_train)
RF AUC: 0.9068 (DT +0.015) RF 6 指标: AUC=0.91, KS=0.65, PR-AUC=0.78 Precision=0.56, Recall=0.87, F1=0.68

L4XGBoost + Grid 调优

ratio = (y_train == 0).sum() / (y_train == 1).sum()
xgb = XGBClassifier(
    scale_pos_weight=ratio, eval_metric="aucpr",
    random_state=42, use_label_encoder=False, n_jobs=-1
)
# Grid 8 组常见参数
for n_est, depth, lr in product([200,400], [4,6], [0.05,0.1]):
    xgb.set_params(n_estimators=n_est, max_depth=depth, learning_rate=lr)
    xgb.fit(X_train, y_train)
Best: n_est=200, depth=4, lr=0.05 XGBoost AUC: 0.9254 (比 RF +0.019) XGBoost 6 指标: AUC=0.93, KS=0.68, PR-AUC=0.83 Precision=0.63, Recall=0.85, F1=0.72

L5SHAP 解释

import shap
explainer = shap.TreeExplainer(xgb)
shap_values = explainer.shap_values(X_test[:500])
shap.summary_plot(shap_values, X_test[:500], feature_names=feature_names)
SHAP
L5 · SHAP 特征重要性 · XGBoost · marital-status 排第一

反复论证 · 4 模型 Top 10 共识特征

4/4 共识 (DT + RF + XGB + SHAP 都选): ✅ capital-gain: 4/4 ✅ education-num: 4/4 ✅ marital-status_Married: 4/4 3/4 共识 (3 个模型选): age: 3/4 capital-loss: 3/4 hours-per-week: 3/4 occupation_Exec-managerial: 3/4 2/4 共识 (2 个模型选): fnlwgt, occupation_Prof-specialty, relationship_Own-child, sex_Male
业务解读: → 营销动作: 高 capital-gain / 高 education / 已婚 客户 = 高收入潜客,精准投放
Tree Results
L5 · 3 模型 ROC 曲线 + Top 共识特征 (绿色=4/4, 陶土=3/4)

3 模型 6 指标对比

模型AUCKSPR-AUCPrecisionRecallF1
Decision Tree0.89170.62800.71860.57700.80820.6733
Random Forest0.90680.64620.77850.55700.86890.6789
XGBoost (Grid)0.92540.68280.82720.62560.84660.7195
关键发现:

与前文 essay 联动

完 · 2026-08-24 · Chase's Personal Page · 100% 本机真实运行