1 数据集划分
训练集(train set):用训练集对算法或模型进行训练过程;
验证集(development set):利用验证集(又称为简单交叉验证集,hold-out cross validation set)进行交叉验证,选择出最好的模型;
测试集(test set):最后利用测试集对模型进行测试,对学习方法进行评估。
- 小数据量时代,如 100、1000、10000 的数据量大小,可以将数据集按照以下比例进行划分:
无验证集的情况:70% / 30%
有验证集的情况:60% / 20% / 20% - 大数据量时代,拥有的数据集的规模可能是百万级别的,所以验证集和测试集所占的比重会趋向于变得更小:
100 万数据量:98% / 1% / 1%
超百万数据量:99.5% / 0.25% / 0.25%
2 偏差 / 方差 / 噪声 的意义
“偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具;
泛化误差可分解为:偏差
、方差
、噪声
;
泛化性能是由学习算法的能力
、数据的充分性
、学习任务本身的难度
,所共同决定的。
- 偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
- 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
- 噪声:表达了在当前任务上任何学习算法所能够达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
3 偏差、方差与数据集之间的关系
- 训练集的错误率较小,而验证集/测试集的错误率较大,说明模型存在较大方差,可能出现了
过拟合
; - 训练集和测试集的错误率都较大,且两者相近,说明模型存在较大偏差,可能出现了
欠拟合
; - 训练集和测试集的错误率都较小,且两者相近,说明方差和偏差都较小,这个
模型效果比较好
;
- 总结
- 方差一般指的是数据模型得出来了,能不能对未知数据的扰动预测准确;
- 而偏差说明在训练集当中就已经误差较大了,基本上在测试集中没有好的效果。
4 模型泛化性能差的解决方法
所以如果我们的模型出现了较大的方差或者同时也有较大的偏差,该怎么去解决?
- 对于高方差(过拟合),有以下几种方式:(需削弱网络复杂度)
(1)获取更多的数据,使得训练能够包含所有可能出现的情况
(2)数据扩充
(3)增大模型正则化力度
(4)早停止法(取验证集上准确率最高的那一轮的训练结果作为最终网络)
(5)加入随机噪声
(3)寻找更合适的网络结构 - 对于高偏差(欠拟合),有以下几种方式:(需增大网络复杂度)
(1)扩大网络规模,如添加隐藏层或者神经元数量
(2)寻找合适的网络架构,使用更大的网络结构
(3)训练时间更长一些
(4)调整激活函数
(5)增加网络非线性
(6)减小模型正则化力度。