四、评估已建立的模型

别人不讲道理

不是我们跟着不讲道理的理由

1 模型评估

希望fθ(x)对未知数据x输出的预测值尽可能正确。

如何测量预测函数fθ(x)的正确性,也就是精度呢?

观察函数的图形,看它能否很好地拟合训练数据:

我们需要能够定量地表示机器学习模型的精度

2 交叉验证

怎么评估模型呢?

把获取的全部训练数据分成两份:一份用于测试,一份用于训练,然后用测试数据来评估模型。

一般情况下 训练数据 : 测试数据 = 7 :3 或者 8 :2

回归问题的验证

把测试数据考虑进来:

不考虑测试数据:

可以看出,二次函数能更好地拟合数据,如果只考虑测试数据,那么训练的模型只对训练数据是正确的。

模型评估就是像这样检查训练好的模型对测试数据你拟合情况。

对于回归问题,只要在训练好的模型上计算测试数据的误差的平方,再取平均值就可以了:

这个值被称为均方误差或者MSE,全称 Mean Square Error。这个误差越小,精度就越高,模型也就越好。

分类问题的验证

与回归问题一样,先考虑数据的分配:

假设在逻辑回归的情况下,θTx是简单的一次函数,那么只根据训练数据进行训练后,决策边界应该是这样的:

 假如θTx更加复杂,可能就会像这样紧贴着训练数据进行分类:

可以对训练数据完美地进行分类,却完全忽视了测试数据。

所以在分类的时候,还必须检查模型是否能正确。

回到图像的分类问题,我们是根据分类是否成功就会有下面四种情况

1. 图像是横向的,被正确分类了

2. 图像被分类为横向,但实际上不是横向的

3. 图像不是横向的,被正确分类了

4. 图像被分类为非横向,但实际上是横向的

 概括起来:

可以使用表里的4个记号来计算分类的精度。精度的英文是Accuracy,它的计算表达式是这样的:

假如100个数据中80个被正确地分类了,那么精度就是:

精确率和召回率

但是只看精度,并不一定能体现这个模型的好坏。

比如下面这种极端情况:

假设有100个数据,其中95个是Negative。那么,哪怕出现模型把数据全部分类为Negative的极端情况,Accuracy值也为0.95,也就是说模型的精度是95%。

遇到这种情况,只看整体的精度看不出来什么问题。

引入别的指标的示例:

可以得到:

首先我们来看第一个指标——精确率。它的英文是Precision。

被分类为Positive的数据中,实际就是Positive的数据所占的比例:

 这个值越高,说明分类错误越少。

还有一个指标是召回率,英文是Recall。

 在Positive数据中,实际被分类为Positive的数据所占的比例:

这个值越高,说明被正确分类的数据越多。

基于这两个指标来考虑精度是比较好的。

F值

精确率和召回率一个高一个低,需要我们取舍,有些麻烦。

所以就出现了评定综合性能的指标F值

 F值的表达式变形,写成下面这样,二者是相同的:

 除F1值之外,还有一个带权重的F值指标:

把全部训练数据分为测试数据和训练数据的做法称为交叉验证

在交叉验证的方法中,尤为有名的是K折交叉验证

- 把全部训练数据分为k份

- 将k -1 份数据用做训练数据,剩下的一份用做测试数据

- 每次更换训练数据和测试数据,重复进行k次交叉验证

- 最后计算k个精度的平均值,把它作为最终的精度

但是,在训练数据量比较大的情况下,会比较花时间,所以我们必须要确定一个合适的k值。

3 正则化

过拟合

模型只能拟合训练数据的状态被称为过拟合,英文是overfitting。

有几种方法可以避免过拟合:

1. 增加全部训练数据

2. 使用简单的模型

3. 正则化

正则化的方法

回归时候提到的目标函数:

 向这个目标函数增加下面这样的正则化项:

变成:

对这个新的目标函数进行最小化,这种方法就称为正则化。

正则化的效果

首先把函数分成两个部分:

 C(θ)

 R(θ)

 两个函数之和E(θ)=C(θ)+R(θ)

本来是在θ1=4.5处最小,现在是在θ1=0.9处最小。

这就是正则化的效果。它可以防止参数变得过大,有助于参数接近较小的值。

参数的值变小,意味着该参数的影响也会相应地变小。比如,有这样的一个预测函数fθ(x)。

极端一点,假设θ2=0,这个表达式就从二次变为一次了,也就是说没有x2项了。意味着本来是曲线的预测函数变为直线了。

这正是通过减小不需要的参数的影响,将复杂模型替换为简单模型来防止过拟合的方式。

就是为了防止参数的影响过大,在训练时要对参数施加一些……一些惩罚。

一开始就提到的λ,是可以控制正则化惩罚的强度。

比如令λ=0,那就相当于不使用正则化:

反过来λ越大,正则化的惩罚也就越严厉:

分类的正则化

逻辑回归的目标函数:

 分类也是在这个目标函数中增加正则化项就行了,道理是相同的。

包含正则化项的表达式的微分

 因为是加法,所以对各部分进行偏微分:

最终的微分结果:

 把这个微分结果代入到参数更新表达式里去:

一般不对θ0应用正则化。R(θ)对θ0微分的结果为0,所以j=0时表达式4.3.14中的λθj就消失了。因此,实际上我们需要像这样区分两种情况:

 逻辑回归的流程也是一样

4 学习曲线

前面我们聊了很多过拟合的话题,而反过来又有一种叫作欠拟合的状态,用英文说是underfitting。在这种情况下模型的性能也会变差。

比如用直线对图中这种拥有复杂边界线的数据进行分类的情况,无论怎样做都不能很好地分类,最终的精度会很差。

区分过拟合与欠拟合

考虑一下使用这样的10个训练数据进行回归的场景

 这里我们先假设fθ(x)是一次函数。接着,只随便选择其中的2个数据用作训练数据:

在这个状态下,2个点都完美拟合,误差为0。

把10个数据都用来训练:

如果模型过于简单,那么随着数据量的增加,误差也会一点点变大。换句话说就是精度会一点点下降。

以数据的数量为横轴、以精度为纵轴的图上,形状大体上就是这样的:

一开始精度很高,但随着数据量的增加,精度一点点地变低了。

接下来用测试数据来评估一下。假设在刚才的10个训练数据之外,还有测试数据。我们用这些测试数据来评估各个模型,之后用同样的方法求出精度,并画成图。

训练数据较少时训练好的模型难以预测未知的数据,所以精度很低;反过来说,训练数据变多时,预测精度就会一点点地变高。

将两份数据的精度用图来展示后,如果是这种形状,就说明出现了欠拟合的状态。也有一种说法叫作高偏差,指的是一回事。

图中需要注意的点在这里:

而在过拟合的情况下,图是这样的:

随着数据量的增加,使用训练数据时的精度一直很高,而使用测试数据时的精度一直没有上升到它的水准。

图中需要注意的点在这里:

像这样展示了数据数量和精度的图称为学习曲线。

通过学习曲线判断出是过拟合还是欠拟合之后,就可以采取相应的对策以便改进模型了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值