抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 机器学习中qa测试_机器学习项目测试怎么做?(看实例)

机器学习中qa测试_机器学习项目测试怎么做?(看实例)

时间:2021-10-10 11:49:13

相关推荐

机器学习交付项目通常包含两部分产物,一部分是机器学习模型,另一部分是机器学习应用系统。机器学习模型是嫁接在应用之上产生价值的。比如:一款预测雷雨天气的APP,它的雷雨预测功能就是由机器学习模型完成的。

机器学习交付项目:机器学习模型 + 基础应用

机器学习交付项目的测试,就是在测试模型和应用系统。应用系统的测试与传统软件项目测试类似,这里不多赘述;重点介绍机器学习模型测试。

模型测试类型

模型的测试通常要关注以下几种类型:

度量指标效果

度量指标效果指的是检验模型的评估结果如何,即验证模型的正确性。常用评估指标有准确率、精准率、召回率和AUC等等。比如,准确率越高越好,AOC曲线下包含的AUC面积越大越好。

泛化能力

模型在末知数据上的预测能力称为泛化能力,通过数据拆分的方式从数据集中隔离出一份测试数据,用模型末知的这部分测试数据来验证模型泛化能力。常用数据集拆分方法有留出法交叉验证、k折交叉验证、留一法交叉验证以及自助采样法(参见《机器学习测试-入门篇》)。

鲁棒性

又称为健壮性,是指一个计算机系统在执行过程中处理错误,以及算法在遭遇输入、运算等异常时继续正常运行的能力。鲁棒性在机器学习领域是指机器学习系统对微小扰动的恢复能力。例如,在输入图像中加入少量噪声,原本准确度非常高的图像分类模把大熊猫识别成了猴子。

安全性

安全性是指模型抵御通过操纵或非法访问机器学习模型而造成的潜在危害或损失的能力。如果模型的鲁棒性不好,模型就容易遭受数据中毒攻击或训练过程中毒攻击。例如,模型训练和测试过程中数据加入噪声,使用的模型准确度变差;在模型训练过程中攻击模型的参数等,造成模型性能下降或破坏。安全性还包括敏感数据(隐私信息),在训练过程中需要去除敏感特征(比如:身份证、电话等)。

可解释性

可解释性是指对于模型的行为作出人们所能理解的解释。通常一些决策任务,需要考虑模型的可解释性。比如医疗预测模型,终端用户只有在理解了机器学习模型背后的决策逻辑,才会接受和信任此模型做出的决策。当然,在机器学习的众多算法中,有的模型是很难解释,例如深度神经网络。

公平性

公平性是指确保机器学习模型做出的决策是公正的,不致于引发人权、歧视、法律以及其他伦理方面的问题。通常敏感的、需要保护以避免出现不公正的特征称为保护特征或者敏感特征,比如:种族,肤色,性别,宗教,国籍,残疾,退伍军人以及遗传信息等。

模型效率

模型效率是模型构建和预测的速度(对等软件性能),与传统软件的性能测试雷同。

雷雨预测模型测试

接下来,以具体例子为样,进一步详细介绍机器学习项目如何做测试?

模型构建全流程

天气精灵APP,会对未来8小时的气象进行预测,有雷雨会报警。其中,气象预测是由机器学习模型完成。典型的APP基础应用+雷雨预测模型。APP应用测试与传统软件类似,这里不费笔墨。重点还是机器学习模型。先了解一下模型构建全过程,参见天气精灵APP的数据通道架构图。

网上数据

从网上下载气象数据,(包含temperature、dewpoint、humidity、pressure等),读取500天数据。

数据预处理

去掉缺失值

特征工程

对temperature、dewpoint、humidity、pressure等,求min、max、mean值。

模型构建

数据集拆分80%做训练集、20%做测试集;选择LinearRegression构建模型。

评估指标

平均绝对误差、中位数绝对误差,通过指标来评价模型性能。

模型发布

评估指标达到预期标准后,注册发布模型。

训练通道

首先,加载网上下载的500条气象数据;经过数据预处理(即:去掉缺失值);然后,进行特征处理(即:计算min、max、mean);最后,拆分数据集,80%训练集传到LinearRegression算法进行训练;20%的测试集用来评估模型;评估指标达到预期发布模型。

预测通道

首先,读取仓库中存储的采集数据,经过数据预处理(即:去缺失值);然后,进行特征处理(即:计算min、max、mean);最后,特征传入模型并预测。模型预测结果最终同步到APP DB中,APP根据是雷雨进行报警处理。

模型测试范围

从模型的全流程来看,测试范围即对训练通道与预测通道全流程进行测试。

数据处理:

load.py预处理去掉缺省值、process.py特征处理计算min、max、mean,split.py对数据集进行二八拆分,每一步处理逻辑进行测试。可以通过脚本构造测试数据,执行结果与预期结果比对验证正确性。

模型验证

模型测试参照上节提到的模型测试类型。对于雷雨预测模型,检验它的平均绝对误差、中位数绝对误差是否在预期的阈值,通常先用训练集进行评估(也称为封闭测试),再用留出的20%测试集来进行评估,检验模型的泛化能力。雷雨预测模型并没有使用敏感特征,不涉及隐私安全。鲁棒性方面,传入了非法特征与非法value验证,模型没有出错。本轮并没有对测试数据进行其它干扰来测鲁棒性。

预测结果

预测通道中的predict.py,其预测结果是概率(比如:0.3)。测试中,使用敏感数据与非敏感数据来测试。对敏感测试数据,执行结果概率值达到预期的雷雨概率范围;对于正常数据预测结果在正常天气的概率范围。

性能/效率

测试数据处理性能、模型效率,比如:响应时间不超3s。

自动化测试构建

单元测试

训练通道、预测通道全流程中,每步处理逻辑进行单元测试覆盖;对于模型算法代码的单元测试可验证训练参数与特征选择。

集成测试

数据处理端对端集成测试,直接比对预期确定的结果。模型部分的集成测试,验证评估指标的结果在预期的某个阈值范围。比如:误差小于0.01。预测通道端对端集成,构建固定的敏感数据与非敏感数据,预测结果在0.0~1.0之间,且是某个预期确定值。因为数据不变、且模型不变时,其预测结果值不变。

模型线上测试

天气精灵APP发布上线,对于线上测试与监控关注以下几方面:

数据通道正确性

验证线上数据通道的每步处理结果都正确无误。

模型正确性

发布上线后,可尽早验证的是模型运行正常,即模型可以成功预测出结果。对于准确度暂时无法确定,只有运行一段时间后收集预测结果与实际发生结果,进行对比分析,才能得出模型在线上的性能表现。

数据通道&模型预测效率

验证线上数据处理通道效率(即性能)和模型预测效率(即预测速度)。定期检测或监控,效率下降到目标值,及时排计划调优。

模型时效

数据随时间而变化,当模型没有得到定期重新训练,则模型质量会下降。跟踪自模型进行新数据再训练以来的时间,并设置报警阈值。一旦模型下降到报警阈值,收集记录追踪时间以内的新数据,再进行重新训练、并调优模型。

A/B testing

如果是模型更替新版本发布上线,那么,需要进行A/B testing。进行蓝绿部署后,新模型运行一段时间后,对比新旧模型准确度。如果,新模型表现优于旧模型;那么,线上成功切换至新模型;否则,新模型重新回笼训练调优。

机器学习模型的测试还在慢慢成熟与积累当中,希望更多小伙伴一起学习探讨。

如果觉得《机器学习中qa测试_机器学习项目测试怎么做?(看实例)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。