笔记源于:李沐老师的视频讲解
1. 模型选择
-
误差
- 训练误差:模型在训练数据上的误差
- 测试误差:在测试数据上的误差,也叫泛化误差
-
数据集
- 训练数据集:用于训练模型参数
- 验证数据集:用于评估模型的好坏。调参使用
- 测试数据集:用于测试,只用一次
-
K-则交叉验证
将训练数据集分为k份,选其中一份作为验证集,剩下作为训练集,循环k次不同的验证集。以k次的均值作为最终的精度衡量- 在没有足够多的数据时使用。
- K一般取5或10,数据集小的情况K取值较大;反之可以小一点
-
固定验证集
从训练集中拨出一部分数据作为验证集进行调参。数据集通常采用8-1-1作为训练-验证-测试 -
参数选择
对于多个参数,通常使用网格搜索(选择组合),更为普遍的做法是固定其余参数对剩下的一个参数进行调整
2. 过拟合&&欠拟合
模型容量越高,模型就越复杂,能够拟合的事物(曲面)就越复杂,能力越强;反之越简单,例如线性模型。
-
模型容量:表示拟合各种函数的能力。低容量的模型难以拟合训练数据;高容量的模型能够记住所有训练数据
-
模型容量与误差之间的关系
训练误差随着模型容量升高而降低,因为模型越复杂能够记住的训练样本越多,训练本身是让模型在训练样本上进行优化。而测试误差在模型复杂到一定的程度之后逐渐上升。这里的泛化gap通常用来衡量模型是否过拟合。
核心任务:降低泛化误差以及降低gap。过拟合本身并不是一件很差劲的事情,一般来讲我们需要模型有一定的能力(足够大),然后通过一定的手段控制模型的容量 -
模型容量的估计
- 难以在不同种类算法之间比较。例如树模型和神将网络
- 对于固定种类模型,估计模型容量的两个因素:参数的个数;参数值的选择范围
-
数据复杂度衡量(相对直观概念)
- 样本个数
- 样本元素个数
- 样本的时间、空间结构(例如视频)
- 数据多样性(例如类别)
小结:模型容量需要匹配数据复杂度。