监督学习核心 20% — 先选模型族,再谈调参
一句话:表格数据上,梯度提升树(GBDT/XGBoost/LightGBM)几乎总是第一个该试的模型;它训练快、不需要特征缩放、能处理缺失值。选对模型族比调参省下 80% 的时间。
🎯 这 20% 能解决哪些问题
| 常见困惑 | 本质 | 本页答案 |
|---|
| 线性回归、随机森林、XGBoost 怎么选 | 数据形态与可解释性需求 | 见「三类模型族」 |
| 交叉验证分数很高,上线就崩 | 数据泄漏 | 见「五个泄漏陷阱」 |
| 正样本只有 2%,模型全判负 | 评估指标与采样策略错 | 见「类别不平衡」 |
| 要不要做特征工程 | 模型类型决定 | 见「特征工程的分工」 |
| 调参调不动了怎么办 | 优先级错了 | 见「调参优先级」 |
一、三类模型族
| 模型族 | 代表 | 优点 | 适合 |
|---|
| 线性/广义线性 | 线性回归、Lasso、逻辑回归 | 快、可解释、稳定 | 特征少、需解释、样本少 |
| 树集成 | 随机森林、GBDT、XGBoost、LightGBM | 表格数据最强、抗异常值 | 结构化数据默认首选 |
| 核方法 | SVM、核回归 | 中小样本高维有效 | 样本 < 几万、维度高 |
决策顺序:先跑 GBDT 建立基线 → 若需可解释用逻辑回归/浅树 → 若样本极少(< 1000)试核方法或强正则线性 → 深度模型只在数据量大且非表格时才优先。
二、偏差与方差
[
\text{期望误差} = \text{偏差}^2 + \text{方差} + \text{噪声}
]
| 症状 | 判断 | 手段 |
|---|
| 训练误差高、验证也高 | 高偏差(欠拟合) | 增特征、增复杂度、减正则 |
| 训练误差低、验证高 | 高方差(过拟合) | 加数据、加正则、降复杂度 |
| 两者都低但线上差 | 分布漂移 | 检查采样、加时间维度 |
学习曲线是最好用的诊断工具:横轴样本量、纵轴训练/验证误差,两条曲线是否收敛一眼看出该加数据还是加模型。
三、交叉验证与五个泄漏陷阱
| 陷阱 | 表现 | 正确做法 |
|---|
| 预处理放全局 | 归一化/填充在全量数据上做 | 在每折训练集内 fit,再 transform 验证集 |
| 特征含未来信息 | 用了结果发生后才有的字段 | 按时间点构造特征 |
| 同源样本跨折 | 同一用户/同一设备样本分到两折 | 按实体分组(GroupKFold) |
| 时间序列随机切分 | 用未来预测过去 | 时序切分(TimeSeriesSplit) |
| 目标编码泄漏 | 用全量标签算均值编码 | 折内计算或加噪声平滑 |
记住:交叉验证分数虚高,90% 是泄漏,不是模型好。
四、类别不平衡
| 手段 | 何时用 | 注意 |
|---|
| 调整决策阈值 | 首先考虑 | 成本最低,但要定业务代价 |
| 类别权重 / scale_pos_weight | 中等不平衡 | 简单有效 |
| 欠采样 | 负样本极多 | 会丢信息 |
| 过采样/SMOTE | 正样本极少 | 高维时易过拟合 |
| 换指标 | 永远 | 用 PR-AUC、召回@精度 而非准确率 |
优先顺序:先换指标 → 再调阈值 → 再调权重 → 最后才采样。
五、特征工程的分工
| 模型 | 需要的特征工程 |
|---|
| 线性模型 | 必须:归一化、独热编码、非线性变换、交互项 |
| 树模型 | 少量:类别编码(目标编码需防泄漏)、分箱可选 |
| 深度模型 | 少:主要靠嵌入与表示学习 |
高价值特征的四类:时间窗口统计(近 7/30 天次数)、比率型(转化率)、序列位置(首次/最近一次)、交叉组合(品类×价格带)。
六、调参优先级
| 优先级 | 内容 |
|---|
| 1 | 数据与特征(清洗、加特征) |
| 2 | 交叉验证方案是否正确 |
| 3 | 模型族的粗选 |
| 4 | 关键超参:树的深度/叶子数、学习率、正则 λ |
| 5 | 细粒度网格/贝叶斯搜索 |
经验:调参通常只带来 1–3 个点,而加一个好特征常带来 5–20 个点。
📋 一页速查
| 问题 | 答案 |
|---|
| 表格数据先试什么 | GBDT 系列 |
| 交叉验证虚高原因 | 数据泄漏 |
| 不平衡先做什么 | 换指标 + 调阈值 |
| 线性模型要归一化吗 | 必须 |
| 树模型要归一化吗 | 不需要 |
| 诊断工具 | 学习曲线 |
🔗 相关链接