模型评估
在计算机科学特别是机器学习领域中,对模型的评估至关重要。只有选择与问题相匹配的评估方法,才能快速的发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型评估分为离线评估和在线评估两个阶段。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有不同。
一 评估指标的局限性
1、准确率的局限性
准确率是分类任务中常用的一个评估指标,它是指分类正确的样本数与总样本数的比例,即
A c c u r a c y = n c o r r e c t n t o t a l Accuracy = \frac{n_{correct}}{n_{total}} Accuracy=ntotalncorrect
其中 n c o r r e c t n_{correct} ncorrect 为被正确分类的样本个数, n t o t a l n_{total} ntotal 为样本总数。
准确率这一评估指标存在的明显的局限性是:当正负样本数非常不均衡,即使模型的准确率指标很高,其实际应用的结果也不会令人满意。比如,当负样本占总样本数的99%,分类器如果把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同样本的比例非常不均衡,比例大的类别往往成为影响准确率的最主要因素。
上述情况可以采用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。
2、精确率与召回率的权衡
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。
在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision(精确量)和Recall(召回率)值来衡量排序模型的性能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置上的准确率Precision@N和前N个位置上的召回率Recall@N。
Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。
为了综合评估一个排序模型的好坏,不仅要看在不同Top N下的Precision@N和Recall@N,而且最好绘制出模型的P-R曲线(Precision-Recall)。
P-R曲线的横坐标是召回率,纵坐标是精确率。对于一个排序模型,其P-R曲线上的一个点代表在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和准确率。整条P-R曲线是通过将阈值从高到低移动而产生的。
P − R 曲 线 P-R曲线 P−R曲线
由图可见,当召回率接近0,准确率为0.9,说明模型即使得分最高的几个样本也存在预测错误的情况。随着召回率的增加,精确率呈下降趋势。这说明只用某个点对应的精确率和召回率是不能全面衡量模型的性能,只有通过P-R曲线的整体表现才能够对模型进行更为全面的评估。
此外,F1 score和ROC曲线也能综合反映一个排序模型的性能。F1 score是精确率和召回率的调和平均值,它定义为
F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F1 = \frac{2×precision×recall}{precision+recall} F1=precision+recall2×precision×recall