在机器学习中,模型评估是指对训练好的模型进行性能评估的过程。评估模型的性能是为了确定模型在解决特定问题或任务上的效果如何。是机器学习流程中至关重要的一步,它能够在一定程度上帮助我们了解模型的优劣,并做出进一步的改进或决策。
本文图片皆引自吴恩达机器学习教学视频,是对视频内容的提炼和总结,本文内容适合正在入门的初学者。
注:评估模型性能时,最简单的做法是对数据集按照特殊的比例进行拆分,主流做法是将数据集按照7:3或者8:2的比例拆分成训练集和测试集。
用训练集(training set)训练模型参数,再用测试集(testing set)进行效果测试,可以生成训练集和测试集的损失函数随迭代轮次的变化曲线来观察。
注:更好的评估方案是,将数据集拆分成训练集、验证集(Validation Set)和测试集。拆分比例为6:2:2,这样做能够适用于筛选合适的模型,如下图:
注:图中有3个神经网络模型,分别用每一个模型在训练集上进行训练,会得到3组参数,将训练好的模型在验证集上做验证,查看每一个模型的损失函数Jcv(w,b),找到误差最小的模型,假设第二个模型在验证集上的损失最小,那么最后再把第二个模型放到测试集上进行测试。
用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集检验模型效果。
注:偏差和方差,偏差指的是模型预测值与真实值之间的差异,方差指的是模型预测值的变化范围;
注:训练出来的模型如果过于简单,在训练集和验证集上都会存在高偏差,如果模型过于复杂,会使模型出现过拟合,在训练集上表现良好,但是在验证集上误差较大。
注:是正则化系数,如果特别大的话,会导致w非常小,接近于0,也就是训练出来的函数只有b项,是一条平行于x轴的直线。过小,等于没有正则项,模型容易过拟合。所以也要选取合适的值。
模型在训练集上的错误率低,但是在验证集上偏高,说明模型存在高方差,高方差是过拟合的表现。
模型在训练集和验证集上的错误率均较高,但是错误率接近,说明模型存在高偏差,高偏差是 欠拟合 的表现。
模型在训练集的错误率高,在验证集的错误率更高,说明模型同时具有高偏差和高方差。同时具有高方差和高偏差的情况说明模型既没有很好地拟合训练数据,也没有很好地泛化到新数据。
一般训练数据较多时,为了查看选用模型是否合适,需要先将训练集的一小部分拿出来做训练,观察模型有没有高方差或者高偏差,便于及时作出调整策略,而不会浪费计算资源。
注:以罕见疾病诊断为例说明精确率(precision)和召回率(recall)的意义。
高精确率:意味着如果模型诊断出患者有某种疾病,那么患者可能确实患有该病。Precision = TP / (TP + FP)
高召回率:意味着如果患者患有某种疾病,那么被识别出来的概率很高。Recall=TP/(TP+FN)
注:经常需要在精确率和召回率之间做权衡,高的精确率往往对应低的召回率。能够最终靠调整阈值来进行选择。
F1分数(F1 score)可拿来评估一个模型的综合性能,被定义为精确率和召回率的调和平均数,在这个公式中分子是精确率和召回率的乘积,数值小的起最大的作用,所以如果模型的精确率或者召回率有一个偏低的线 score的数值变小。
精确率关注的是分类器在预测为正类的样本中的准确性,而准确率则关注整体样本的分类准确性。
精确率更适合用于处理偏斜数据集(即某个类别的样本数量远大于别的类别),因为它不受负类样本数量的影响。