机器学习测试基础——机器学习测试(8)

发表于:2020-10-20 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:融360 AI 测试团队    来源:51Testing软件测试网原创

分享:
  第8章 机器学习测试基础
  从前面的章节我们可以了解到机器学习模型表示一类软件,该软件从给定的数据集中学习,然后根据其学习到的规律对新数据集进行预测。换句话说,使用历史数据集训练机器学习模型,以便对新数据集进行预测。为了更好地保证其服务质量,机器学习模型部署到线上之前必不可少地需要经过测试,本章将重点介绍机器学习模型测试的一些基础知识。
  8.1 机器学习生命周期
  假如一个用户向银行申请贷款,银行该如何对这个用户进行评估?很明显,银行首先需要调查清楚他的资金储备和信用历史等,然后再决定是否给其放款。基于以上场景,我们开始构建机器学习过程。在这一过程中通常有数据工程师、模型算法工程师、开发工程师和测试工程师参与,数据工程师负责数据的收集和清洗,模型算法工程师负责模型的建立,开发工程师负责模型的部署,测试工程师则参与了几乎整个机器学习生命周期。整个机器学习生命周期如图8-1所示,灰色部分表示测试工程师参与的环节:
图8-1 机器学习生命周期
  1.定义问题
  使用机器学习术语表述上述例子,这个问题是一个二分类问题,即评估用户的信用:信用好可以放款,信用差则拒绝放款。针对这个问题,我们有哪些解决方案?人工审核或者采用机器学习的方式。假如确认采用机器学习方式,真实的业务场景适合哪种机器学习方式,比如有监督学习或者无监督学习。另外,业务对性能有多高的要求,是否需要在线实时计算或者至少要保证多大的并发量。最重要的是,我们应该如何衡量机器学习的结果,这个结果和期望相差多少,如何去减小这种差距。机器学习的第一步便是定义问题,需要我们团队成员共同思考,给出自己的建议和理解,确定解决问题的思路。
  2.数据收集
  在确定好目标和实现方式后,就进入到数据收集的阶段。在这一过程中,我们需要通过各种渠道收集与问题相关的数据,比如用户的信用逾期数据和订单数据等。其次还需要确认这些数据需要多大的体量,将占用多少的空间。为了获取这些数据,可以通过哪些方式,是否有法律风险,是否被许可。获取到数据之后,以什么样式存储方便操作,这些数据在存储中是否对敏感信息进行了加密处理。收集数据的数量和质量一定程度上决定了模型预测的效果,通常来说数据量越大训练出的模型质量越好。接下来我们还需要对数据集进行划分,以一定的比例划分为训练集和测试集。举个例子,以7:3的比例划分,数据集的7/10作为训练数据,剩下的3/10则是测试数据。
  3.特征工程
  第2步中获取到的原始数据由于可能存在空值或者错误值等,通常是不能直接应用于模型的,需要将其通过业务理解、数据变换、特征交叉与组合的方式转化成模型训练和预测可直接使用的特征。如图8-2所示,特征就是原始数据经过挖掘处理后的数值表示,获取特征的过程被称为特征工程。
图8-2 机器学习中的特征工程阶段
  ·数据探索
  基于实际业务场景理解数据的内容,发现数据和问题的关系。比如收入越高还款能力越强,逾期风险越小。
  ·数据清洗
  对获取到的原始数据进行标准化处理。一般是对脏数据(逻辑错误的数据、格式或者内容错误的数据和一些与问题并不相关的数据等)进行调整或者删除。此外原始数据中还可能含有大量的空值,我们应该根据字段的重要性,对空值字段进行删除或者填充数值。
  ·数据采样
  一般清洗过后未经处理的数据是正负样本失衡的,例如用85%为女生的样本调研人们对球鞋的喜爱程度,或者用85%为男生的样本调研人们对化妆品的喜爱程度。因此需要对清洗后的样本进行采样,采样方法有随机采样和分层采样。由于随机采样的隐患比较多,采用较多的为分层采样。
  ·特征挖掘
  基于业务需求、收集到的数据和技术(压缩感知,稀疏编码等),构造出能够帮助描述问题的特征。比如银行在判断是否给某个用户放款时,可以使用30天内信用卡是否逾期作为一维特征。
  ·特征选择
  特征选择的过程就是挑选出能够深刻描述研究问题的特征。如果我们构造的特征中,多数的特征不合适(与研究问题没有很大的相关性),那么模型训练的困难度和成本将会升高,甚至训练过程中会出现一些影响模型性能的错误。
  4.模型训练
  准备好特征之后,将进入真正的“机器学习”部分。
  ·模型选择
  实际中有很多不同类型的模型,比如逻辑回归、随机森林和神经网络等。我们可以根据实际的数据结构和业务需求做初步的筛选,如果数据是时序数据,擅长学习时序关系的模型是比较好的选择,如果是图片数据,那么卷积神经网络会更合适。当然也可以通过使用原始的参数训练很多的模型,对于每一个模型都评估它们的表现来确定最终模型。
  ·调参
  选定一种模型后,为了达到期望的模型预测效果,我们需要进行调参来优化模型。事实上,调参的方法并不能一概而论,更多的取决于模型算法工程师以往的经验。这些经验可能来源于:
  1)对模型评估指标的理解。
  2)对数据和业务的经验。
  3)通过遍历不断地评估模型,选择使模型效果最优的参数。
  调参的目的是为了提高模型的某个评估指标,比如想要提高模型在未知数据上的预测准确率,通常用泛化误差(Genelization error)来衡量。为了达到这个目的,我们需要考虑模型在未知数据上预测的准确率都受到哪些因素的影响,有针对性地去调节某个参数。最粗暴简单的调参,都是在学习曲线上轮流找最优值,以便能够将准确率修正到一个比较高的水平。例如随机森林的调参,为了降低复杂度,就可以将那些对复杂度影响巨大的参数挑选出来,研究它们的单调性,然后专注调整那些能最大限度让复杂度降低的参数。对于那些不单调的参数,或者会让复杂度升高的参数,我们就视情况使用[7]。
  ·模型评估
  在建模过程中,由于只使用了有限的数据,模型很可能会出现过拟合或者欠拟合的问题。为了解决这两个问题,我们需要一整套方法及评价指标来对模型进行评估。其中评估方法用于评估模型的泛化能力,而性能指标则用于评估单个模型性能的高低。
  在模型评估中,经常要对数据集进行训练集和测试集的划分,数据集划分通常要保证两个条件:
  1)训练集和测试集的分布要与样本真实分布一致,即训练集和测试集都要保证是从样本中独立同分布采样而得。
  2)训练集和测试集要互斥,即两个子集之间没有交集。
  基于划分方式的不同,评估方法可以分为:留出法,交叉验证法及自助法。基于不同方法的特点,在样本量较多的情况下,一般选择留出法或交叉验证法来对数据进行分类,在样本较少的情况下采用自助法。模型性能评估针对分类、回归、排序、序列预测等不同类型的机器学习问题,指标的选择也有所不同。
  分类问题中最常用的两个性能度量标准:准确率和错误率。这两种评价标准是分类问题中最简单也是最直观的评价指标。但它们都存在一个问题,在类别不平衡的情况下,它们都无法有效评价模型的泛化能力。即如果此时有99%的负样本,那么模型预测所有样本都是负样本的时候,可以得到99%的准确率。基于此种隐患的存在,我们又构造了其他相对公平评估指标,如精确率、召回率、ROC和AUC等。
  对于回归问题,常用的性能度量标准有均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等,具体指标的定义将在第10章给出。
  在机器学习领域中,对模型的评估非常重要,只有选择和问题相匹配的评估方法,才能快速发现算法模型或者训练过程的问题,迭代地对模型进行优化。
  5.部署
  机器学习生命周期的最后一步是部署,如果上述模型能够按照我们的要求以可接受的速度生成准确的结果,那么就可以将该模型部署到实际系统中。仅仅将模型接入生产环境就算部署完成吗?我们要清醒地意识到,随着数据的更新或者时间的迁移,模型效果会越来越差。在达到一定偏差后,需要对模型重新训练。因此,线上部署模型之后,还需要对其添加相应的监控以便及时发现问题。
  以上,我们从问题立项、数据收集、特征工程、模型训练到模型的部署,全面梳理了业务项目中机器学习的生命周期[8]。由于应用场景的不同,我们所做的可能有些许差别,但大同小异,都离不开“数据-特征-模型”这一线路。例如:我们会对问题进行定义,围绕问题会对数据进行探索,部署到生产环境后会监控我们的模型表现等。

查看《机器学习测试入门与实践》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号