机器学习/深度学习——模型的欠拟合和过拟合,正则化方法 详解
搭配以下文章进行学习:
卷积神经网络:
深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看
深度学习——卷积神经网络(convolutional neural network)CNN详解(二)——前向传播与反向传播过程(特征提取+预测+反向传播更新参数). 步骤清晰0基础可看
简单的神经网络详解:
深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看
深度学习——神经网络(neural network)详解(二). 带手算步骤,步骤清晰0基础可看
梯度下降法:
机器学习/深度学习——梯度下降法(Gradient descent)详解. 步骤清晰 0基础可看
1.数据集划分
(1)训练集(Training Set):
用途:用于模型的训练过程,即学习数据特征和进行参数调优。
比例:通常是数据集中的最大部分,常见的比例为60%-70%。
(2)验证集(Validation Set):
用途:用于模型的调整和选择,比如选择模型的超参数、正则化系数等。验证集帮助我们评估模型在训练集之外的数据上的表现,以避免过拟合。
比例:在没有单独测试集的情况下,验证集可以稍大一些,常见的比例为20%-30%。如果存在单独的测试集,验证集可以较小,比如10%-20%。
(3)测试集(Test Set):
用途:用于最终评估模型的性能。测试集应该在整个模型选择和训练过程结束后只使用一次,以确保评估结果的公正性。
比例:测试集应足够大,以提供可靠的性能估计,常见的比例为10%-20%。
(4)交叉验证集(Cross-Validation Set,可选):
用途:在数据量有限的情况下,可以使用交叉验证来更有效地利用数据。交叉验证通过将训练集分割成多个小的子集,每个子集轮流作为验证集,而剩余的数据作为训练集,这样可以减少过拟合的风险并提高模型评估的可靠性。
方法:常见的交叉验证方法有K折交叉验证(K-fold cross-validation),其中K通常取值5或10。
(5)数据集划分的一般比例:
一个常见的划分比例是:训练集70%,验证集20%,测试集10%,即7:2:1。如果数据量很大,可能使用60%的训练集,20%的验证集和20%的测试集,6:2:2。
详细知识点请见:深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看
2.欠拟合(Underfitting)
(1)定义:当一个模型在训练数据上都不能获得满意的性能,即模型太简单,没有学习到数据中的潜在结构和模式。
(2)原因:模型过于简单,参数太少;特征选择不当,重要特征缺失;训练时间过短,模型没有收敛到理想状态。
表现:训练误差和测试误差都较大。
(3)解决方法:增加模型复杂度、添加更多的特征、减少正则化强度、使用更复杂的模型或算法、增加训练数据、延长训练时间等。
如图所示:训练集和验证集的误差都很高,并且随着样本数量的增加,误差并没有显著下降,这通常表明模型是欠拟合的。
3.过拟合(Overfitting)
定义:当一个模型在训练数据上表现得非常好,但是在未见过的新数据上表现差,即模型对训练数据中的噪声和细节学习得太多,失去了泛化能力。
原因:模型过于复杂,拥有过多的参数;训练数据不足够或质量不高;训练时间过长,导致模型学习到数据中的随机误差。
表现:训练误差很小,但验证误差或测试误差较大。
解决方法:获取更多的数据、减少模型复杂度、使用正则化方法(如L1、L2正则化)、应用Dropout(在深度学习中)、使用数据增强、调整模型训练的迭代次数等。
如图所示:在训练集数目较小的时候,非常容易出现过拟合情况,所以我们可以看到曲线的开始部分,验证集误差很高,可是训练集误差却很小,这是典型的过拟合现象,表明在训练集上出现的超低误差是因为模型过度学习训练集造成的。但是随着训练集样本的增多,过拟合情况缓解,验证集的误差逐步降低,训练集的误差逐步升高。
4.正则化是什么?
正则化是在模型的损失函数中添加一个额外的项,这个项通常与模型参数的某种度量(如参数的大小或复杂度)成比例。通过这种方式,正则化有助于简化模型,避免模型过于复杂而学习到数据中的噪声。
常见类型:
(1) L1 正则化(Lasso 正则化)
向损失函数添加参数的绝对值之和,促使模型学习到的权重尽可能稀疏(即有更多的参数变为零),这有助于特征选择。
(2) L2 正则化(Ridge 正则化)
向损失函数添加参数的平方和,促使模型学习到的权重尽可能小,这有助于模型平滑。
(3)弹性网(Elastic Net)正则化
结合了L1和L2正则化,同时考虑参数的绝对值和平方。