机器学习项目测试怎么做?

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

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

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

模型测试类型

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

图1. 模型测试关注维度
  • 度量指标效果
    度量指标效果指的是检验模型的评估结果如何,即验证模型的正确性。常用评估指标有准确率、精准率、召回率和AUC等等。比如,准确率越高越好,AOC曲线下包含的AUC面积越大越好。
  • 泛化能力
    模型在末知数据上的预测能力称为泛化能力,通过数据拆分的方式从数据集中隔离出一份测试数据,用模型末知的这部分测试数据来验证模型泛化能力。常用数据集拆分方法有留出法交叉验证、k折交叉验证、留一法交叉验证以及自助采样法(参见《机器学习测试-入门篇》)。
  • 鲁棒性
    又称为健壮性,是指一个计算机系统在执行过程中处理错误,以及算法在遭遇输入、运算等异常时继续正常运行的能力。鲁棒性在机器学习领域是指机器学习系统对微小扰动的恢复能力。例如,在输入图像中加入少量噪声,原本准确度非常高的图像分类模把大熊猫识别成了猴子。
  • 安全性
    安全性是指模型抵御通过操纵或非法访问机器学习模型而造成的潜在危害或损失的能力。如果模型的鲁棒性不好,模型就容易遭受数据中毒攻击或训练过程中毒攻击。例如,模型训练和测试过程中数据加入噪声或,使用的模型准确度变差;在模型训练过程中攻击模型的参数等,造成模型性能下降或破坏。安全性还包括敏感数据(隐私信息),在训练过程中需要去除敏感特征(比如:身份证、电话等)。
  • 可解释性
    可解释性是指对于模型的行为作出人们所能理解的解释。通常一些决策任务,需要考虑模型的可解释性。比如医疗预测模型,终端用户只有在理解了机器学习模型背后的决策逻辑,才会接受和信任此模型做出的决策。当然,在机器学习的众多算法中,有的模型是很难解释,例如深度神经网络。
  • 公平性
    公平性是指确保机器学习模型做出的决策是公正的,不致于引发人权、歧视、法律以及其他伦理方面的问题。通常敏感的、需要保护以避免出现不公正的特征称为保护特征或者敏感特征,比如:种族,肤色,性别,宗教,国籍,残疾,退伍军人以及遗传信息等。
  • 模型效率
    模型效率是模型构建和预测的速度(对等软件性能),与传统软件的性能测试雷同。

雷雨预测模型测试

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

模型构建全流程

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

图2. 天气精灵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根据是雷雨进行报警处理。

模型测试范围

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


图3. 训练通道与预测通道
  • 数据处理:
    load.py预处理去掉缺省值、process.py特征处理计算min、max、mean,split.py对数据集进行二八拆分,每一步处理逻辑进行测试。可以通过脚本构造测试数据,执行结果与预期结果比对验证正确性。
  • 模型验证:
    模型测试参照上节提到的模型测试类型。对于雷雨预测模型,检验它的平均绝对误差、中位数绝对误差是否在预期的阈值,通常先用训练集进行评估(也称为封闭测试),再用留出的20%测试集来进行评估,检验模型的泛化能力。
    雷雨预测模型并没有使用敏感特征,不涉及隐私安全。
    鲁棒性方面,传入了非法特征与非法value验证,模型没有出错。本轮并没有对测试数据进行其它干扰来测鲁棒性。
  • 预测结果:
    预测通道中的predict.py,其预测结果是概率(比如:0.3)。测试中,使用敏感数据与非敏感数据来测试。对敏感测试数据,执行结果概率值达到预期的雷雨概率范围;对于正常数据预测结果在正常天气的概率范围。
  • 性能/效率
    测试数据处理性能、模型效率,比如:响应时间不超3s。

自动化测试构建

  • 单元测试
    训练通道、预测通道全流程中,每步处理逻辑进行单元测试覆盖;对于模型算法代码的单元测试可验证训练参数与特征选择。
  • 集成测试
    数据处理端对端集成测试,直接比对预期确定的结果。
    模型部分的集成测试,验证评估指标的结果在预期的某个阈值范围。比如:误差小于0.01。
    预测通道端对端集成,构建固定的敏感数据与非敏感数据,预测结果在0.0~1.0之间,且是某个预期确定值。因为数据不变、且模型不变时,其预测结果值不变。
图4. 自动化测试

模型线上测试

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

  • 数据通道正确性
    验证线上数据通道的每步处理结果都正确无误。
  • 模型正确性
    发布上线后,可尽早验证的是模型运行正常,即模型可以成功预测出结果。对于准确度暂时无法确定,只有运行一段时间后收集预测结果与实际发生结果,进行对比分析,才能得出模型在线上的性能表现。
  • 数据通道&模型预测效率
    验证线上数据处理通道效率(即性能)和模型预测效率(即预测速度)。定期检测或监控,效率下降到目标值,及时排计划调优。
  • 模型时效
    数据随时间而变化,当模型没有得到定期重新训练,则模型质量会下降。跟踪自模型进行新数据再训练以来的时间,并设置报警阈值。一旦模型下降到报警阈值,收集记录追踪时间以内的新数据,再进行重新训练、并调优模型。
  • A/B testing
    如果是模型更替新版本发布上线,那么,需要进行A/B testing。进行蓝绿部署后,新模型运行一段时间后,对比新旧模型准确度。如果,新模型表现优于旧模型;那么,线上成功切换至新模型;否则,新模型重新打回训练调优。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容