2021-07-14

关于其中几个问题的思考:
根据南瓜书作者的建议,一二章简单看下。

西瓜书第1章和第2章主要是讲一些基本概念和术语,以下知识点在没有学过后面章节的具体机器学习算法之前较难理解,下面我将其划出来:第1章:【1.4-归纳偏好】可以跳过第2章:【2.3.3-ROC与AUC】及其以后的都可以跳过

1 能不能只要训练集和测试集,不要验证集呢?

验证集的作用在于模拟测试集,而测试集的最大特点就是「未知」,即在训练过程中是见不到的。正因为验证集和测试集在训练过程中都是未知的,你才可以说,「如果你的超参数适用于验证集,那么它们也大概会适用于测试集」。

如果你不分开验证集和测试集,那么你调出的超参数就是适用于训练集的,但因为训练集和测试集不具有「未知」这个共同点,所以训练集上的好性能不一定能泛化到测试集上去,这就叫「过拟合」。

这个做法就相当于在考试题里加入了大量的家庭作业。

又费时,又掩盖了真实学习成绩。

也可以这么比喻,训练集相当于家庭作业,验证集相当于模拟卷,测试集相当于考试卷,做完家庭作业直接上考试卷可能会考崩,但是做完家庭作业做一做之前的模拟卷就知道大体考哪些然后调整参数,最后真正考试的时候就能考好。

验证集用于检测哪个模型效果最好。测试集更多是为了更加保险,竞赛网站一般会给,但在实际应用中,验证集效果不错,就会觉得模型很好,这时候可能就会考虑落地了。

验证集又叫开发集(dev-set)。让模型在dev效果好的超参,才更可能是让模型在testing set上好的超参。

不是只有训练参数才有过拟合,一**切试图提升效果的改变都会导致过拟合。**根据某个数据集所做调整的次数越多,对这个数据集过拟合越严重。针对训练集的调整次数最多,极端情况是每一个样本都更新模型参数;而针对开发集,需要若干次全体样本的迭代,才做一次超参的调整。

问题描述:我用全部的训练集数据去验证新的超参数下的模型效果不是也可以吗?

这就是典型的测试集泄露,验证你的测试集正确率,来进行模型选择。

但现实情况是,测试集标签未知

只能靠训练集划分出验证集来进行模型参数调节啊。

2 查准率和查全率为什么说是互相矛盾的?

假设我们的机器学习系统要找到人群中隐藏的坏人。

看重查全率(recall): 宁可错杀一千,不可漏过一个。

看重查准率(precision): 宁可漏过坏人,不可错杀无辜的好人。

查准率和查全率是对分类任务中的其中一个类别来说的。

假如一个分类任务中有A,B,C…好多类。

假如整个用于测试的样本有200个(其实查准率与查全率与测试样本多少个并没有直接的关系)。

我们把A类单拉出来:
假设A类别总共有80个样本,但是预测的时候机器学习系统说一共有70个A类别的样本。这就有问题了,且不说70个A类别的数对不上,而且你70个里边还有一些是其他类别吧。你既然预测出来结果了,那么我们就要想办法衡量你的性能。接下来我们将这70个预测结果扒开来看一看就明白了。

70个样本其实真正预测正确的也就是50个,其他的20个不知道是哪些别的类。我们可以这样描述这个现象:机器学习系统查到了70个A类别,其中50个是准确的,所以A类别的查准率为50/70。

但是还有另一个问题,那些个机器学习系统没有查到的A类别呢。就说明它没有查全嘛,有多少没查全呢?从上面可以看出有80个A,它只查到了50个,所以引入了查全率50/80。

下面说为什么是矛盾的:

假设上述问题我们有一个巨牛x的机器系统,它预测了A类有80个,实际上这80个都预测正确了,查准率和查全率都是100%了。

但是!但是!但是!
真实人物中没有这么牛x的机器学习系统。往往是只是比之前优化了一点点,这次呢,我们的系统预测了90个是A类的,55个预测对了,那么查准率为55/90=61%,之前的查准率为50/70=71%,可见查准率降低了10%。但是现在的查全率:55/80=69%比之前的50/80=62%提高了。

因此总结:并不是绝对的矛盾,只是实际中证明的矛盾。

在这里插入图片描述

这个表示,预测为正例的样例中,预测准了多少,强调样例中对正例预测的准确性。

而查全率R(recall),
在这里插入图片描述

这个表示,在实际为正例样例中,预测出来了多少,强调在实际的样例中,真正的正例被预测出来了多少。

比如说,如果想要提高查准率P,我们可以选择那些预测为正例的概率较大的样例,其它的做为反例,放弃那些正例概率一般的样例,当然这些样例也会被当做反例。这样自然预测为正例的样例中,准确度就会大幅度提升。但是,FN数量,即是预测为反例的正例的数量确是会随之大幅度上升,因为,你提高了为正例的门槛,其它的都被你预测为反例。这样你预测为反例的数量大大提升,相对的,这些反例中为正例的数量也在大大提升。所以FN增加,查全率降低。

再比如说,我们想要提高查全率R,那么要怎样做,显然,减小FN,就是一个可行的办法,为了减小假正例,我们要降低被预测为正例的门槛,可以把那些预测为正例的概率比较小的样例,也算作正例,这样被预测为反例的数量就大大降低,这样假反例FN的数量就自然减小了,查全率上升,但是,由于你降低了成为正例的门槛,你放过的样例过程中,即是,你多预测为正例的样例中,错误率当然大大提升,假正例FP上升,那么查准率P自然就下降了。

如此一来,大家是否明白,查准率与查全率的矛盾的关键点在于,FP与FN之间的矛盾,即是,假正例与假反例之间的矛盾。

我们提升成为正例的概率,拉高成为正例的门槛,假反例FN的数量就会增加,相对假正例FP的数量就会减小;
反之我们降低成为正例的概率,减小成为正例的门槛,假反例FN的数量就会减小,但是假正例FP的数量却会增加。

这便是这矛盾之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值