训练集:用于训练权重参数
验证集:用来调参,评价模型的好坏,选择合适的超参数
测试集:只用一次,检验泛化性能,实际场景下的数据
非大数据集通常使用K-折交叉验证
K-折交叉验证
一个数据集分成K份,每次拿出1份做验证集,其余K-1份做训练集,共做K次训练,求得K次训练的平均精度。K-折交叉验证降低数据分布不均匀带来的误差,举一个极端的例子,K=10000,将数据集分成10000份,做10000次训练,求得平均误差,这样做充分利用了数据,同时也会付出高昂的成本。如果数据集很大,可以采取K=2或3。
过拟合和欠拟合
模型容量:拟合各种函数的能力
模型容量和数据之间的关系
模型容量低,数据简单,可以取得不错的效果
模型容量低,数据复杂,无法学习到足够的信息,可能导致欠拟合。如用线性方程拟合曲线分布的数据
模型容量高,数据量简单,极端情况,模型可以把所有数据全部存下来,这样容易出现过拟合。如用多次方程拟合曲线分布的数据
模型容量高,数据量复杂,可以学习到更多复杂的知识,往往具有较好的性能,这也是目前的一个方向
横坐标是模型容量,每一个点代表一个模型,纵坐标是误差。从零点往右看,刚开始训练模型容量低,拟合能力比较弱,训练误差比较大,泛化误差也比较大。随着模型容量的增高,训练误差逐渐减少,模型足够大到记住所以训练数据,训练误差可以为0。同时,泛化误差也在降低,可以看到当泛化误差过了一个临界点,泛化误差不降反增,处于过拟合状态,这个阈值点是理论的最优点。我们尽量减少泛化误差和训练误差的gap。
结论:模型容量需要匹配数据规模,否则容易出现欠拟合和过拟合。从理论上讨论,统计机器学习提供工具衡量模型容量复杂度,往往计算复杂。实际中,更多通过实验观察训练误差和验证误差。
b站链接:模型选择_哔哩哔哩_bilibili