前言
我们可以将模型的训练理解成为寻找靶心的过程,如果想要模型在验证集和测试集上的表现都好的话,那么就需要保证验证集和测试集相对于训练集而言它们的靶心都处于同一位置。
如果验证集和测试集相对于训练集的靶心有所偏差,这时候就需要考虑修改验证集和测试集或修改验证集和测试集的指标
。本篇文章的主要内容来自于deeplearning.ai视频教程。接下来我们通过两个案例来说明一下什么时候应该修改验证集和测试集的数据,什么时候需要改变它们的评估指标。
修改训练集和验证集的评估指标
我们有两个垃圾邮件的分类器A和B,分类器A的错误率为3%,分类器B的错误率为5%,最开始评估分类器的指标是
错误率
,从数据上看A分类器的错误率明显要低于分类器B,所以很当然的我们会选择分类器A。通过实际使用两个分类器发现,分类器A会将正常邮件当做垃圾邮件进行拦截处理,而分类器B对于部分的垃圾邮件没有拦截功能而正常推送给用户,而不会将正常邮件当做垃圾邮件进行拦截。从用户角度考虑,当然不希望正常邮件被当做垃圾邮件进行拦截处理,万一你拦截的是我的重要邮件,必定会对我造成较大的损失。相对于多看几封垃圾邮件而言,我更希望多看几封垃圾邮件,而不是我的正常邮件被拦截。评估指标存在的意义就是能够让我们从多个不同的模型中快速选择效果最好的模型
,从现在评估指标来看,很明显不能满足我们的要求,所以我们需要修改评估指标。
- 如何修改评估指标
错误率:
m:表示验证集或测试集中样本的数量
:表示预测邮件为正常邮件的类标
:表示预测邮件为垃圾邮件的类标
:表示真实的类标为正常邮件
:表示真实的类标为垃圾邮件
分类错误的邮件主要由两部分组成,将垃圾邮件预测为正常邮件,即公式中的 ,将正常的邮件预测为垃圾邮件,即公式中的 。在上式的错误率中两种错误所占的权重是相同的,即两种分类错误的情况所带来的损失是相同的,现在我们想使得将正常邮件预测为垃圾邮件在错误率中所占的比重降低,所以我们可以提高第二种预测错误所带来的损失,以降低第二种情况分类的错误率。
改进后的错误率:
:表示的是将垃圾邮件分为正常邮件所占的比重
:表示的是将正常邮件分为垃圾邮件所占的比重
为了降低将正常邮件分为垃圾邮件的错误率,可以设置将
的值大于
的值,并保持
通过增加第二种分类错误所带来的损失降低第二种分类的错误率。
改变验证集和测试集的数据
现在我们有两个猫的分类器A和分类器B,训练数据的图片我们是从网上获取的,图片都是比较清晰的而且取景都是比较专业的,训练两个分类器获取了两个模型,通过评估指标
错误率
我们发现分类器A的性能明显要优于分类器B。将两个分类器训练完成之后,我们获取到两个模型,将模型部署到应用时发现,分类器B的表现居然要比分类器A的表现好,通过调查发现,用户上传的图片大多都是模糊的图片而且取景也不是特别专业。而这与我们所希望的并不一样,根据评估指标的结果来看,分类器A的性能应该要优于分类器B,所以这时评估指标已经不能够很好的衡量模型的性能。我们应该考虑修改验证集和测试集的数据,增加一些模糊和取景不专业的图片或者修改评估指标,使得我们的评估指标不仅能够在验证集和测试集上辨认好的模型,更能够在实际使用中来辨认好的模型
。
总结
我们可以将机器学习的过程分为两个步骤确定目标和向这个目标靠近
,可以将这个过程理解为一个射箭的学习,首先我们需要确定我的目标是射中靶心(确定目标),然后我们通过控制射箭的方向和力度以及风等因素,不断使得我们射出的箭向靶心靠近(靠近目标)。所以说,对于机器学习来说目标其实就相当于评估的指标,我们通过使用各种各样的机巧,调参等来提高和改善模型在验证集和测试集上的评估指标,以提升模型的性能。如果评估指标选择存在问题,那么之后的工作只是在浪费时间
。所以评估指标的选择很重要,当发现评估指标存在问题时应该及时修改,避免后续工作不必要的浪费。