李沐-动手学深度学习(2)模型选择、过拟合和欠拟合

【总结】

训练数据集:训练模型参数;

验证数据集:选择模型超参数。

非大数据集上通常使用k-折交叉验证。

模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合。

统计机器学习提供数学工具来衡量模型复杂度。

实际中一般靠观察训练误差和验证误差。


一、模型选择

1、训练误差和泛化误差

训练误差:模型在训练数据上的误差

泛化误差:模型在新数据上的误差

2、验证数据集和测试数据集

验证数据集:用来评估模型好坏的数据集。不要跟训练数据集混在一起。

测试数据集:只用一次的数据集。

3、k-折交叉验证


二、过拟合和欠拟合

1、过拟合和欠拟合

2、VC维

(1)线性分类器的VC维

2维输入的感知机(输入的特征是2,输出是1)

(2)数据复杂度

多个重要因素:样本个数、每个样本的元素个数、时间/空间结构、多样性。


三、代码

chapter_multilayer-perceptrons/underfit-overfit.ipynb

四、问答

(1)过拟合和欠拟合应该是用验证集来看

(2)时序上的数据,不能随机采样分验证集训练集。一般一个时间之前的训练集,之后的验证集。

(3)k折交叉验证,k的选择,看能承受的成本。k越大越好。

(4)Q:k折交叉验证的目的是确定超参数吗,然后还要用这个超参数再训练一遍全数据吗?

A:两种做法,一种就是k折交叉验证确定超参数,然后用这个超参数再训练一遍全数据;另一种是不再重新训练,就用k折交叉验证确定超参数,然后随便找出一折的模型,或找出精度最好的那一折模型;还有一种是,把k个交叉验证的模型都拿出来,预测test时,k个模型都预测一遍,然后取均值,模型稳定性好,预测代价高。

(5)Q:如果训练是不平衡的,是否要考虑测试集是否也是不平衡的,再去决定是否使用一个平衡的验证集?

A:正常情况,可以不平衡,但是应该通过加权使其平衡。假设有两类1:9,要考虑真实世界中是不是就是不平衡,如果是,那就应该把那主流的90%做好,10%尽量做好;如果不是,不平衡只是因为采样没采好,那么应该把那10%的权重提升,最简单的把那10%的样本多复制几遍,不复制在loss中加权给他更大权重。

你可能感兴趣的:(李沐-动手学深度学习(2)模型选择、过拟合和欠拟合)