模型评估:过拟合与数据泄漏
训练误差低,只说明模型对训练数据拟合得好。评估的目的,是估计它面对未见数据时是否仍然可靠。
三个数据集各自负责什么
- 训练集:用于学习模型参数。
- 验证集:用于选择超参数、训练轮数和模型方案。
- 测试集:用于方案确定后的最终评估,不应反复用来指导调参。
划分方式应贴近实际使用场景。时间序列通常用较早的数据训练、较晚的数据评估;同一个人的多条记录,可能需要按人分组,避免同时出现在训练集和测试集里。
欠拟合和过拟合
如果训练集与验证集上的误差都较高,可能是模型表达能力不足、特征不合适,或者训练尚未充分。如果训练误差持续下降,而验证误差开始上升,则是过拟合的常见信号。
应对过拟合可以尝试增加有效数据、正则化、减小模型容量或早停。早停根据验证集表现选择训练检查点,不是等训练损失降到零。
准确率不是唯一指标
假设 1000 个样本中只有 10 个正例,全部预测为负例也能得到 99% 的准确率,却一个正例都找不到。
精确率 Precision = TP / (TP + FP)
召回率 Recall = TP / (TP + FN)
TP 是正确找出的正例,FP 是误报,FN 是漏报。分母为零时,需要明确指标的处理约定。选择指标和分类阈值,应考虑误报与漏报的实际代价。
容易忽略的数据泄漏
先在全部数据上计算标准化的均值和标准差,再划分数据,会让评估数据的信息进入训练流程。正确做法是只在训练集上拟合预处理步骤,再将同一变换应用到验证集和测试集。
重复样本、来自未来的字段,以及在交叉验证前对全部样本做特征筛选,也可能使评估结果过于乐观。