首页 › S 模型训练 › S8 综合实践 › 02

S8-02 · 表格数据 LightGBM:通往金融风控的路径

毕业阶段约 600 分钟阶段:S8 综合实践

阶段:S8-综合实践 | 预计耗时:2-3 小时 | 前置:S8-01 CIFAR-10 完整项目 新依赖:pip install lightgbm scikit-learn pandas -i https://pypi.tuna.tsinghua.edu.cn/simple 代码:model-learn/s8_lightgbm.py | 数据:Adult 收入普查(约 5MB,UCI 直接下载) 与职业路线的关系:这是 训练数据集.md 第 1 名"金融量化/风控"路线的第一块砖

学习目标

  1. 破除"深度学习万能":表格数据上梯度提升树(GBDT)仍是工业界王者,且 CPU 秒级训练——低配机的黄金赛道
  2. 掌握 LightGBM 最小工作流:加载 → 类别特征 → 训练 → AUC 评估
  3. 理解 AUC 与业务指标的关系(呼应 S6-01:不平衡数据不能只看准确率)

核心知识

1. 为什么表格数据不用神经网络

  • 表格特征之间关系简单、样本量常在万级——GBDT 又快又准又可解释
  • LightGBM 单机 CPU 即可,几十秒出结果;神经网络在同任务往往更慢更差
  • 金融风控还要求可解释(监管),树模型配合特征重要性输出正好

2. Adult 数据集

经典二分类:根据年龄/职业/教育等 14 个特征预测"年收入是否 > 50K"。约 3.2 万样本,类别比 76:24(轻微不平衡——正好用 AUC)。

3. AUC 直觉

"随机抽一个正样本和一个负样本,模型给正样本更高分的概率"。0.5=瞎猜,1.0=完美;Adult 上 LightGBM 轻松到 0.92+。

实验任务

任务 1:跑通最小工作流(60 分钟)

# s8_lightgbm.py —— 表格数据王者初体验
import pandas as pd, lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

URL = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
cols = ["age","workclass","fnlwgt","education","edu_num","marital","occupation",
        "relationship","race","sex","gain","loss","hours","country","income"]
df = pd.read_csv(URL, names=cols, na_values=" ?", skipinitialspace=True)

y = (df.pop("income") == ">50K").astype(int)        # 标签 0/1
X = df.fillna("Unknown")                             # 缺失值处理(第一个特征工程决定)
for c in X.columns:                                  # 类别列转 category dtype,LightGBM 原生支持
    if X[c].dtype == object: X[c] = X[c].astype("category")

Xtr, Xva, ytr, yva = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
m = lgb.LGBMClassifier(n_estimators=300, learning_rate=0.05, random_state=42)
m.fit(Xtr, ytr, eval_set=[(Xva, yva)])
print("AUC =", roc_auc_score(yva, m.predict_proba(Xva)[:, 1]))
print(pd.Series(m.feature_importances_, index=X.columns).sort_values(ascending=False).head(8))

任务 2:特征工程第一课(30 分钟)

改动一个特征看 AUC 变化(一次一个变量): - gain(资本收益)和 loss 改成"是否有"的 0/1(绝大多数行是 0——稀疏特征压缩) - age 分箱成 10 岁一档 记录每次 AUC 变化进观察记录表。

任务 3:对照实验(20 分钟)

用 sklearn 的 LogisticRegression(记得先把 category 列 one-hot)跑同任务——对比两个模型的 AUC 与耗时。这就是"表格数据选型"的第一手证据。

验收标准

衔接下一阶段

表格路线就位 → S8-03 0.5B 模型 LoRA 微调:最后一站,把"训练"接到你正在学的 LangGraph/LLM 世界。

小测验(2 题)

答完立即判分,错题给解析;得分存本地。实验与实操题不上网测:回对话找老师验收。