📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
最近有细心的测试同学发现了我写的一些关于模型算法测试的专栏,就私信我,说是不是要把模型算法测试的一些系列方法都要写出来呢。
嗯,按照计划确实是这样的, 因为正如开篇所说,模型算法测试在当前测试领域还不是很完善,而且也是属于高端的测试技术,很多测试同学也不是很了解。
所以,我就准备让模型算法测试走进测试领域,让更多的测试同学知道模型算法测试,了解模型算法测试,掌握模型算法测试,及最后能把模型算法测试应用于实际工作中,这也是我在推出模型算法测试系列文章的初衷。
因为模型算法测试相对于传统测试,还是有很高的技术要求,所以,在读这些模型算法文章中,如果有些困难,也不要放弃或者灰心, 只要跟着我的脚步,沉下心来慢慢学习,再加上自己对编码、人工智能领域涉及到模型算法相关知识的储备及掌握, 我相信你也会跟我一样,完全掌握模型算法并应用于实际工作中。
这里再说一下,文章内容是结合我的企业中实际工作应用的内容,所以,如果有一些如,方法,代码等,你觉得不太适合你的企业,可以做一点适当的调整。
当然,我也会站在大多数的企业角度,争取达到让你开箱即用的效果。
好了,闲言少叙,书说简短,开始今天这篇模型算法测试之:鲁棒性测试。文末给大家整理了模型算法测试相关文章,欢迎积极点击阅读~
鲁棒性测试概述
说到鲁棒性测试,其实就是健壮性测试。
为什么这么说呢, 我分别在传统测试 和模型算法测试中,介绍鲁棒性测试,你就知道了:
在传统测试中,鲁棒性测试就是关注软件系统在异常情况下的行为,响应,动作等,这是通过模拟错误输入、环境变化、系统故障等情况来验证的。
在模型算法测试中,鲁棒性测试 则是在不同的噪声条件、数据缺失和数据异常等情况下,来对模型算法进行评估和验证。
所以,你看这两个都是验证系统或者模型的稳定性和可靠性。
看到这里,是不是就知道了,为什么要做鲁棒性测试了。
为了便于理解, 这里我也总结了几点:
1)数据不完美:作为技术人,我们必须知道应用中数据的异常情况,如噪声、缺失值、异常值等,这就需要鲁棒性测试来评估模型在不理想情况下的表现;
2) 模型稳定性:通过鲁棒性测试,确保模型在面对不同数据扰动时仍具有稳定的预测性能;
3)模型可靠性:通过鲁棒性测试,提升模型在实际场景中的可靠性,防止模型因数据问题表现失常;
鲁棒性测试方法
关于模型算法鲁棒性测试方法包含多种,这里我就介绍常用的方法:
1、噪声注入:
通过向数据集中添加不同类型的噪声(如高斯噪声、椒盐噪声等),评估模型在噪声数据下的表现,这种方法也可以测试模型对数据间不确定性的抗干扰能力;
2、模拟数据缺失:
通过随机删除数据集中的部分数据(重要的数据),模拟在数据缺失情况下,评估模型的表现,主要测试模型对不完美数据的抗干扰能力;
3、异常值处理:
通过引入异常值并评估模型在其存在条件下的表现,检测模型对异常数据的处理能力,可以测试模型在数据出现异常时的稳定性;
4、数据分布变化:
通过引入分布不同的数据集(主要是测试数据集)来测试模型的泛化能力和对数据分布变化的适应度;
5、降维:
通过对特征进行选择或降维处理,测试模型在数据维度降低时的表现;
这里说一下,常见的降维技术:主成分分析、线性判别分析、核PCA、t-SNE等
5.1 主成分分析:
即PCA,通过找到数据集的主成分,将数据投影到一个较低维的子空间中
5.2 线性判别分析:
即LDA,通过最大化类间方差与类内方差的比值来找到最优特征子空间
5.3 核PCA:
一种非线性降维方法,通过核技巧将数据映射到高维空间,再进行主成分分析(PCA)
5.4 t-SNE
一种常用于数据可视化的降维技术,特别适用于高维数据的非线性降维
6、交叉验证:
模型训练常用的方法,将数据集(训练集/验证集/测试集)分割多个子集,用不同的子集训练和测试模型,来评估模型的稳定性和泛化能力。
这里说明一下,不仅仅有交叉验证,还有K-折,S-折等,我会在后面的模型测试方法中详细拓展。
同样,便于你对测试方法的理解, 我也展示工作中的一些代码示例。
示例一:
高斯噪声注入
示例二
模拟数据缺失
通过以上两个实例,希望能提升你对噪声注入和 模拟数据缺失两种测试方法的理解。
鲁棒性测试流程
鲁棒性测试在模型算法测试流程,与传统测试或模型算法模糊测试、蜕变测试等流程大体一致,但是,也会有些区别,这里我就针对鲁棒性测试,进行拓展与介绍。
鲁棒性测试流程,同样包含:测试规划、数据准备、模型测试、结果分析。
但是这里我要详细介绍一些不一样的内容。
1.测试规划
测试方法选定:噪声注入、数据缺失模拟、对抗样本等;
测试数据准备:与实际测试场景相符合的数据,记住,这一点很重要;
选定评估指标:根据不同的模型类型,设定不同的评估指标,如分类模型、聚类模型等等,评估指标还是有差异的。
2.数据准备
准备不同类型、不同维度的数据,如:
生成或引入噪声:在测试数据集中引入噪声;
模拟缺失数据:通过随机删除等方式模拟数据缺失情况;
对抗样本生成:使用对抗样本生成技术合成对抗样本;
3.模型测试
针对上面准备数据的维度,对应进行测试,如:
噪声注入测试:在引入噪声数据集上测试模型性能;
缺失值测试:在缺失数据集上测试模型表现;
对抗样本测试:在对抗样本集合上评估模型鲁棒性;
4.模型结果评估与分析
针对不同结果进行分析、不限于:比对分析、优化方案、改进措施等。
5.报告编写
基于上面流程和测试结果,编写测试报告。
在上面5点流程中,我们需要重点关注 方案设定、数据准备和模型测试,因为这直接影响到模型的结果。
总结
鲁棒性测试是模型算法测试的重要组成部分,通过在不同数据条件下对模型进行全面评估,确保其在实际应用场景中的可靠性和稳定性。
当然, 通过这篇,也希望你不仅仅能知道什么是鲁棒性测试, 鲁棒性测试在模型服务中的应用,以及鲁棒性测试的流程及方法,同时,也希望你能通过在项目中的实际应用,来提升与优化更符合你的企业的模型算法的鲁棒性测试。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】