目录
训练误差和泛化误差
训练误差:模型在训练数据上的误差
泛化误差:模型在新数据上的误差
我们更加关心泛化误差
验证数据集和测试数据集
验证数据集:一个用来评估模型好坏的数据集,不参加训练,用于验证参数的好坏。一定不能跟训练数据混在一起。
测试数据集:只用一次的数据集。不能根据测试数据集的结果重新调整模型参数。
K-则交叉验证
现实训练中常常会出现数据不够的情况。如100个样本,50个做训练数据集,50个做验证数据集,太过浪费。可以使用K-则交叉验证算法解决。
拿到数据集后,随机打乱并将数据集分割成K块。
随后,做K次计算。将第i块数据集作为验证数据集,其余作为训练数据集。
最后,对K次的误差指取平均,作为模型的误差。
常用的K值为5或10
模型总结
训练数据集用于训练模型参数
验证数据集用于选择模型超参数
非大数据集可以使用k-则交叉验证进行训练
过拟合和欠拟合
模型容量
指拟合各种函数的能力。低容量的模型难以拟合所有数据。高容量的模型可以记住所有训练数据。
模型容量的影响
当模型容量较低时,误差较大。因为模型无法很好的拟合数据。模型容量逐渐增加时,训练误差不断降低,泛化误差达到最小值后逐渐上升。这是因为模型容量过大时,模型过于关注细节,被无关细节所误导。泛化误差与训练误差的差值常用于衡量模型拟合的程度。
模型训练核心任务:泛化误差降低、泛化误差与训练误差差值降低。
深度学习允许模型有一定过拟合。
估计模型容量
给定一个模型种类,通过控制参数的个数和参数值的选择范围以控制模型的容量。
数据复杂度
数据复杂度受多个因素影响:样本个数、每个样本的元素个数、时间、空间结构、多样性(类别)
拟合总结
模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合。