00:01
继续上一次的内容,看到书上211页三、使用不同的交叉验证策略进行网格搜索。与cross v al store类似,Gra CV对分类问题默认使用分层K折交叉验证,对回归问题默认使用K折交叉验证。但是你可以传入任何交叉验证分离器作为graph测试CV的CV参数。正如之前所说的,对交叉验证的更多控制的部分果树。特别的,如果只想将数据单次划分为训练集和验证集,你可以使用shale split或strict find shale split,并设置等等于一。这对于非常大的数据集或非常慢的模型可能会有所帮助。一嵌套交叉验证在前面的例子中,我们先介绍了将数据单次划分为训练机、验证机与测试机,然后介绍了将数据划分为训练集和测试集,在在训练集上进行交叉验证。在前面,在使用gra测试CD时,我们仍然将数据单次划分为训练集和测试题,这可能会导致结果不稳定,也让我们过于依赖数据的此次划分。我们可以再深入一点,不只是将数据原始数据一次划分为训练集和测试,而是使用交叉验证进行多次划分,这就是所谓的嵌套交叉验证next cross valiation在嵌套交叉验证中,有一个外存循环,便利将数据划分为训练器和测试题的所有划分。对于每种划分都运行一次网格搜索,对于外层循环的每种划分可能会得到不同的最佳参数。然后。
01:51
对每一种外层划分,利用最佳参数设置计算得到40级分数。这一过程的结果是由分数组成的列表不是一个模型,也不是一种参数设置。这些分数告诉我们在网格找到的最佳参数下泛化性能的好坏。由于嵌套交叉验证不提供可用于新数据的模型,所以在寻找可用于未来数据的预测模型时很少使用它,但是它对于评估给定模型在特定数据集上的效果很有用。
02:27
在在论中实现嵌套交叉验证很简单,我们调用cross b or,并用gra search c的一个实例作为一个模型。看到结果。嵌套交叉验证结果可以总结为SBC。在I数据集上的交叉验证的平均精度。
03:05
大约是96.666%。不多也不少,这里我们在内存循环和外层循环中都使用了五层。分成五折交叉验证。由于parent GR包含36种参数组合,所以需要固定36乘以五再乘以五等于900平模型,导致嵌套交叉验证过程的代加红包。这里我们在内存循环和外存循环中使用相同的交叉验证分离器,但这不是必须的,你可以在内存循环和外存循环中使用交叉验证策略的任意组合。理解这么一行代码。的内容可能有点困难。将其。展开为负循环可能会有所帮助。
04:03
正如在下面这个简化的实践中。正如在下面这个简化的实线中所做的。是一样的。注意到这里。负的NP.if。RF。把它扩充出来就是infinity。Infant是怎么拼写的?看到这里。负的RF表示负的,也就是初值负无穷。
05:02
下面我们在艾瑞数据集上运行这个函数。二交叉验证与网格搜索并行。虽然在许多参数上运行网格搜索和在大型数据集上运行网格搜索的计算量可能很大,但令人尴尬的是,这些计算都是并行的cur。也就是说,在一种交叉验证划分下,使用特定参数设置来构建一个模型与利用其他参数的模型是完全独立的。这使得网格搜索与交叉验证成为多个CPU内核或集群上并行化的理想选择。你可以将n job参数设置为你想使用的CPU内核数量,从而在gra设置CP和pro v al中使用多个内核。你可以设置n job等于负一来使用所有可用的内核。
06:01
你应该知道S不允许并行操作的嵌套,因此如果你在模型比如随机森林中使用nro选项,那么就不能在gra设置CV,使用它来搜索这个模型。如果你的数据集合模型都非常的大,那么使用多个内核可能会占用大量的内存。你应该在并行构建大型模型时坚持内存使用情况。还可以在集群内的多台机器上并行运行网格搜索和交叉验证,不过在写作本书时,S量还不支持这一点,现在支不支持我也不是很清楚。但是如果。你觉得?像这样编写for循环。非常的麻烦,并且非常的浪费时间,可以使用attention并行框架来进行并行网格搜索。对于Spark数据库,也就是大数据框架Spark的用户。
07:01
还可以使用最新开发的Spark智能包,它允许在已经建立好的Spark集群上运行网格搜索。
我来说两句