00:00
第五章模型评估与改进。前面讨论了监督学习和无监督学习的基本原理,并探索了多种机器学习方法。本章我们将深入学习模型评估与参数选择。我们将重点介绍监督方法,包括回归与分类。因为在我们监督学习中,模型评估与选择通常是非常定性的一个过程。到目前为止,为了评估我们的监督模型,我们使用群testli函数将数据集划分为训练集和测试集,在训练题上调用B方法来构建模型,并且在测试题上用school方法来评估这个模型。对于分类问题而言。就是计算正确分类的样本所占的比例。下面是这个过程的一个示例。
03:56
请记住,之所以将数据划分为训练集和测试集,是因为我们想要度量模型对前所未见的新数据的泛化性能。我们对模型在训练之上的拟合效果不感兴趣,而是想知道模型对于训练过程中没有见过的数据的预测能力。
04:16
本章我们将从两个方面进行模型的评估。我们首先介绍交叉验证,然后讨论评估分类和回归性能的方法。其中前者给出一种更可靠的评估泛化性能的方法,后者是在默认度量score方法给出的精度和R方分数之外的方法。我们还将讨论网格搜索,这是一种调节、监督模型参数及获得最佳泛化性能的有效方法。5.1交叉验证交验证cross validation是一种评估泛化性能的统计学方法,它比单次划分训练级和测试题的方法更加稳定、全面。在交叉验证中,数据被多次的划分,并且需要训练多个模型。最常用的交叉验证是K折交叉验证k for cross validation,其中K是由用户指定的数字,通常取五或者十。在执行五折交叉验证时,首先将数据发送为大致相等的五个部分,每一部分叫做折后的。接下来训练一系列模型,使用第一折作为测试集,其他折作为训练题来训练第一个模型。
05:24
利用其他值的数据来构建模型,然后在第一折上评估精度,之后构建另一个模型。这次使用第二折作为测试机,七级作为训练题。随后利用第三折、第四折、第五折依次作为测试题,重复这样一个过程。对于将数据划分为训练集和测试集的这五次划分,每一次都要计算一个精度,最后我们得到了五个精度值。
06:11
就像这一幅图。通常来说,数据的前1/5是第一折,第1/25是第二,以此类推。5.1.1在评论中的交叉验证。S论是利用model selecting模块中的DA函数来实现交叉验证的cross DA Co函数的参数是我们想要评估的模型训练数据与真实标签。我们在艾瑞数据以上对lotisticression进行评估。
08:46
需要注意这一行代码。我跟书上不一样,我显示了指定的关键字参数CB。
09:01
这是因为S论在新版本中对cross v函数的CD参数默认值做了修改。书上写的默认使用的是三条交叉验证。在新版本中肯定不是三折,具体是多少折?我们先来看一下这个函数,这是对应的函数原型,它表示什么意思?评估交叉验证分数很简单,参数X实现fe方法的估计器实例X。一个类似二维数组对象需要拟合的数据Y,一个类似于一维数组对象cos,它默认是呢监督学习的目标值。必须满足X和Y长度相等。Groups稍后会讲到一个类似一维数组对象,可选参数默认是,那数据中的分组必须满足groups和Y长度项的SC一个字符上或者一个可调用对象,可选参数默认是,那模型评估准则如果是一个可调用对象,调用时必须给出三个参数,第一个参数对应这里的X tomato,第二个参数对应这里的X,第三个参数对应这里的Y。
10:14
而且该课结论对象只能返回一个值,如果是,那就使用该参数S。这样一个参数。它的方法,如果这个参数有这么一个方法的话,如果是一个字符串,情况就有些复杂了,一般情况是需要分成两种情况,准确来说是需要分成三种情况,分类、回归和聚类。嗯。聚类刚才也说了。模型评估与选择是个非常定性的过程,所以我不去考虑聚类况,我们一般是考虑分类和回归两种情况。如果是一个分类任务,常用的取值可以看一下表accuracy对应精度。其余选项稍后会讲到,或者说我在后面会讲到。
11:04
先了解一下就行,看不懂没有关系。如果是一个回归任务,长度取值可以看见吧。R2对应R方分数。Me quite对应的是均方误差,Me absolute error对应的是平均绝对误差。均方误差就是均预测值减去真实值差的平方。取平均值,这就是均方误差。平均绝对误差就是把预测值减去真实值平方改成绝对值。它的差的绝对值。再取个平均。CP参数整数交叉延制生成器对象或者C列可选参数默认是纳可能取值以及对应的说明可以看下表,CB等于那等价与CB等于五,CB是整数就是交叉验证整数,CB是交叉验证生成器对象,就是对应交叉验证方式,CB是强度围绕的序列的可迭代对象,长度围绕的序列中的两个元素是两个类似积为的整数数组对象,第一个数组元素值。
12:15
表示训练集在原始数据集中的索引,也是训练集的索引。第二个数字元素值表示测试题在原始数据集中的索引。需要注意0.22版本CB等于,那等价于CP等于三改成了等价于CP等于五,也就是说。在0.22版本。CD默认执行的是三者交叉验证,改成了默认执行五折交叉验证。所以我为了和书上一样返回三个精度值。我需要显示的修改CV的默认值。还有四个参数一并看完,N jobs,整数可选参数默认是呢?使用的CPU的内核数量n jobs等于,那等价于n jobs等于一,N jobs等于负一表示使用全部的CPU内核,我Bo了解一下整数可选参数默认是哪?对应冗余级别his parents。
13:17
字典可选参数默认是那参数matter的face方法的外参数格式,它的键必须是字符串对应face方法的额外参数的参数名。Pre整数或者字符串可选参数默认字符串二乘上in jobs这么一个表达式并行执行期间分派的任务数量,当分派的任务数量大于CPU的内核数量的时候,减小该数值有利于避免内存空间占用的急需增加。关于取值及对应的时候明可以看一下表。可以PE enough,它就是一次创建所有的任务,将其用于轻量级和快速执行的任务,可以避免分批次创建带来的时间开销。
14:06
Practice它是整数,它就对应任务的数量。practice它字符串,它是对应的是含jobs的算数表达式。当然刚才也说了,你可以通过修改关键字参数。C来改变折数。
15:07
总结,交叉验证精度的一种常用方法是计算它的平均值。我们可以从交叉验证的平均值中得出结论。我们预测模型的平均精度又为96%,观察五折交叉验是得到所有的精度值,我们还可以发现折与折之间的精度有较大的变化。范围从。
16:04
100%的精度,一直到90%的精度。这可能意味着模型强烈依赖于将某一个值用作测试,但也可能只是因为数据集的数据量太小了。5.1.2交叉验证的优点使用交叉验证,而不是将数据单次划分为训练集和测试集。这种做法具有下列优点,首先请看Li,对数据进行随时划分。想象一下,在随机划分数据时,我们很幸运,所有难以分类的样例都在训练题中。在这种情况下,测试题将仅包含容易分类的样例。并且测试题的精度会高的不切实际。相反,如果我们不够幸运,则可能一期的将所有难以分类的样力都放在测试集中,因此得到了一个不切实际的积分。
17:02
如果使用交叉验证的话,每个样力都会刚好在测试题中出现一些次,每个样力位于一个折中啊,每个折都在测试题中出现一次。因此模型需要对数据集中所有样本的泛化能力都很好,才能让所有的交叉验证得分及其平均值都很高。对数据进行多次划分还可以提供我们的模型对训练选择的敏感型信息。对于iOS数据集,我们观察到精度在90%~100%之间,这是一个不小的范围,它告诉我们将模型应用于新数据时,在最坏情况和最好情况下的可能的表现。与数据的单次划分相比,交叉验证的另一个优点是我们对数据的使用更加的高效。在使用群态时,我们通常也就是默认情况将75%的数据用于训练,将25%的数据用于评估。在使用五折交叉验证时。在每次迭代中,我们可以使用4/5百分之八十的数据来拟合模型。在使用使者交叉验证时,我们可以使用9/10百分之九十的数据来拟合模型。
18:10
更多的数据通常可以得到更为精确的模型。交叉验证的主要缺点是增加了计算成本。现在我们要训练K个模型而单个模型,所以交叉验证的速度要比数据的单词划分大约慢了K倍。重要的是要记住,交叉验证不是一种构建可应用于新数据的模型的方法。交叉验证不会返回一个模型,在调用pro e score时,函数内部会构建多个模型。但交叉验证的目的只是评估给定算法在特定数据以上定量后的泛化性能的好坏。5.1.3分层K折交叉验证和其他策略。将数据集划分为K折时,从数据的前K分之一开始划分。正如上一节所述,这可能并不总是一个好主意。例如我们来看一下I数据集。
19:41
如你所见,数据的前1/3是内电力,中间的1/3是内电一。最后的1/3是类别二。想象一下,在这个数据集上进行三折交叉验证,第一折将是包含类别率,所以在数据的第一次划分中,测试题将只包含类别零,而训练题只包含类别一和二。由于在三次划分中,训练题和测试题的类别都不相同,因此这个数据集上的三者交叉验证精度为零就没有什么帮助,因为我们在I瑞上可以得到比零好的多次精度。
20:17
由于简单的K折策略在这里已经失效了,所以在论在分类问题中不使用这么一种策略,而是使用分层K折交叉验证。Fi key的cross validation,在分层交叉验证中,我们划分数据,使每个折中类别之间的比例与整个数据集中的比例是相符的。就像这样一幅图。
21:01
举一个例子,如果90%的样本属于类别A,而10%的样本属于类别属于类别B,那么。分存交叉验证可以确保在每个轴中90%的样本是以类别A,而10%的样本数与类别B。使用分层交叉验证而不是简单的K轴交叉验证来评估一个分类器,这通常是一个好处意,因为它可以对泛化性能做出根子操的估计。在只有10%的样本属于类别B的情况下,如果使用标准的配格交叉验证,很可能某个折中将只包含类别A的样本利用这个值作为测试集的话,无法给出分类器的整体性能的信息。对于回归问题,S分论默认使用标准配置交叉验制,也可以尝试让一个则表示回归目标的不同取值,但这并不是一种常用的策略,也会让大多数用户感到很意外。对交叉验证的更多控制。我们之前看到可以利用CD参数来调节Co v al or多使用的折数,但S论允许提供一个交叉验证分离器cross validation split作为CD的参数来对数据划分过程进行更清晰的控制。对于大多数使用场景而言,回归问题默认的配折交叉验证以及分类问题的分层配折交叉验证的表现都很好。
22:26
但有些情况下,你可能希望使用不同的策略。比如说,我们想要在一个分类数据集上是有标准配折交叉验证来呈现别人的结果。为了实现这一点,我们首先必须从model selecting模块中导入KO的分离器内,并用我们想要使用的合数来将其实例化。
23:11
然后,我们可以将k four的分离器对象作为CD的参数传入函数cross v。通过这种方法,我们可以验证,在iOS数据集上使用三者交叉验证不分层确实是一个非常糟糕的主意。
24:38
请记住,在L数据集中,每个折对于一个类别,因此学不到那任何的内容。解决这个问题的另一种方法是将数据打乱来代替分层,以打乱样本按标签的排序。可以通过将KSO的杀果参数设置为数来实现这么一点。如果我们将数据打乱,那么还需要固定state以获得可重复的打乱结果,否则每次运行Co al将会得到不同的结果。
25:10
因为每次使用的是不同的划分,这可能并不是一个问题,但可能会出人意料。在划分数据之前将其打乱,可以得到更好的结果。流一法交叉验证另一种常用的交叉验证方法是流一法零,你可以将留一法交叉验证看作是每个轴只包含单个样本的K轴交叉验证。对于每次划分。
26:01
你选择单个数据点作为测试集。这种方法可能非常的耗时,特别是对于大型数据集来说,但在小型数据集上有时可以给出更好的估计结果。
27:40
打乱划分交叉验证另一种非常灵活的交叉验证,特别是打乱划分交叉验证spli vaation。在打乱划分交叉验证中。每次划分为训练集取样纯size个点,为测试机取样TEST3个点。注意训练集取样的点和测试题取样的点。
28:06
构成的两个集合不相交。将这一方法重复N次。这一幅图给出的是对包含十个点的数据集。
29:06
进行四次电量划分,每次的训练集包含五个点,测试集包含两个点。你可以将垂size和text size设置为整数来表示两个集合的绝对值大小。也可以设置为浮点数来表示占整个数据集的比例。下面的代码将数据集划分为50%的训练集和50%的测试集。共运行14节的。
31:39
打论划分交叉验证,所以在训练集和测试及大小之外独立控制迭代次数,这有时是很有帮助的。它还允许在每次迭代中间使用部分数据,这可以通过设置群size与test size。两者之后不等于一来实现。
32:02
当群S和TS都是负电数的情况下。如果当纯size和text size都是整数的情况下。设置它们的和不等于。样本数量也可以做到只使用部分的数据。用这种方法对数据进行二次采样,可能对大型数据上的试验很有用。Sha split还有一种分层的形式及名称是ctified Sha split,它可以分类,它可以为分类任务提供更加可靠的结果。看到分组交叉验证另一种非常常见的交叉验证仅适用于数据中的分组高度相关时。比如,你想构建一个从人脸图片中识别情感的系统,并收集了100个人的照片的信息集,其中每个人都进行了多次拍摄,分别展示了不同的情感。我们的目标是构建一个分类器,能够正确识别未包含在数据集中的人的情感。你可以使用默认的分层交叉验证来度量分类器的性能,但是这样的话。
33:12
同一个人的照片可能会同时出现在训练这个测试题中。对于分类器而言,检测训练集中出现过的人脸情感比全新的人脸要容易得多。因此,为了准确评估模型对新的人脸的泛化能力。我们必须确保训练集和测试集中包含不同人的图像。为了实现这一点,我们可以使用group k,它以groups数组作为参数,可以用来说明照片中对应的是哪一个人。这里的groups数组表示数据中的分组。在创建训练值和测试题的时候,不应该将其分开,也不应该与类别标签弄混掉。数据分组的这种例子常见医疗应用。
34:03
你可能拥有来自同一名病人多黑样本,但小杨将其淡化到新的病人,同样在语音识别领域。你的数据集中可能包含同一名发言人的多条记录,但你希望能够识别新的发言人的讲话。下面这个数据用到了一个由groups数组指定分组的模拟数据集。这个数据集包含12个数据点,且对于每个数据点,Groups指定了该点所属的分组。想想病人的例子,一共分成了四个组。嗯。
36:54
这个group的数图标是。前三个样本属于第一组,也就是组号为零。
37:03
这四个样本。属于第二组,也就是组号为一。这样两个样本属于第三组,组号五幺,最后三个。属于第四组,也就是组号为三。样本不需要按分组进行排序,我们这么做只是为了便于说明基于这些标签计算得到的划分。
38:04
就像这一幅图所展示的。如你所见,对于每次划分,每个分组都是整体出现在训练集或测试集中的。Sex论中含有很多交叉验证的划分策略,适用于更多的使用场景。你可以在sex的用户指南页面查看这些内容。但标准的key Ford street key Ford和group key Ford。是目前最常用的几种。
我来说两句