机器学习--模型评估与模型参数选择、正则化(笔记)

一、模型评估

1、误差

1、对于给定的输入x,某个模型的输出 ŷ = f(x)偏离真实目标值y,那么就说明模型存在误差

ŷ偏离y的程度可以用关于ŷ和y某个函数L(y,ŷ)来表示;

作为误差的度量标准:这样的函数L(y,ŷ)称为损失函数

(损失函数的值越小,预测结果越接近真实值)

【误差:预测输出y ̂与真实输出y之间的差异;

经验误差、训练误差:在训练集上的误差;

泛化误差:在新样本上的误差。

​​​​​​​泛化误差越小越好,经验误差不一定越小越好,可能导致过拟合。】

2、泛化误差

在某种损失函数度量下,训练集上的平均误差被称为训练误差,测试集上的误差称为泛化误差

泛化误差是衡量一个模型泛化能力的主要标准。

3、数据集:

1、训练集

1、训练模型的参数

2、作用

(1)模型学习:模型通过学习训练集中的数据来调整其内部参数,以便能够捕捉到数据中的规律和特征。

(2)性能评估:虽然训练集主要用于模型的训练,但在一些情况下,也可以使用它来初步评估模型的性能。

2、验证集

1、当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

2、作用:

(1)评估模型效果,为了调整超参数而服务

(2)调整超参数,使得模型在验证集上的效果最好

3、验证集不像训练集和测试集,它是非必需的

如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。

验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。 

3、测试集 

1、测试集主要用于评估模型的泛化能力

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估,来看学习效果(模型效果)好不好。

通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。

2、作用

(1)性能评估:测试集提供了一个平台,可以模拟模型在实际应用中的表现。通过测试集的结果,我们可以了解模型是否能够有效地处理新的、未知的数据。

(2)泛化能力检验:测试集帮助验证模型是否过度拟合了训练数据。如果一个模型在训练集和验证集上表现良好,但在测试集上表现不佳,这可能意味着模型没有很好地泛化到新数据上。

(3)最终决策依据:在模型选择和超参数调优过程中,测试集的结果往往被视为最终的评判标准。一旦确定了最终模型,测试集的性能就成为模型是否准备好部署到生产环境中的关键指标。

(4)防止过拟合:通过监控模型在测试集上的表现,可以检测到过拟合的迹象。如果发现模型在训练过程中对训练数据过度拟合,可能需要调整模型复杂度或使用正则化技术。

(5)交叉验证:虽然测试集是评估模型的直接方式,但在实践中,为了更可靠地估计模型的性能,常常会采用交叉验证的方法。这种方法通过将数据分成多个小组,并在不同组合的训练集和验证集上重复训练和测试模型,来减少因数据划分而带来的偏差。

4、划分数据集

1、小规模常用的划分比例:

训练集:验证集:测试集=6:2:2

训练集:测试集==8:2、7:3

2、大规模样本集(百万级以上),只要验证集和测试集的数量足够即可。

例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。

1000w 的数据,同样留 1w 验证集和 1w 测试集。

3、超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。

5、数据集划分代码示例

3、过拟合

1、将训练样本自身的一些特点当作所有样本潜在的泛化特点。

2、过拟合原因

不能把训练误差作为模型参考选择的标准,因为训练集可能存在以下问题:

①:训练集样本太少,缺乏代表性;

②:训练集中本身存在错误的样本,即噪声。

③:模型复杂度过高。

④:数据不纯。

3、如果片面的追求训练误差的最小化,就会导致模型参数复杂度增加,使得模型过拟合(Overfitting)。

4、表现:在训练集上表现很好,在测试集上表现不好。

4、防止过拟合问题

通常可以采取:

使用验证集调参。

数据集扩增。通过增加训练数据的数量来提高模型的泛化能力。

使用正则化技术。正则化通过在损失函数中添加一个惩罚项来限制模型参数的大小,从而防止模型过度拟合训练数据。

改进模型结构。选择合适复杂度的模型,避免模型过于复杂而难以学习数据的真实分布。

降维。通过减少特征的数量来降低模型的复杂度,这有助于减少过拟合的风险。

集成学习。通过结合多个不同的模型来做出预测,可以减少过拟合,因为不同的模型可能在不同的方面出现过拟合,它们的结合可以互相抵消这些错误。

交叉验证。使用交叉验证来评估模型的性能,可以更准确地了解模型在未知数据上的表现,从而避免过拟合。

重新清洗数据。

⑨:早停。在训练过程中监控验证集的性能,一旦发现验证误差开始增大,即停止训练。这可以防止模型在训练数据上过度拟合。

5、欠拟合

欠拟合:还没有训练好

1、原因:

(1)数据没有做归一化处理

(2)神经网络拟合能力不足

(3)数据的特征不够

2、解决方法:

(1)寻找最优的权重初始化方案

(2)增加网络层数、epoch

(3)使用适当的激活函数、优化器和学习率

(4)减少正则化参数

(5)增加特征

二、验证

1、模型不能过拟合于训练集,否则将不能在测试集上得到最优结果;

2、不能直接以测试集上的表现来选择模型参数,因为这样的模型参数将会是针对某个特定测试集的,得出来的评价标准将会失去其公平性,失去了与其他同类或不同类模型相比较意义。

【就比如要证明一个学生学习某门课程能力比别人强,(模型算法的有效性),那么就要让他和别人听一样的课,做一样的练习(相同点训练集),然后用他们都没做过的题目来测试他们(测试集与训练集不能交叉)。如果直接在测试集上调参,那就相当于让这个学生针对考题复习,这样是不公平的。】

3、参数的选择(调参)必须在一个独立于训练集和测试集的数据集上进行,这样用于模型调参的数据集被称为开发集或验证集

1、交叉验证:

重复使用训练集和测试集

1、留出法(Holdout cross validation)

按照固定比例将数据集静态的划分为:训练集、验证集、测试集

2、自组法(bootstrapping)

适合于样本数目较少,有放回的取法。

3、

​​​​​​​(1)简单交叉验证。

在训练集上使用不同的超参数训练,使用测试集选出最佳的一组超参数设置。

(2)K重交叉验证(K-fold cross validation)。K一般取10

将数据集分为训练集和测试集,将测试集放在一边。

将训练集分为 k 份 每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。

通过 k 次训练后,我们得到了 k 个不同的模型。

评估 k 个模型的效果,从中挑选效果最好的超参数

使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型

三、正则化

1、为了避免过拟合,需要选择参数复杂度较小的模型

2、如果有两个效果相同的模型,而它们的参数复杂度不相同,那么冗余的复杂度一定是过拟合导致的

1、正则化项

1、、选择复杂度较小的模型,一种策略是在优化目标中加入正则化项,以惩罚冗余的复杂度:

①其中θ为模型参数

②L(y,ŷ;θ)为原来的损失函数

③λ用于调整正则化项的权重

④J(θ)为正则化项

⑤正则化项通常为θ的某阶向量范数

2、通过限制参数值域空间,显式地控制了模型复杂度,从而避免了过拟合。

​​​​​​​

2、L1正则化:

使权重的绝对值最小化,且对于异常值是鲁棒的。

3、L2正则化:

使得权重的平方最小化,该模型能够学习复杂的数据模式,但对于异常值不具备鲁棒性。

(鲁棒性指的是一个系统、设备或者程序在面对各种外界干扰或内部参数变化时,仍能保持其功能或性能不受影响的能力。)

4、Dropout

是一种正则化方法,用于随机禁用神经网络单元。

  • 46
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值