Modeling Workflow
Perspective
Modeling workflow 是读建模类工作时容易被忽略、但决定结论可信度的部分。论文往往只展示”最后那个模型有多好”,而真正决定结果是否可信的,是它怎么走到那个模型的——尤其是评估和最终验证有没有泄漏。
先记住一个实用边界:建模不是一条直线,而是一个带循环的流程;最危险的环节是用来”调”模型的数据和用来”验”模型的数据有没有分干净。 如果调参时反复看了最终验证集,再好的性能数字也不可信。
Definition
A modeling workflow is the ordered but iterative process of going from raw data to a validated model: exploring the data, engineering features, tuning and selecting models, evaluating them, looping back to refine, and finally validating on data held out until the very end.
中文理解:建模流程是”从原始数据到可信模型”的有序但循环的过程。它强调两件事:一是探索与精炼之间要反复迭代,二是最终验证数据必须留到最后、只看一次。
Why It Matters
流程顺序直接决定结论能不能信:
- 评估和调参用同一份数据,会让性能虚高(过拟合到验证集)。
- Feature engineering 如果用了全量数据(包括测试集)的统计量,就发生了 data leakage。
- 最终验证如果被反复窥探,它就不再是”未见过的数据”,泛化估计失效。
读论文时,看作者是否把这些环节分清楚,比看最后那个准确率数字更重要。
The Workflow
这一章给出的标准流程是一个带循环的链条:
EDA → feature engineering → model tuning/selection → model evaluation
↑ │
└────────────── loop back ─────────────────────────┘
│
▼
final validation
EDA(探索性数据分析)
先看数据:分布、缺失、异常、变量之间的关系。这一步常用 descriptive model(见 statistical-modeling),目的是”看见数据结构”,为后面的特征和模型选择提供线索。
Feature engineering(特征工程)
基于 EDA 的理解,构造、变换、筛选特征:编码类别变量、处理缺失、标准化、构造交互项等。关键纪律:所有依赖数据统计量的变换(如标准化、缺失填补)只能从训练数据学习,再应用到验证/测试数据,否则就是 leakage。
Model tuning / selection(调参与选择)
尝试不同模型和超参数,通常用 cross-validation 在训练数据内部比较。这一步是”竞争”环节,可能反复试很多组合。
Model evaluation(模型评估)
用合适的指标评估候选模型的表现(见 supervised-unsupervised-learning 里的指标选择)。评估结果会反馈到前面:可能需要回到 EDA 重新理解数据,或回到 feature engineering 改进特征。
Loop back(回到 EDA / feature engineering)
这是流程的核心——它是迭代的。评估暴露的问题(某类样本预测差、某特征无用、残差有结构)会驱动新一轮探索和特征改造。大部分建模时间花在这个循环里。
Final validation(最终验证)
当模型经过充分迭代、定下来之后,才在一直留到最后、从未参与调参的数据上做一次最终验证。这一步给出对真实泛化性能的诚实估计。它应该只做一次——一旦用它来反过来调模型,它就被”污染”了。
Key Points
- 建模流程是带循环的,不是一条直线;大部分工作在 EDA ↔︎ feature engineering ↔︎ tuning ↔︎ evaluation 的迭代里。
- EDA 先看数据结构,为特征和模型选择提供依据。
- Feature engineering 的所有数据驱动变换只能从训练数据学习,避免 data leakage。
- Tuning/selection 通常用 cross-validation 在训练数据内部比较候选。
- Evaluation 的结果会反馈,驱动回到 EDA 或 feature engineering 再迭代。
- Final validation 用一直 held-out 的数据,只做一次,给出诚实的泛化估计。
- 最危险的错误是用最终验证集反复调模型,或在特征工程中泄漏测试集信息。
Reading Checks
读到一个建模流程时,可以按这个顺序问:
- 作者是否区分了用于调参的数据和用于最终验证的数据?
- Feature engineering(标准化、填补、特征选择)是只在训练数据上拟合的吗?
- 模型选择用了 cross-validation,还是只在一次划分上比较?
- 报告的性能是来自最终 held-out 数据,还是来自调参时反复看过的数据?
- 作者有没有说明迭代过程,还是只展示了最终模型(可能掩盖了多次窥探验证集)?
Note
对我来说,这个流程图最有用的不是它的步骤名,而是两个提醒:一,建模是循环的,好结果往往来自多轮 EDA 和特征改造,而不是一次选对模型;二,最终验证集是”一次性”资源,它的价值就在于从未被用来做决定。读论文时,谁把这两件事做扎实,结论才值得信。
Sources
- Kuhn & Silge, Tidy Modeling with R, Chapter 1: Software for Modeling