为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集中的每一个样本进行预测,并根据预测结果计算评价分数。
对于分类问题,常见的评价标准有准确率、精确率、召回率和F值等。给定测试集 𝒯 = {(𝒙(1), 𝑦(1)), ⋯ , (𝒙(𝑁), 𝑦(𝑁))},假设标签 𝑦(𝑛) ∈ {1, ⋯ , 𝐶},用学习好的模型𝑓(𝒙; 𝜃∗)对测试集中的每一个样本进行预测,结果为{y^(1), ⋯y^(N)}。
准确率 最常用的评价指标为准确率(Accuracy):
其中𝐼(⋅)为指示函数.
错误率 和准确率相对应的就是错误率(Error Rate):
精确率和召回率 准确率是所有类别整体性能的平均,如果希望对每个类都进行性能估计,就需要计算精确率(Precision)和召回率(Recall)。精确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,在机器学习的评价中也被大量使用。
对于类别𝑐来说,模型在测试集上的结果可以分为以下四种情况:
(1) 真正例(True Positive,TP):一个样本的真实类别为𝑐并且模型正确地预测为类别𝑐.这类样本数量记为
(2) 假负例(False Negative,FN):一个样本的真实类别为𝑐,模型错误地预测为其他类.这类样本数量记为
(3) 假正例(False Positive,FP):一个样本的真实类别为其他类,模型错误地预测为类别𝑐.这类样本数量记为
(4) 真负例(True Negative,TN):一个样本的真实类别为其他类,模型也预测为其他类.这类样本数量记为𝑇𝑁𝑐。对于类别𝑐来说,这种情况一般不需要关注。
这四种情况的关系可以用如表2.3所示的混淆矩阵(Confusion Matrix)来表示。
根据上面的定义,我们可以进一步定义查准率、查全率和F值。
精确率(Precision),也叫精度或查准率,类别 𝑐 的查准率是所有预测为类别𝑐的样本中预测正确的比例:
召回率(Recall),也叫查全率,类别𝑐的查全率是所有真实标签为类别𝑐的样本中预测正确的比例:
F值(F Measure)是一个综合指标,为精确率和召回率的调和平均:
其中𝛽 用于平衡精确率和召回率的重要性,一般取值为1.𝛽 = 1时的F值称为F1值,是精确率和召回率的调和平均。
宏平均和微平均 为了计算分类算法在所有类别上的总体精确率、召回率和 F1值,经常使用两种平均方法,分别称为宏平均(Macro Average)和微平均(Mi-cro Average)。
宏平均是每一类的性能指标的算术平均值:
值得注意的是,在有些文献上F1值的宏平均为。
微平均是每一个样本的性能指标的算术平均值.对于单个样本而言,它的精确率和召回率是相同的(要么都是1,要么都是0)。因此精确率的微平均和召回率的微平均是相同的.同理,F1值的微平均指标是相同的。当不同类别的样本数量不均衡时,使用宏平均会比微平均更合理些。宏平均会更关注小类别上的评价指标。
在实际应用中,我们也可以通过调整分类模型的阈值来进行更全面的评价,比如AUC(Area Under Curve)、ROC(Receiver Operating Characteristic)曲线、PR(Precision-Recall)曲线等.此外,很多任务还有自己专门的评价方式,比如TopN准确率。
交叉验证(Cross-Validation)是一种比较好的衡量机器学习模型的统计分析方法,可以有效避免划分训练集和测试集时的随机性对评价结果造成的影响。我们可以把原始数据集平均分为𝐾 组不重复的子集,每次选 𝐾 − 1 组子集作为训练集,剩下的一组子集作为验证集。这样可以进行𝐾 次试验并得到𝐾 个模型,将这𝐾 个模型在各自验证集上的错误率的平均作为分类器的评价。