交叉验证

一. 分类
  1. 简单交叉验证:随机将训练数据分为两个部分,训练集(training set)和验证集(dev set),例如70%的原始数据为训练集,30%的原始数据为验证集。
  2. K折交叉验证:首先随机将训练数据切分为K个互不相交的大小相同的子集(每个子集的长度为 N/K),然后利用K-1个子集的数据训练模型,利用余下的子集验证模型,然后重复这一过程K次,取K次的平均误差率(一般为均方误差)为模型的误差率。
  3. 留一交叉验证:K=训练数据的大小N,即每个子集的长度为1,做法同于K折交叉验证。
二. 参数与超参数的区别
  • 参数:模型根据数据可以自动学习出的变量(从数据中估计或学习得到,模型内部的配置变量),例如人工神经网络的权重,线性回归及logistic回归中的回归系数,支持向量机中的支持向量等
  • 超参数:用来确定模型的一些参数(通常由人为设定,模型外部的配置变量),例如learning rate,支持向量机中的C(惩罚系数)和sigma(与支持向量的个数有关),k最近邻算法(k-nearest neighbors)中的k(邻居个数),神经网络的层数、每层神经元数等
三. 交叉验证用来调整超参数

交叉验证的每个fold是一个不同参数的模型。选定最优超参数后,再用所有的数据训练一个新的模型,用于测试。比如先选择lr为0.01,对数据进行k折交叉验证,看一下平均准确率,平均误差率(一般为均方误差)等指标,再设置lr为0.09再看看,进行k折交叉验证看看结果,再设置其他值,最终找到一个比较优的结果。

超参搜索

0