00:00
大家好,欢迎大家来到腾讯AI课程,在今天的课程当中,我们将给大家讲到模型评估相关的一些知识,那在今天这些课程当中呢,我们希望通过内容的讲解,可以帮助大家了解,如果我们需要对模型做一个评估的话,我们的一个一般的流程,我们做这件事情的一个基本的过程是什么样的,第二点呢,我们希望给大家讲解到,呃,我们在离线实验当中。一般模型评估呢,我们会有离线和在线两种不同的方式,那第二个很重要的部分,我们就会给大家讲到在离线实验当中常见的评估方法和评估准则,那第三点呢,我们给大家讲解一下这种在线评估的方式啊,这个叫做AB test OK。所以我们的整个内容也是围绕着大家看到的这个部分去展开的,首先第一章呢,我们先给大家讲解一下模型评估的目标,那这里头涉及到模型评估涉及到的一些基本的概念,以及啊我们非常重要的一个部分叫做这个模型的泛化性能啊,所以在模型评估这个事情当中呢,或者说在它的范畴内呢,会涉及到一些基本的概念,比如说当我们提到模型评估的时候,其实我们指的事情是大家在右图看到的这样的一件事情。
01:23
我们会有一份数据集,所以我们在这份数据集上会有我们所谓的特征,或者叫做数据。啊,我们会有对应的标签啊,就是我们的label啊,所以我们在英文当中,我们把这个东西叫做feature啊,我们把这个东西叫做label,好,所以我们有了数据,我们有了标签,我们就可以通过监督学习的方法去学习出来从特征到标签的这样的一种变换或者映射,那我们最终学习出来的东西呢,就会以不同的形态去组织这个地方的映射啊,从特征到标签,从X到Y的这样的一个映射,所以我们有很多不同的方式,我们可以找一些大家之前了解的决策数这样的方法去做建模,我们甚至可以用到高级点点的神经网络,我们可以用知识摄像机去做分类。
02:18
我们可以有一些boosting的方法,我们甚至有布耶非耶斯网啊,他们都能去学习到从我们的X到Y,从我们的特征到标签这样的一个映射,那学习出来这个东西之后呢?呃,我们如果要去使用这个学习到的这个模式或者规律或者是模型,我们需要对它去做一个评估的事情,所以这个里面呢,评估这件事情是为了确保我这个模型在没有见过的这样一些数据上也能有好的结果。比如说大家现在看到这个例子呢,是一个试图去区分西瓜到底是一个好瓜还是一个坏瓜这样的一件事情,我们会找到不同的观测维度,比如说西瓜的色泽,西瓜的根蒂,西瓜的敲身等等这样的不同的维度来啊学习这样的一个模型,那我们会希望这个模型能在新的西瓜过来了之后,我能在不切开这个西瓜,我仅仅依靠西瓜的色泽,根蒂和敲身也能有。
03:18
好的结果,所以我们希望模型在新的数据样本上能有好的效果,所以这件事情是我们需要去做模型评估的原因,我们希望他在新的样本上有好的效果,或者说有好的泛化能力,那为什么说我们学习出来的这个规律和模式在新的样本上可能会效果不好呢?就会涉及到我们之前给大家讲到的一些概念,比如说啊,有一个概念叫做。偏差过大,那偏差过大呢,通常指的是模型的学习能力本身比较差,所以他可能并没有学习出来我们这个地方给定的数据和我的标签之间的这样的一些规律模式,所以这个时候我们会导致模型陷入到一种叫做嵌拟盒的这样的一种状态当中,所以当我们提到千拟合的时候,我们多半说的事情就是模型他学的不太够。
04:16
所以他连我这个地方给到他的这些数据,连我给到他的这样的一些练习题,他都做不好,那就更不要说在新的数据上能做的多好了,所以偏他可能会陷入到这种啊,偏差过大,或者说欠你和或者说学习的不好啊这样的一种状态当中。那大家见到的下一个概念叫做方差过大,或者是过拟合,所以什么叫做过拟合呢?过拟核通常是指的模型在你给的数据上学的非常的好哦,所以他很努力的在学习你给的这些题,只不过说他学习的方式呢,可能不是正儿八经的去发掘这些数据底层的一些模式和规律,而是直接把你的数据背下来。
05:02
所以它会去直接背诵啊,当我的色泽是青绿,我的根蒂是蜷缩,我的敲声是着响的时候,它是一个好瓜,当我的色泽是乌黑,我的根蒂是蜷缩,我的敲身是着响的时候,它是一个好瓜。所以他会直接把这个地方的色泽、根蒂和较深的训练数据当中的组合直接背下来。所以这个东西呢,会导致我在训练集当中的一些可能有问题的一些噪声的数据分布也被他背下来了,所以他学习到这个这个方法,或者这个数据的分布,数据的模式规律呢,就不是一个可以在新数据上有比较稳定结果的这样的一个结果,也就是说这个地方一和二的区别在于说一连你给的这些题他也没有学好,你就更不要说新样本了,而这个地方的方差过大过拟合,指的是说你给他的题他学的很好,但是他学习的方式呢,是以背诵的方式去学习,所以导致他的这个学习到的这个规律在新的样本上基本不可用。
06:10
所以这两种方式都会导致我的模型效果差啊,所以我们需要去做这个评估嘛,那所以这个地方的评估方法呢,其实我们评估的到底是什么呢?那这个地方有个概念叫做泛化能力啊,我们评估的就是这个方法,这个模型它的通用性啊,不仅仅是在你给的这些数据上,我们希望他具备通用性,我们希望他在新的样本上能够有好的结果。所以这个里面呢,我们会用一些性能度量指标来评估单个模型的好坏啊,这是我们希望通过动定量的方式来做这样的一个衡量,好那我们刚才提到了泛化性能这样的一个概念,所以泛化性能呢,实际上呃,刚才我也说过了,它本身表示的就是说这种模型,它它的一种通用的这个效果,或者说它用于解决一些新的数据的这样的一些这个表现出表现的一些效果,而不是他见过的这样的一些数据,所以这个里面呢,有一些东西会决定我这个泛化性能,或者说决定到底这个模型学到的是不是通用的这种规律模式啊,分别有学习算法本身的能力啊,也就是说你选的模型。
07:23
那有些模型呢,他可能选的会呃比较好,或者说学习能力会比较强,那他呃至少能够,嗯,尽量的去把这个里头规律和模式挖掘出来,那这个地方第二点呢,叫做数据的充分性,那数据的充分性指的是说你数据量的一个规模,这个和大家学习的过程是一样的,如果我给你很少的练习题,你只做很少的题目啊,除非你是一个天才啊,一般情况下呢,你做的练习题非常少,只有一道两道的时候呢,你在最终的考试当中不一定会有好的这个效果,而当你做大量的练习之后,你可能可以从大量的练习上总结出来一些做题的规律,从而在考试当中取得相对比较好的这个成绩啊。第三呢,是学习任务本身,呃,因为有一些这个学习的任务呢,本身它就比较难。
08:14
啊,就是比如说有一些这个学科啊,有一些语言的这个语种,它本身就比较难,所以这个时候呢,可能大家去学习这个东西呢,可能你说要有多大的泛化能力,或者说呃,能表现有多好,可能本身就比较难。所以啊,我们泛化能力呢,会由这样一些因素去影响,那下面我们要提一下,就是说当我们提到泛化的时候,当我们提到好的泛化能力的时候,实际上我们指的是第一比较小的偏差。也就是说,算法至少能在你给定的。数据集上。能够学得比较好。预估出来的结果能和真实结果他。比较接近。下面我们希望第二点是我们希望它有比较小的方差,也就是说训练样本算法本身,它不会因为你输入的数据而产出的结果产生极大的抖动。
09:14
因为极大抖动表示它非常的不稳定。OK,所以下面我们来到第二个部分,在我们了解了说,呃,我们去做模型评估是为了保证我们的模型具备比较好的泛化能力,以及泛化能力的各种细节之后,我们要给大家提到的就是,那你如何来做这个地方的模型评估这件事情呢?啊,这个地方呢,模型评估通常包括。连不同的评估方式,一种叫做离线实验的方法,一种叫做在线实验的方法,通常离线实验的方法是指的说,在我们机器学习这个应用机器学习去解决问题的这个过程当中,我们在我们的离线的阶段去完成的这个过程,因为大家一般情况下要去完成一个离线的一个实验,或者说完成一个机器学习去解决一个问题这样的事情,我们通常会有不同的阶段,我们需要在我们需要在这个呃原型设计阶段去完成,我们对于这个。
10:21
模型对于这个场景的一个抽象,然后利用这个模型去进行数据上的一些规律模式的总结,我们会在应用阶段去完成已经训练和到训练好的模型部署到线上去做对应的预估这样的过程啊,所以大家可以在这里可以看到我们的两个阶段。那比如说大家在这里看到的,实际上我们会有离线的阶段,我们会有在线的阶段,那离线的阶段更多的是从我的数据到我的模型。产出的这样的一个过程,在线的阶段是把这个模型去部署到线上,去,真的在新的数据上,在实时的数据上去预测,去拿到结果这样的一个过程。
11:10
那我们这个地方指的离线实验的方法,指的就是在我的离线得到模型的那个过程当中,能有一套实验的方法,帮助我去衡量,去评估我做的情况到底怎么样。那这个地方的离线的这个实验的方法通常会包含下面大家看到的。几个过程。第一个过程呢,我是会使用历史的数据去训练一个适合解决目标任务的一个机器学习模型。啊,所以我会找很多数据过来,然后我去找一个模型或者算法过来,然后我去训练一个模型。第二个过程呢,是对模型进行验证,就是我们叫做validation,英文当中与离线评估。然后第三点呢,是我会根据我的这个评估指标去做一个选择,我会选择出来比较好的泛化能力的这样的模型,用于真正的我线上的一个部署。
12:04
啊,主要是这样的三个阶段。好,那这里头我们刚才提到了,我们需要对模型去做验证和离线的评估,那这个地方的离线的评估,我们希望会有一些定量的东西来做评估,比如说这个地方会有不同的评估指标,评估标准啊,那评估指标会包括什么呢?会包括大家在这里看到的accuracy啊,准确率。会包括在啊,这个是分类当中的一个指标啊,叫做准确率,大家可以在我们另外一节课当中看到它详细的一个说明啊,那其实很好理解啊,就是分类问题当中呢,你会需要去把你的样本的分成啊,若干个类别当中的一个,那我最终会看这个分类的这个准确率到底怎么样啊,就是。OK,就是我最终的这个啊,分对的情况啊,给个占比啊,那还会有这个召回率,OK,这是分类问题当中的啊查准率啊,分类问题当中的auc啊,这是一个排序的一个指标,那这个指标呢,我们在呃,我们的这个模型的评估指标那个部分的那个那节课当中给大家做了详细的介绍啊,他们就是一些借助于一些数学的评估方式,在我拿到了我的预估的结果和我的标准答案之后,我对这两个方,这两个两组结果去做比对。
13:26
去衡量它到底做的效果好与不好啊,好与不好的程度,这样的一个这个数学上的一个定量的一个指标。那我们的部署阶段呢,是指的说,当模型达到了你设定的一个指标,比如说啊,你说我的准确率要达到80%,OK,我现在评估我的模型,在新的数据集上,我找了一份新的数据集过来,那啊,比如说验证集,我评估了我的效果已经达到了80%,我可以对他去上线了,那这个地方的deploy,实际上这个阶段呢,就是指的说我去把模型,把这些已经达到标准的这些模型部署上线这样的一个过程啊,所以我们上线,我们就可以进到我们的生产环境,也就是有新的数据,新的样本过来。
14:12
我可以对新的数据呢,去做做一个呃,这个预估啊,我们甚至可以用这份数据呢,去更新我的模型,或者说在做一些在线的一些评估。好,所以在线实验的这个方法呢,实际上啊,指的是说我在我的应用阶段对我的模型进行啊这个评估,所以所以这个地方呢,我我我们有不同的方式嘛,在离线评估当中,我们经常用什么,我们经常会用到一些啊,因为我们有标,我们有参考答案嘛,然后我们会比对参考答案嘛,所以我们会用比对参考答案的一些指标来做衡量,比如说啊准确率啊,比如说这个地方的精确率和召回率啊,那在在线评估当中,就是说我这个模型已经部署上线了,那我就直接根据我这个方法,用户的一个反馈,我来衡量我这个东西的好坏,那这里头使用的这个商业评估指标,可能会包括说,比如说用户的这个生命周期值啊,然后广告的点击率啊,用户的流失率啊,因为这些用户的行为会其实他表现的直接表现你这个模型它最终的一个效果啊怎么样。
15:19
所以大家看到上面这个离线或者是在线的方式呢,实际上都是模型的这个,呃,使用者呢,其实关心的一些指标啊,就是关心我最终的这个效一些,关心我关心的一些效果指标。那我们刚才提到了有离线的方式啊,有在线的方式,然后我们提到了离线和在线不同的,这个可能会观察的这样的一些指标啊,就是我们用于衡量我们效果好坏的这样的一些指标,那我们在线实验有什么样的方法呢?所以在线的方法呢,通常用到最多的,在各大公司当中用到最多的叫做AB test AB测试,那AB测试呢,实际上呃,它指的是这个我们在线的去做评估啊,对两组不同的方法下的这个数据去做一些,或者说两种不同的场景下的这个结果去做对比的这样的一种方法,呃,我们也把它叫做分割测试或者分筒测试。
16:21
其实在做事情很简单,就是啊,我的同样的一波用户啊,或者说我的同样的这个特性,具备同样特性的这样的用户,我们把它分成几组,然后我们去比较,呃,这几组用户呢,在我们不同的这个版本的网页呀,或者模型啊下面啊,它的一个效果啊,看看哪一组比较好,它的本质呢,其实就是一种实验的方法啊,就是我去把这个用户分一下桶,分一下流,然后用不同的这些用户呢,呃,就是说具备相同特质的这样的用户呢,去到不同的实验当中,在不同的模型表现下去看一看它效果的好坏,然后呢,我们给到用户之后,我们根据用户的反馈去做一些统计分析,我们根据这些统计分析去看我到底哪一个模型的效果会比较好啊,或者说更能达到我们期待的这样的啊预期。
17:15
那AB test呢,有它自己适用的条件,它的条件是存在明确的对照组和实验组啊。举个例子来说,在这个。在淘宝当中啊,或者说在某些电商当中,那我就可以直接对我的用户去做分组嘛。对吧,那我的用户呢,就会有啊,比如说我都是取的北京的用户,或都取的上海的用户,我都是取的女性用户,那其实这个就可以直接做对照,所以它啊这个里面呢,就是我们可以取出来所谓的对照组,对照组和实验组。然后我们能够设定合适的指标来衡量这个变化,比如说我就衡量啊,在这个电商里头用户的下单率啊,我们就关注下单率,所以呢,我就可以去做不同的实验,去看他们,呃,最最终对下单率的一个影响,OK,那。
18:05
ABS它适用的范围呢,首先是影响范围比较大的事情啊,就是增加一些新功能,一些界面里头增加新的内容啊,一些外观网站的外观变化啊,那这个是比较直接的用,会对用户呢,产生比较直接的影响,呃,比如说是十分复杂的一些改变,比如说排名的一些变动啊,就是我最终结果的一个续它的一个变动。再比如说第三点,我们不确定用户是否会观察到一些变化,比如说这个一呃一些页面的加载时间啊,我们去看用户的反应。那ABS它有没有一个基本的流程呢?是有的,所以它基本的流程包括说首先你要选择合适的效果评估指标,比如说我就关注呃,我们电商的一个下单率,好,我就选下单率作为它的评估指标。啊,那我们要去设计合适的这个实验框架,合适的实验框架,比如说那我如何对我的用户去做分组啊,我现在我的电商里头有这么多的用户,我怎么去做分组啊,那你可能会说OK,我从男的里头抽一部分出来啊,从女的里头抽一部分出来,构建一组,我再从这个男的里头抽同样的这个数量啊,女的里头也从从跟和刚才同样的数量又作为一组,那这个可能就是你的一个这个实验的一个框架啊。
19:18
对吧,啊,你可能会选这个随机实验啊,或者是你找一一组,刚才我说的找两组出来做对照啊,那再往下呢,就是我们需要去选择测试与对照的这个呃单元。其实他说的事情是对实验中的基本个体去做一个分组,那比如说谁应该是落到哪个实验当中,落到哪个组里面,我们会再接着去选实验与控制变量啊,比如说啊,那我就选了不同的网页对吧?啊就是呃,我就选了不同的呃网网页选了不同的模型啊,我选了不同的方法去做最终的排序,去把最终给到大家的这个搜索结果啊,去做一个呈现啊,比如说这个意思,那第再往下呢,就是我们需要去确定这个实验的周期和样本量。
20:05
比如说那你这个电商的这个实验呢,你会你直接会在线上做实验。那你是啊,这个实验三天呢,还是实验一个星期呢。这个是需要确定的,那你到底对多少群体拿来做实验呢?比如说是呃,这个10万用户还是100万用户,还是多少呢。啊,再比如说我们可以进行这个实验,呃,就是在这个基础上呢,我们可以进行这个实验,然后把这一段时间内的这个实验呢,它的结果取出来,我们会去获取数据,然后做一些分析,分析结果的同时,我就可以根据我关心的这样的一些评估的指标去确定到底哪一个。模型或者说哪一组实验下的效果是最好的?OK,下面我们要给大家提一提这个常见的模型评估的方法和它的啊这个一些细节的指标,所以这个地方提到的其实是说离线训练啊,就是我们刚才给大家提到的AB test呢,是一种在线的这种评估的方式,在线评估的方式呢,你无需去关注这个啊,就是。
21:13
不需要去关注这个模型的这个表现和真实的模型的这个预估值和真实值之间的差异,你只需要去关注你最关注的那些显性的指标,比如说用户的下单,比如说用户在页面的停留时间这样一些东西就可以了,但是如果今天大家做的是一个离线的实验啊,就是我们要有离线的评估方法,那这个时候你们没有办法让你没有办法去拿到这种动态的用户的反馈,动态的这个页面的反馈,所以呢,我们就基于我们的。标准答案,或者说我们真实的答案,然后和我们模型预估出来的答案,我去做一个比照啊,然后我去做评估,所以你要去做比照呢,这个地方很重要的一件事情是啊。你给到他去学习模型的那份数据集不能再用于评估了,什么意思呢?如果你给同学,你给同学们布置了一批作业,你让大家都好好做这个作业。
22:07
你最后考试的时候,又用这一批作业去作为考试题,那你这个考试可能就是一个没有多大区分度的考试,为什么呢?因为他这个同学们只需要把你那个作业里面的标准答案都背下来就可以了,他甚至不需要去挖掘这些题目的本质的规律,他只需要去背答案。那我就可以去完成啊,拿到很好的结果,所以这个时候呢,我们一定要留出来一份题,不能让他们提前看到,不能让他们去做练习,那份题可以用于真正的啊这个评估,所以我们需要把数据做一个划分啊,划分出来这个地方的训练集和测试集,当然了,我有不同的划分方法,比如说呢,我们这个地方会有流出法,交叉验证法和资出法,我们来给大家提一下,流出法很简单,它和大家想的一样,就留一份数据出来不就可以了吗?所以这个地方呢,大家要做的事情就是从原始,比如说呃,原始10万个用户当中,我留出来2万个用户,做2万个用户的这个样本。
23:09
或者说留出来这两位用户,2万个用户,我们采集到的这个真实的数据,去作为我们待会儿的评估不就好了吗。所以。这就是流除法。但流出法有些注需要注意的细节。举个例子来说,大家需要努力的去保证数据的分布一致性,比如说你在呃,我们的这个,就刚才说的电商当中,你留出来的那两个用户,得保证他和全体用户的呃,比如说年龄的分布啊是一致的,比如说男女的比例啊是一致的,所以这里头就会非常强调分层抽样。所谓的分层抽样,就是得保证他们的比例是一样的,比如说啊,原本的男比女是,呃,1:3,那这个时候在在我抽样出来的这部分数据上,或者说我预留出来这分数据上,我的男比女也应该是1:3,我可以去做多次划分,呃,我们留出来的这个数据呢,占总数据的比例呢,不能太大,也不能太小,因为如果太大了,呃,你已经拿掉这么多的数据出来做评估了,他不能去看,那你给到他去学习的数据量就太少了,如果这个时候你留出来的数据量太少,他可能会有一定的随机性,他的评估效果就不是太好了。
24:22
第二种方式叫做交叉验证。那交叉验证的意思是说,我把原始的数据切成K份,比如说这个地方呢,我们做K等于十这样的十折交叉验证,那我们这个时候做的事情就是把原始数据咔咔咔切成十份,然后标上012,布拉布拉布拉,一直到九。好,那下面我们做的事情呢,就是我轮番的用其中的九折啊,轮番的用九折去做我们的训练,然后我用剩下的一折去做我们的评估,所以这样的话,我们会拿到十个评估结果,对吗?因为每一折都会被当做测试集一次,或者当做验证集一次,所以这个地方呢,我们会产出十个评估结果,那我们会对这十个评估结果去做一个什么呢?
25:13
对,去做一个平均啊,作为它总体评估的一个效果的好坏,这就叫做交叉验证,还有一种方式叫做自助法。自助法呢,就比较有意思了,它会对原始的样本呢,去做有放回的采样,所以你原本有啊,比如说十个样本,它会对这十个样本呢,每次以呃伸手摸球的方式摸一个出来,再把它放回去,再重新摸一次,所以你可能会啊得到同样啊,你以这样的方式摸十次,你就可以得到呃十个样本,那但是这十个样本呢,它因为它是有放回的,有放回的方式会使得其中有一份样本是一样的,比如说这个地方X8啊,其实他被取了好几次啊,对吧。那我比如说我这个地方大家看到的,呃,下面也会有一些这个样本被取了好几次,对吧。
26:07
所以这个时候呢,你取出来的这个样本呢,实际上它会重复的出现啊,那你可以把没有出现的样本呢,视作这个地方的一个这个验证集,OK。好,所以那个大家在这里看到呢,就是我们使用这种诶重复采样的方式去采到和原来一模一样大小的数据集啊,这个时候呢,我们就用这分数据集做训练,然后用这部分数据集上没有出现过的啊,原本数据集当中出现过的这样的数据,作为我现在的验证集去做我的评估。啊,所以这是自助法。所以在这节课程当中,我们给大家介绍到了模型评估的目标,模型评估的整个过程啊,整个流程是什么样的,以及常见的一些模型,离线和在线的这样的一些评估方法方式。希望大家有收获,好,谢谢大家。
我来说两句