机器学习模型测试-入门篇

经常被问,机器学习模型怎么测试呢?和传统软件测试有啥差别?


与传统软件测试的差别

测试是验证被测对象是否符合预期。

不论是传统软件还是机器学习,测试目的都是检验被测对象是否符合预期。不同点在于:

  • 传统测试,检测程序的输出结果是否符合预期的正确值。通过对比实际输出与预期输出,相同则是通过,否则就是缺陷。
  • 模型却不同,模型的结果预先不知且不确定,所以,不同于传统测试。模型测试是通过检验一组带标签的数据的模型结果是否符合预期的准确率或误差,来评估模型的好坏。


    等于确实值 vs 满足概率

传统测试:检测程序的输出结果是否符合预期的正确值。
模型验证:通过检验一组带标签的数据的模型结果是否符合预期的准确率或误差,来评估模型的好坏。


模型测试有套路

数据 + 算法 = > 模型

通俗地讲,所谓模型,就是把大量的数据喂给算法,然后自行修炼成才。
测试模型,就是检验自行修炼成才的她,是否达到预期的标准,达到优秀标准可毕业(发布模型);如修炼不达标,则打回重新修炼。听起来不太好懂,先来看个日常生活中的例子。

套路引子

现有大量的动物图片,一位小朋友妞妞通过看这些动物图片就可以学会认猫咪。
妞妞的大脑结构是个黑盒,怎么运作并不清楚,只知道她读过一定量带标签(是猫为1,不是猫为0)的动物图片就能自学成才,识别出猫咪。
那么,怎么验证妞妞是真得学会了认猫咪?

先选考题:

  • 挑选大量她看过的图片(猫与非猫)
  • 再挑大量她没看过的图片(猫与非猫)

开始测验

  • 把妞妞看过的图拿来测试,并记录结果
  • 把妞妞没看过的图拿来测试,并记录结果

评估结果

  • 统计:测试看过的图的准确率
    • 比如是50%的准确率,说明她啥都没学,乱猜的答案。
    • 比如是95%的准确率。说明她真得学习了,但不确定是不是死记硬背的。
  • 统计:测试没看过的图的准备率
    • 如果测试看过的图,准确率是95%;再测试没见过的图,准确率是50%,那么,表明她是死记硬背,并没学会。
    • 如果测试看过的图,准确率是95%;再测试没见过的题,准确率也是95%以上的正确率。说明她真的学会了。

这里的妞妞就是机器学习模型的化身,检验妞妞是否学会识别猫咪以及识别的准不准的这个套路,就是模型测试的套路,一样一样滴。所以,模型测试就是通过检验一组带标签的数据的模型结果是否符合预期的评估指标(如:准确率)。

【特别注意】

  • 是“一组”带标签的数据、而不是“单一”或“少量”。
    因为一个或几个答对,不能说明真的学会了,也许是瞎蒙对的,有一定数量下的高正确率,才可充分说明是真的学会了。
  • 是“带标签”的数据,而且不是没标签的数据。
    因为不带标签,测试结果对不对无法断定,所以,一定的是用带标签的数据来测试,做模型评估。

专业术语

  • 评价指标
    评价指标也称性能度量。在机器学习领域,评估模型好与不好,用的是就是各种评价指标,通常不同的算法有不同的评价指标。常见的准确率、错误率、召回率等等,比如:准确率越高模型性能越好。
  • 泛化能力
    是指机器学习算法对于没有见过的样本的识别能力。好比让妞妞识别她之前没看过的图片,就是看她的泛化能力。
  • 过拟合
    当模型在训练集上表现很好,但在新样本上误差很大,称之为 “过拟合”。通常是由于模型的复杂度要高于实际的问题,导致模型死记硬背没有理解背后的规律。好比妞妞识别训练时看过的图片表现很好,但没见过的图片识别不准误差很大,就是过拟合。
  • 欠拟合
    和过拟合相对的现象,模型的复杂度较低,没法很好的学习到数据背后的规律。可理解为脑子过于简单、啥也没学到。

通过妞妞的例子,初识了机器学习模型测试套路以及专业术语,接下来细看机器学习模型测试。


机器学习模型测试

构建模型过程
纵观模型的构建过程,有三步:

  • 拆分数据集
    数据集经过特征工程后,需要拆分出训练集与测试集,训练集用来训练模型,测试集是用来验证模型性能表现。好比妞妞学习时看的图片用作训练集;用没学过的图片作为测试集。

  • 训练模型
    把训练集传入,算法进行训练,训练结束生成模型文件。

  • 评估模型
    模型训练完成后,会用测试集验证模型,通过评价指标来评估模型性能的好坏。比如,准确率越高模型性能越好。当然实际项目中,会使用多个指标综合评估。

构建模型

模型测试三步走
测试施展拳脚的位置也随着构建模型的三个步骤切入。

第一步 拆分数据集
通过妞妞的例子也了解到,模型评估很关键的一点就是测试集,那么,测试集的准备有哪些方法呢?
在机器学习中,测试集是通过对整个数据集的划分选取,一部分用于训练,另一部分用来测试。划分必须满足以下条件:

  • 训练集和测试集的分布要与样本真实分布一致
  • 训练集和测试集要互斥,即两个子集之间没有交集。

划分数据集可以选择采用:留出法,交叉验证法及自助法。

  • 留出法
    直接将数据集划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集。通常选择 70% 数据作为训练集,30% 作为测试集。
  • 交叉验证法
    交叉验证法(Cross Validation)的基础思路和留出法大致相同,都是讲数据集划分成训练集和测试集,而在划分细节上差异会比较大,而且交叉验证法还有诸多不同的分类形式。(比如:K-折交叉验证、留P验证等)
  • 自助法
    数据集分类时,如果我们对整体样本n进行n次有放回抽样得到n个样本,然后把抽到的n个样本作为训练集,其中会出现部分样本重复,同时有一部分样本一次也没被抽到,这部分作为测试集。

在测试过程中,根据实际情况,选取适合的拆分数据集方式,这也是测试人员可下功夫的地方,很多时候需要和数据科学家甚至客户一起沟通确定。

第二步 模型训练
读取数据特征、算法参数,开始训练,输出模型文件。
需要说明一下,算法不做测试,假设它是经过测试验证的。因为,大多机器学习领域用到的算法都是现成的,非常成熟了。如决策数、随机森林等。然而,这一环节需要测试的逻辑是:

  • 测试读取特征成功,且经过训练,成功输出模型
  • 测试训练模型的用时,资源占用(即性能测试)。

本次训练出来的模型性能好与不好,还不清楚,等用测试集测试检验后才可知。

第三步 评估结果
训练好的模型,要通过评价指标来验证模型性能的好坏。模型性能好可发布模型,模型性能不好需要重新训练。
在这里,通常需要和数据科学家以及客户一起制定评估指标,比如准确率要达到95%、召回率要达到85%才可通过。测试人员关注点:

  • 模型评估指标(与数据科学家及客户)
  • 如果指标自定义,还需要测试验证自定义的指标正确性
  • 评估时的性能测试

小结

本篇简单介绍了一些入门机器学习测试的相关知识,一句话总结:模型测试就好比学生考试。题库选题、测验、评分,最后决定是否升学。

非常感谢您的阅读,我们下期再见。预告下期分享机器学习项目测试策略篇。

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