PyTorch模型调优的多个方法(附带实例)
当我们建立好相关模型以后,怎么优化建立的模型呢?本节介绍机器学习中模型调优的方法及其案例。
交叉验证的基本思想:将原始数据进行分组,一部分作为训练集,另一部分作为验证集。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此作为评价分类器的性能指标,使用交叉验证的目的是得到可靠稳定的模型。
交叉验证的常见方法如下:
这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次。
GridSearchCV 的名字可以拆分为两部分:网格搜索(Grid Search)和交叉验证(CV)。
网格搜索搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练模型,从所有的参数中找到在验证集上精度最高的,这其实是一个训练和比较的过程。
网格搜索可以保证在指定的参数范围内找到精度最高的参数,但是这也是网格搜索的缺陷所在,它要求遍历所有可能的参数的组合,在面对大数据集和多参数的情况下,非常耗时。所以网格搜索适用于三四个(或者更少)超参数,用户列出一个较小的超参数值域,这些超参数值域的笛卡儿积为一组超参数。
随机搜索使用的方法与网格搜索很相似,但它不是尝试所有可能的组合,而是通过选择每一个超参数的一个随机值的特定数量的随机组合,这样方便通过设定搜索次数控制超参数搜索的计算量等。
对于有连续变量的参数,随机搜索会将其当成一个分布进行采样,这是网格搜索做不到的。
交叉验证
交叉验证(Cross Validation,CV)也称为循环估计,是一种统计学上将数据样本切割成较小子集的实用方法,主要应用于数据建模。交叉验证的基本思想:将原始数据进行分组,一部分作为训练集,另一部分作为验证集。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此作为评价分类器的性能指标,使用交叉验证的目的是得到可靠稳定的模型。
交叉验证的常见方法如下:
1) Holdout验证
Holdout 验证将原始数据随机分为两组,一组作为训练集,另一组作为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率,以此作为分类器的性能指标。2) K折交叉验证
K 折交叉验证将初始采样分割成 K 个子样本,一个单独的子样本被保留作为验证模型的数据,其他 1K- 个样本用来训练。交叉验证重复 K 次,每个子样本验证一次,平均 K 次的结果或者使用其他结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次。
3) 留一验证
留一验证是指只使用原本样本中的一项当作验证数据,而剩余的则留下当作训练数据。这个步骤一直持续到每个样本都被当作一次验证数据。事实上,这等同于 K 折交叉验证,其中 K 为原样本个数。4) 十折交叉验证
十折交叉验证用来测试算法的准确性,是常用的测试方法。将数据集分成 10 份,轮流将其中 9 份作为训练数据,1 份作为测试数据。每次试验都会得出相应的正确率。10 次结果的正确率的平均值作为算法精度的估计,一般还需要进行多次 10 折交叉验证(例如 10 次 10 折交叉验证),再求其均值,作为算法的最终准确性估计。GridSearchCV
通常情况下,部分机器学习算法中的参数是需要手动指定的(如 k-近邻算法中的 K 值),这种叫超参数。但是手动设置过程繁杂,需要对模型预设几种超参数组合,每组超参数都采用交叉验证来进行评估,最后挑选出最优参数组合。而 GridSearchCV 可以自动调整至最佳参数组合。GridSearchCV 的名字可以拆分为两部分:网格搜索(Grid Search)和交叉验证(CV)。
网格搜索搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练模型,从所有的参数中找到在验证集上精度最高的,这其实是一个训练和比较的过程。
网格搜索可以保证在指定的参数范围内找到精度最高的参数,但是这也是网格搜索的缺陷所在,它要求遍历所有可能的参数的组合,在面对大数据集和多参数的情况下,非常耗时。所以网格搜索适用于三四个(或者更少)超参数,用户列出一个较小的超参数值域,这些超参数值域的笛卡儿积为一组超参数。
随机搜索
我们在搜索超参数的时候,如果超参数个数较少,例如三四个或者更少,那么就可以采用网格搜索,这是一种穷尽式的搜索方法。但是当超参数个数比较多的时候,如果仍然采用网格搜索,那么搜索所需的时间将会呈指数上升。所以就提出了随机搜索的方法,随机在超参数空间中搜索几十甚至几百个点,其中就有可能有比较小的值。随机搜索使用的方法与网格搜索很相似,但它不是尝试所有可能的组合,而是通过选择每一个超参数的一个随机值的特定数量的随机组合,这样方便通过设定搜索次数控制超参数搜索的计算量等。
对于有连续变量的参数,随机搜索会将其当成一个分布进行采样,这是网格搜索做不到的。