模型的效果评判及模型的进一步优化问题

模型的效果评判

对于之前无论是逻辑回归还是神经网络的方式得到的hθ(x)中的模型和θ,我们要判断该模型是否足够合适。

区别于感性目测的方法,我们有一个直观的评判标准,即精确度和召回率。

如果不合适,就需要适当的修改模型参数,来重新训练θ。

1.问题引入

我们要对一个01分类问题进行拟合。

对于我们获得的一组数据和一个模型,如果这个数据集中的样本分布不对称。例如,判断癌症的患病情况。

很显然,正常人和癌症病人的差距很大。

假如我们的算法得到的模型,预测误差是1%,看起来似乎问题不大。但如果癌症的发病率只有0.5%的话,这个误差就显的不可接受了。

比如给1000人,我们预测有10个人预测错了(正常人预测成癌症病人),但实际上只有5个人。那么我们预测的癌症患者可能就是15个。那么这很明显和现实差别很大。这个模型是不好的模型。

假如,我们只使用一个永远输出false的模型(ans=0)。那么我们的预测误差甚至会变成0.5%。看起来是不是比1%的误差更好?

当然,上面只是一个简单的例子,来引出下面我们所需要的更加优秀的评判标准。而不是单纯的,误差越低越好。

2.精确度和召回率

我们将模型的预测结果和样本的结果做出比较,然后得出四种情况,即下表:

样本(1)样本(0)
预测(1)真阳性假阳性
预测(0)假阴性真阴性

可以看出来,这四种情况:

  • 预测阳性。样本阳性为真阳性,样本为阴性为假阳性。
  • 预测阴性。样本阳性为假阴性,样本为阴性为真阴性。

基于上述四种情况,我们可以得出两个评判的标准,即精确度和召回率。
精 确 度 = 真 阳 性 预 测 阳 性 = 真 阳 性 真 阳 性 + 假 阳 性 = 预 测 阳 性 对 的 预 测 阳 性 对 的 + 预 测 阳 性 错 的 精确度=\frac{真阳性}{预测阳性}=\frac{真阳性}{真阳性+假阳性}=\frac{预测阳性对的}{预测阳性对的+预测阳性错的} ==+=+
召 回 率 = 真 阳 性 样 本 阳 性 = 真 阳 性 真 阳 性 + 假 阴 性 = 预 测 阳 性 对 的 预 测 阳 性 对 的 + 没 有 预 测 出 来 但 是 阳 性 的 召回率=\frac{真阳性}{样本阳性}=\frac{真阳性}{真阳性+假阴性}=\frac{预测阳性对的}{预测阳性对的+没有预测出来但是阳性的} ==+=+
说一下我的理解吧:

  • 精确度是衡量预测结果的准确性(就是预测结果中,有多少是预测对的)。
  • 召回率是衡量预测结果的有效性(就是预测结果中,预测出来的,占真实结果的比例)。

精确度很容易理解,就是模型的正确预测结果的概率。

召回率,就是预测对的结果,占所有阳性结果的比例。衡量,对于一些阳性样本,我们的模型到底能预测出来多少,看对于阳性样本的可信度。

3.回归样例

回到之前的预测癌症的样例中。

如果我们想让预测阳性的精确度升高,我们可以提高精确度需求,比如预测阳性,需要概率函数>0.7。

但是这样会同步降低召回率(没有预测出来的更多了)。

繁殖,想让召回率提高,可以降低精确度要求,比如预测阳性,只需要概率函数>0.3即可。

但这样会同步降低精确度(预测阳性但是预测错的更多了)。

我们大概能的出来这样一个曲线:

在这里插入图片描述

即精确度与召回率的关系,至于为何没办法两者都高,这就是算法模型的问题了。

注意这里有存在阈值。

4.确定算法的优劣

了解了精确度与召回率。我们就可以根据这两个参数来确定该算法模型的优劣了。

通常采用的衡量标准(有很多种标准)
F S c o r e = 2 P R P + R     其 中 P r e c i s i o n ( P ) 为 精 确 度 , R e c a l l ( R ) 为 召 回 率 F_{Score}=2\frac{PR}{P+R}\ \ \ 其中Precision(P)为精确度,Recall(R)为召回率 FScore=2P+RPR   Precision(P)Recall(R)
这样可以兼顾召回率和准确度,避免简单平均带来的某一值过高,某一值过低引发的平均值较高的状况。

模型的进一步优化思路

对于一个样本的学习,学习完后,使用另一个样本进行检测.针对检测结果的不同,模型函数的进一步优化方法问题汇总

对于一个正则化的代价函数
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 m θ j 2 ] J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^m\theta_j^2] J(θ)=2m1[i=1m(hθ(x(i))y(i))2+λj=1mθj2]
当我们发现训练后的它拟合测试集效果不好时。考虑以下进一步优化方法。

  • 使用更多的训练集
  • 减少特征向量(可能出现过拟合问题)
  • 增加特征向量,
  • 增加多项式特征向量
  • 增大λ
  • 减小λ

当然,这些方法都不是盲目使用的,下面将介绍如何分析拟合情况。

1.数据集分类

对于一种数据集,将其分为三个数据集合,训练集,测试集,交叉验证集即
60 % : ( x ( i ) , y ( i ) ) 20 % : ( x t e s t ( i ) , y t e s t ( i ) ) 20 % : ( x c v ( i ) , y c v ( i ) ) \begin{aligned} & 60\%:(x^{(i)},y^{(i)})\\ & 20\%:(x_{test}^{(i)},y_{test}^{(i)})\\ & 20\%:(x_{cv}^{(i)},y_{cv}^{(i)})\\ \end{aligned} 60%:(x(i),y(i))20%:(xtest(i),ytest(i))20%:(xcv(i),ycv(i))
对于训练集
J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2
对于交叉验证集
J c v ( θ ) = 1 2 m c v ∑ i = 1 m c v ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J_{cv}(\theta)=\frac{1}{2m_{cv}}\sum_{i=1}^{m_{cv}}(h_\theta(x^{(i)}_{cv})-y_{cv}^{(i)})^2 Jcv(θ)=2mcv1i=1mcv(hθ(xcv(i))ycv(i))2

对于测试集
J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 J_{test}(\theta)=\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\theta(x^{(i)}_{test})-y_{test}^{(i)})^2 Jtest(θ)=2mtest1i=1mtest(hθ(xtest(i))ytest(i))2

将训练集训练得到的输出函数h(x)放入测试集中比较得到模型的测试误差J_test(x)

比较错误。

对于01的逻辑回归

讨论逻辑回归测试误差

J t e s t ( θ ) = − 1 2 m t e s t ∑ i = 1 m t e s t y t e s t ( i ) log ⁡ h θ ( x t e s t ( i ) ) + ( 1 − y t e s t ( i ) ) log ⁡ h θ ( x t e s t ( i ) ) J_{test}(\theta)=-\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}y_{test}^{(i)}\log h_\theta(x^{(i)}_{test})+(1-y_{test}^{(i)})\log h_\theta (x_{test}^{(i)}) Jtest(θ)=2mtest1i=1mtestytest(i)loghθ(xtest(i))+(1ytest(i))loghθ(xtest(i))

2.特征值的改变

参考模型选择:

  1. h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1x hθ(x)=θ0+θ1x

  2. h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2 hθ(x)=θ0+θ1x+θ2x2

  3. h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + . . . + θ 3 x 3 h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+...+\theta_3x^3 hθ(x)=θ0+θ1x+θ2x2+...+θ3x3

  4. h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + . . . + θ m x m h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+...+\theta_mx^m hθ(x)=θ0+θ1x+θ2x2+...+θmxm

对于初始特征值少的模型,容易发生欠拟合。

使用初始特征值多的模型,容易发生过拟合。

对比我们的训练集(train)和交叉训练集(cross validation)

多项式的选择

以多项式中的特征值个数为x轴,误差为y轴,画出随多项式变化而变化的训练集误差交叉训练集误差图像
在这里插入图片描述

从图里面可以看出来,从左到右,随着多项式特征数增大。从左图的欠拟合主键成为右边的过拟合。

  • 训练集的拟合错误逐渐降低。
  • 交叉训练集拟合误差先降低后上升。

可以看出来有两种问题,

  • 偏差问题
    • 训练集拟合错误偏高
    • 交叉训练集拟合错误与训练集拟合错误相差不大
  • 方差问题
    • 训练集拟合错误偏低
    • 交叉训练集拟合错误 >> 训练集拟合错误

3.λ正则的改变

对于不同的λ选择,模型也是有着不同的表现。

对于带入不同的正则项
h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 m θ j 2 h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4\\ J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2 hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4J(θ)=2m1i=1m(hθ(x(i))y(i))2+2mλj=1mθj2
在这里插入图片描述

可以看到

  • λ过大,发生了欠拟合(左图)
  • λ过小,发生了过拟合(右图)

对于带入λ的模型函数,我们采用另外的三个训练函数来作为采用三个数据集来训练和验证的函数,即。
h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 m θ j 2 J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J c v ( θ ) = 1 2 m c v ∑ i = 1 m c v ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 \begin{aligned} & h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4\\ & J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2\\ & J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\\ & J_{cv}(\theta)=\frac{1}{2m_{cv}}\sum_{i=1}^{m_{cv}}(h_\theta(x^{(i)}_{cv})-y_{cv}^{(i)})^2\\ & J_{test}(\theta)=\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\theta(x^{(i)}_{test})-y_{test}^{(i)})^2 \end{aligned} hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4J(θ)=2m1i=1m(hθ(x(i))y(i))2+2mλj=1mθj2Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2Jcv(θ)=2mcv1i=1mcv(hθ(xcv(i))ycv(i))2Jtest(θ)=2mtest1i=1mtest(hθ(xtest(i))ytest(i))2
这里的训练集代价函数和代价函数中间有一个正则化的差别

这里训练集的定义是训练集的平方误差之和,但不考虑正则化项。

首先通过计算不同的λ所产生的最小代价函数J(θ)中的θ。

然后将θ带入训练集和交叉验证集。画出不同的λ得出的θ使训练集和交叉训练集变化的曲线。

对于以λ为自变量的三个误差函数的取值图像。

在这里插入图片描述

λ从小到大的过程中

  • 训练集误差从小到大。λ系数增大,惩罚力度增大,θ参数拟合变化,从过拟合->近似拟合->欠拟合。
  • 交叉验证集的误差先变小后变大。θ参数拟合,从一开始的过拟合(交叉验证集误差大)->近似拟合(交叉验证机误差减小)->欠拟合(交叉验证集误差再次增大)。

4.训练集大小的选择

对于训练集中的样本量

使用训练集和交叉验证集继续使平方项。

对于随着样本数量的增大,训练集代价函数和对比验证集代价函数的变动曲线如下图。

在这里插入图片描述

可以看出来,随着样本数量的增大

  • 训练集的拟合误差逐渐增大,最后趋向平稳(很好理解,样本越少,越好拟合)。
  • 交叉验证集的拟合误差逐渐减小,最后趋向平稳
    • 样本少的,训练集拟合和交叉验证集的拟合可能差的离谱。
    • 样本越多,效果越好。

但是还是有一个明显的问题。就是最后都趋向停留在高的误差率,这时候我们就要考虑其他的优化项了,此时再增大训练集,所带来的收益就会非常小。

5.神经网络模型的优劣比较

非常浅显易懂。

小型神经网络(层数少,变量少)

  • 容易发生欠拟合。
  • 计算容易。

大型神经网络(层数多,变量多)

  • 容易发生过拟合(可以使用正则化来优化)。
  • 计算复杂。

参考资料

B站吴恩达机器学习相关课程:https://www.bilibili.com/video/BV164411b7dx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值