划分数据集

  我们当然希望把所有数据都用来优化模型,然而数据是有限的,我们要追求最大化数据的效用,用最少的数据训练出最好的效果。

训练集和测试集

  通常,我们会将数据集划分一部分出来,用来测试模型在未出现过的数据中的能力(泛化能力)。

训练误差

  训练误差(Training Error)指模型在训练数据集上的预测误差。它衡量的是模型对已知数据的拟合程度。可以用来判断是否欠拟合

测试误差

  测试误差(Test Error)是指模型在未见过的测试数据集上的预测误差。它衡量的是模型的泛化能力,即模型在新数据上的表现。可以用来判断是否过拟合

交叉验证测试集

  交叉验证(Cross-Validation)是一种评估机器学习模型性能和选择模型参数的方法,通过将数据集分为多个子集来进行。交叉验证的主要目标是减少过拟合的风险,并提供模型在未知数据上的性能评估。其中常用的是一种称为K折交叉验证(K-fold Cross-Validation)的方法。
  在K折交叉验证中,数据集被随机划分为K个子集(或称为“折”)。然后,模型被训练K次,每次使用K-1个子集作为训练数据,剩下的一个子集作为验证数据(或测试集)。这样,每个子集都会在验证过程中被用作一次测试集,而其余部分的子集会被用作训练集。模型的性能通常通过这K次训练和验证过程中的平均表现来评估。
  优点:数据资源有效利用
  缺点:算力资源要求较高
  此外,对于某些数据(如时间序列数据),标准的K折交叉验证可能并不适用,因为它假设数据是独立同分布的,而时间序列数据通常具有顺序依赖性

偏差与方差

偏差

  偏差(Bias)是指模型预测值的期望与真实值之间的差异,高偏差模型在拟合训练数据时存在“欠拟合”

方差

  方差(Variance)是模型预测值的差异程度,即预测值在不同数据集上的变动性。它可以用预测值的方差来表示。方差过大表示模型存在“过拟合”

表现基准

  注意,模型具有较高的偏差或方差不一定意味着模型不好,通常会将人类做相同任务所产生的偏差与方差作为表现基准。此外,也可以在其他竞争算法的基础上作优化。

学习曲线

error - train set size

在这里插入图片描述
  这里是选定模型后,增加数据集大小的情况。随着数据集大小增大,交叉验证误差减小,泛化能力增强;同时训练误差增大,这是因为固定的模型(如 f w , b ( x ) = w 1 x + w 2 x 2 + b f_{w,b}(x)=w_{1}x + w_{2}x^{2}+b fw,b(x)=w1x+w2x2+b)会越来越难以完美拟合所有样本点。

  数据集足够大时,曲线会趋于平坦。这可能是由于当前的模型过于简单,无法继续拟合出更好的效果了,这时候就可以考虑更换或优化模型,而不仅仅是向它输入更多的数据。

在这里插入图片描述
  而如果出现交叉验证误差远高于训练误差的情况,可能就是数据量不足或模型设计过于复杂。有时,正则化可以很好解决问题。

error - degree of polynomial

在这里插入图片描述
  这是误差与模型复杂度的图线,这里采用多项式函数,所以复杂度就是多项式的维度。

数据增强

  在数据不足或数据特征过于单一时,可以用一些手段从已有的数据中生成额外的数据,从而实现数据增强。比如,现在你有一张写有字母A的图片,你可以对它进行旋转、模糊、放缩等一系列操作,并保持标签 A A A不变,那么,你就成功将数据集扩充了若干倍,模型的泛化能力也能得到提升。类似的,我们还可以在音频中混入不相干的噪音,或在文本中加入少量不相干的字符,来人为地为数据集添加噪声

迁移学习

  迁移学习是指在机器学习领域中,利用一个神经网络在源任务上学习到的知识,帮助解决另一个相关但不同的目标任务。这一过程可以显著减少目标任务所需的训练时间、数据量和计算资源。
  (1)微调(Fine-tuning):将预训练的神经网络模型应用到新的任务上,并对模型的部分或全部参数进行微调。通常,预训练模型是在大规模数据集(如ImageNet)上训练的,这些模型已经学习到了丰富的特征表示。在新的任务上,通过微调模型的最后几层或所有层,可以快速适应新的数据集。
    比如,如果你想实现一个0~9数字识别的模型,而已经有了识别小猫小狗等各种类别的模型,可以只修改这个模型的输出层,来快速实现任务。
  (2)特征提取:预训练模型的前几层通常学习到的是低级特征(如边缘、纹理等),这些特征在许多任务中都是通用的。因此,可以将这些层作为特征提取器,直接用于新的任务。
  (3)冻结层:在新的任务中,可以冻结预训练模型的前几层,只训练新的分类层或其他特定任务的层,这样可以减少计算资源的消耗,同时利用预训练模型的泛化能力。
  (4)…

项目的完整周期

在这里插入图片描述
在这里插入图片描述

样本不平衡问题

  当样本中某一标签数量远大于其余种类时,模型会表现出倾向该标签的特征,从而达到虚假的高准确率。
在这里插入图片描述
  预测正确标记为 T r u e True True,预测错误标记为 F a l s e False False,标签为1标记为 p o s i t i v e positive positive,标签为0标记为 n e g a t i v e negative negative

精确率和召回率

  则引入两个比值来评估这个模型:
  (1)精确率 P o c i s i o n = T r u e   p o s i t i v e s P r e d i c t e d   p o s i t i v e s Pocision = \frac{True \ positives} {Predicted \ positives} Pocision=Predicted positivesTrue positives
  (2)召回率 R e c a l l = T r u e   p o s i t i v e s A c t r u a l   p o s i t i v e s Recall = \frac{True \ positives} {Actrual \ positives} Recall=Actrual positivesTrue positives
  高的精确率意味着模型误判率低,高的召回率意味着模型漏判率低

精确率与召回率的平衡

  精确率和召回率之间通常存在权衡关系。提高精确率往往会降低召回率,反之亦然。
  我们引入 F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall在精确率和召回率之间寻求平衡,特别是在两者都重要的情况下。
  更一般的则有 Fβ Score = ( 1 + β 2 ) × Precision × Recall ( β 2 × Precision ) + Recall \text{Fβ Score} = (1 + \beta^2) \times \frac{\text{Precision} \times \text{Recall}}{(\beta^2 \times \text{Precision}) + \text{Recall}} Fβ Score=(1+β2)×(β2×Precision)+RecallPrecision×Recall
  (1)当 β = 1 β=1 β=1 时, Fβ Score \text{Fβ Score} Fβ Score等同于 F1 Score \text{F1 Score} F1 Score,可以根据需求灵活调整参数 β β β
  (2)当 β < 1 β<1 β<1 时,精确率的权重更高。
  (3)当 β > 1 β>1 β>1 时,召回率的权重更高。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部