数据与智能时代已然来临,且来势凶凶,面对突出其来的各类数据智能项目,对我们快速掌握相关知识经验的诉求也是刻不容缓。今天分享一些模型测试路程上的相关积累,12条建议:
数据集
- 真实数据集
模型训练一定要用真实数据集。如果给假的不真实的数据,那么训练出来的模型应用到实际场景也不靠谱。这就好比,你教小学生时用的是自己画的不太像猫狗图片,在真实场景应用中,遇到真猫真狗她自然认不准了。
测试集或验证集也是同样道理,如果我用全球海量的真猫与真狗图训练了一个识猫模型,你测试或验证的时候用一堆假猫图来验证,当然结果也会偏差很大不可信。 - 全量数据集
在测试过程中,往往为了快速验证代码逻辑,会优先选用少量(精准采样)数据来测试,但对于模型训练来说,要验证它的完整性与评估性能指标一定要用全量数据来测验,验证pipeline运行是否有错误,以及全量训练后的评估指标的性能是否达到标,如果不达标,需要科学家找原因调优,达标方可发布上线。
如果你用部分量数据集训练,那么一是样本不完整或者数据分布与真实情况有差别,会影响模型准确度。除非科学家专门研究了降采样的方式来训练模型。 - 数据上规模
在模型训练过程中,有的会降采样数据训练,有的是全量数据。不论是哪种,数据规模需要有能产生统计意义的结果。不然太少量说明不了什么,没有参考价值。
数据集拆分
- 预留一定比例
模型训练一定要在数据集中预留一定小比例的测试集,大比例的用来训练,小比例的用来测试验证。比如;通常二八,即80%的训练数据集、20%的测试数据集。 - 特征相同
在挑选的测试集的特征应该与训练集的特征相同。如果测试集的特征不同,在模型验证时会有问题。 - 数据分布相同
训练集与测试集的数据分布要相同,比如:正样本与负样本的比例都是9:1。在折分数据集时,要从90%的正样本中二八分,再从10%的负样本中二八分,确保拆分后的训练集与测试集数据分布不变。
由此可见,拆分方式通常是按label不同来拆分。比如:预测是猫或不是猫,分数据集时就要按label二八分,如果不按Label用全部数据量随机分,导致分出来的训练集与测试集的数据分布不均等。
模型评估
- 评估指标
数据科学家、PO、团队成员要对齐选定的评估指标, 以及计算方式。比如,客户非常关注磁盘预测的误报率,在召回率相比误报率来看,客户表明优先考虑误报率要低,且要求误报率小于0.1%。因此,对于评估指标这一块儿,一定要与客户达成共识,并对团队成员同步。 - 评估结果
同一份测试集,性能指标值越好,说明模型越好。 - 先自测
先自测指的是先用训练模型的数据进行评估,验证模型是否进行了学习。如果用训练集评估结果很差,说明模型根本没学习,也不需进行下一步了。当自测评估结果很好,那么,接着用测试集的评估。
模型预测
- 预测数据
训练最优模型后,会发布模型给预测流程线使用。预测时,准备的数据要加入一些敏感数据样本,比如:二分类,确保预测结果有正有负。假设预测雷雨天气的模型,我们要准备一些雷雨敏感的数据样本,确保预测结果中对于那些雷雨敏感的样本有预测正确的;假设加入的这些雷雨敏感数据全部没有预测出来,那需要进一步分析原因。
线上测试
- 模型时效
真实场景中,数据较为复杂,数据会随时间的变化而变化,模型质量会随数据的变化而下降。因此,要定期重新训练优化模型。追踪模型上线时间点,以及之后的数据变化、预测结果准确度变化等。 - 模型验证
需要测试、监控新模型性能,模型预测响应时间变化,并设置阈值与警报。 - 数据通道验证
对数据处理通道测试、监控,监控性能是否下降,运行是否出错,有问题能及时收到反馈。
网友评论