机器学习——网格搜索和交叉验证

    • 网格搜索

网格可以发现超参值的最优组合,从而达到进一步改进模型性能的目的。网格搜索方法的实现原理是:采用暴力穷尽搜索方式,不同的超参会被设置成列表中不同的值,每次评估参数合并后的模型性能,以获得集合中参数值的最优组合。


    • 为什么叫网格搜索?

以有两个参数的模型为例,参数a有3种可能,参数b有4种可能,把所有可能性列出来,可以表示成一个3*4的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid search


    • 交叉验证

交叉验证经常与网格搜索进行结合,作为参数评价的一种方法,这种方法叫做grid search with cross validation。sklearn因此设计了一个这样的类GridSearchCV,这个类实现了fit,predict,score等方法,被当做了一个estimator,使用fit方法。

该过程中:(1)搜索到最佳参数;(2)实例化了一个最佳参数的estimator;

    • 什么情况下可以用交叉验证调整模型的超参数?

一般来讲调整模型的超参数是在确定了一组初始参数后,在训练过程中人工的去调整。
一般在训练时,几个epochs结束后会跑一次验证集看看效果。(注意epochs的个数,验证得太频繁会影响训练速度)
这样做的第一个好处是,可以及时发现模型或者参数的问题,比如mAP不增长或者增长很慢等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。一般来讲,我们会隔一段时间保存神经网络的参数,称之为checkpoints,当我们中止训练后重新开始的时候,可以从checkpoints中恢复网络的权重,并且以根据验证集的情况进行调整后的超参数进行训练。
另外一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。当察觉到有过拟合的倾向是,我们可以停止训练,这种策略称之为早停(Early Stopping)。同时,还可以通过验证集对比不同的模型。在一般的神经网络中, 我们用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量;
    • 简单交叉验证的优缺点

优点:

 处理简单,只需随机把原始数据分为两组即可

缺点:

 但没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,得到的结果并不具有说服性。

    • 网格搜索的优缺点

在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值

你可能感兴趣的:(数据分析,python学习,python,sklearn)