模型评估

作者: 小王子特洛伊 | 来源:发表于2019-07-13 22:54 被阅读36次

Debugging

当我们实现了一个机器学习算法后,通常需要分析并解决一些性能问题,比如我们在预测新的测试样本时产生很大的误差,我们需要怎么做呢?通常有以下几种做法:

  • 获取更多数据
    解决高方差问题
  • 减少特征
    解决高方差问题
  • 增加特征
    解决高偏差问题
  • 增加多项式
    解决高偏差问题
  • 增大正则项系数 \lambda
    解决高方差问题
  • 减小正则项系数 \lambda
    解决高偏差问题

交叉验证

将原始训练样本随机抽取 30% 作为测试集,剩下 70% 作为训练集。然后在训练集进行训练并得到最小误差参数 \theta,最后计算模型在测试集中的误差作为模型评估标准,线性回归通常采用平方误差:
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2

在逻辑回归中可以使用对数代价函数计算误差:
J(\theta)=-\frac{1}{m}\sum_{i=1}^my^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})logh_\theta(x^{(i)})

或者使用 0 / 1 误差,即预测错误时误差为 1,预测正确时误差为 0:
Error(h_\theta(x),y)=\begin{cases}1 & y=0 , h_\theta(x)\geq 0.5 & y=1, h_\theta(x) < 0.5 \\ 0 & y=0 , h_\theta(x)< 0.5 & y=1, h_\theta(x) \geq 0.5 \end{cases}

求所有样本的平均误差:
AverageError=\frac{1 }{m}\sum_{i=1}^mError(h_\theta(x^{(i)}),y^{(i)})

模型选择

d=1,h_\theta(x)=\theta_0+\theta_1x\\ d=2,h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2\\ \vdots\\ d=10,h_\theta(x)=\theta_0+\theta_1x+\cdots+\theta_{10}x^{10}

首先在算法中加入参数 d,代表模型的多项式阶数(degree of polynomial),然后将数据集分为训练集(60%)、验证集(Cross Validation,20%)、测试集(20%),并分别使用不同阶数的模型在训练集进行训练,得出各自的参数 \theta,在验证集中选择误差最小的模型作为最终选择, 最后通过测试集估测模型的泛化能力。

偏差(Bias)和方差(Variance)

通常简单(低阶)的模型参数较少,偏差较高,会造成欠拟合问题。复杂(高阶)的模型参数较多,方差较高,会造成过拟合问题。所以我们通常要分析模型是高偏差还是高方差,进而使用恰当的策略改进模型。

我们可以通过调节模型的多项式阶数,记作 d,来得到合适的模型。

可以发现,训练集误差 J_{train}(\theta) 随着多项式阶数 d 的增加持续下降,验证集误差随着多项式阶数 d 的增加先降后升。也就是说,如果模型在训练集和验证集都产生很大的误差,则是一个高偏差的模型,如果在验证集的误差远大于训练集的误差,则是一个高方差的模型,即:
\begin{cases}highbias&if,J_{cv} \approx J_{train} \\ highvariance&if,J_{cv} \gg J_{train}\end{cases}

正则化和偏差、方差

通常我们使用正则化的目的是让参数值尽可能地小,而正则项系数 \lambda 则是平衡参数权重和拟合程度之间的关系。通过上图可以发现,如果 \lambda 取值过大,会使得参数惩罚过重,使模型产生高偏差,从而导致欠拟合。如果 \lambda 取值过小,会使得参数权重过大,模型过于复杂,使模型产生高方差,泛化能力变差,从而导致过拟合。所以恰当的正则项系数对模型十分重要。我们可以选取一系列待定的正则项系数,比如 (0,0.01,0.02,\cdots,10.24),分别代入代价函数,在训练集进行拟合,然后在验证集中选择误差最小的模型作为最终选择,最后通过测试集估测模型的泛化能力。

可以发现,训练集的误差 J_{train} 随着 \lambda 的增大而增大。验证集的误差 J_{cv}\lambda 过大(underfitting)或过小(overfitting)都会很高。所以,如果当验证集误差 J_{cv} 和训练集误差 J_{train} 都很大时,说明正则项系数 \lambda 过大,参数过少,使模型产生了高偏差,从而导致了欠拟合。如果当验证集误差 J_{cv} 远大于训练集误差 J_{train} 时,说明正则项系数 \lambda 过小,参数过多,使模型产生了高方差,从而导致了过拟合。通过观察可以手动或自动得出使得验证集误差 J_{cv} 最小的点,然后选取该点对应的正则项系数 \lambda 即可。所以绘制学习曲线通常可以帮助我们分析算法是处于高偏差还是高方差。

样本数量和偏差、方差

可以发现,训练集的误差 J_{train} 会随着训练样本数量 m 的增加而增加,验证集的误差 J_{cv} 会随着训练样本数量 m 的增加而减小,因为随着样本的增加,泛化能力逐渐增强,所以数据越多,越能拟合出合适的模型。

在高偏差的情况下,训练集误差 J_{train} 会随着样本 m 的增加而增加,验证集的误差 J_{cv} 随着样本的增加而减少,但 m 增加到一定程度后 J_{cv} 下降逐渐趋缓,最后会收敛在一个较高的水平,得到的是比较大的 J_{train}J_{cv},所以在高偏差的情况下,增加样本并不能明显减小验证集的误差。

在高方差的情况下,训练集的误差 J_{train} 随着样本的增加而增加,验证集的误差 J_{cv} 随着样本的增加而减小,J_{cv}J_{train} 目前可能有很大一段差距,如果持续增加样本,J_{cv} 会持续下降,从而接近 J_{train},所以增加样本对高方差的模型是有明显帮助的。

神经网络

结构简单的神经网络,参数较少,虽然计算量小,但容易欠拟合。结构复杂的神经网络,参数较多,计算量大,容易过拟合。可以使用正则项优化,也可以比较不同层数或神经元数的模型在验证集的误差,进而选择合适的层数或神经元数。

参考

相关文章

  • 模型评估——模型评估方法

    Holdout检验 :是最简单直接的检验方法,它将原始样本数据集随机划分成训练集和测试集。 缺点就是不能保证训练集...

  • 机器学习面试题集-图解准确率,精确率,召回率

    今天进入第二章:模型评估 1. 什么是模型评估 模型训练后要对其进行评估,看模型表现如何,哪里可以改进 分类、排序...

  • 一文深度解读模型评估方法

    本文将总结机器学习最常见的模型评估指标。训练学习好的模型,通过客观地评估模型性能,才能更好实际运用决策。模型评估主...

  • 分类指标

    评估结果用于反应模型的好坏,必须设计合适的评估指标来测量该模型的好坏。模型的好坏是相对的,使用不同的评估指标对模型...

  • 西瓜书-模型评估与选择

    模型评估与选择 西瓜书第一章,模型评估与选择.

  • Evaluation of Maching Learning

    模型的评估分线上评估与线下评估,如何来对模型进行线上评估与线下评估呢?它们之间又有什么关系 首先怎么区别它们: 首...

  • 模型评估指标

    评估指标用于反映模型效果。在预测问题中,要评估模型的效果,就需要将模型预测结果f(X)和真实标注Y进行比较,评估指...

  • 机器学习(深度学习)常见面试题--基础知识篇

    1. 模型评估 在机器学习领域,模型评估至关重要,只有选择和问题相匹配的评估方法,才能更快更好的完成训练。将模型评...

  • 【百面机器学习】优化算法

    机器学习算法 = 模型表征 + 模型评估 + 优化算法。不同的优化算法对应的模型表征和评估指标分别为线性分类模型和...

  • 模型评估

    https://mp.weixin.qq.com/s/mepBsPIZaZhhVlumEJUErQ 各个模型评估方...

网友评论

    本文标题:模型评估

    本文链接:https://www.haomeiwen.com/subject/bqvbxctx.html