我们想知道通过采取一个方法,是否使得误差变小。如果有一个量化的数值评估,通过这个数字的大小,我们可以得到误差变大了还是变小了。在这里,推荐大家在交叉验证集上实现误差分析,而不是在测试集上。
那么怎么选择一个量化数值评估,也就是合适的误差度量值。
例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有0.5%。然而我们通过训练而得到的神经网络算法却有1%的误差。这时,误差的大小是不能视为评判算法效果的依据,也就是不能作为误差度量值。
因此,我们需要思考一种合适的度量。
我们将算法预测的结果分为四种情况:
1.正确肯定(True Positive真阳性,TP):预测为真,实际为真
2.正确否定(True Negative真阴性,TN):预测为假,实际为假
3.错误肯定(False Positive假阳性,FP):预测为真,实际为假
4.错误否定(False Negitive假阴性,FN):预测为假,实际为真
则:
查准率Precision = TP/(TP + FP)。例如,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
召回率/查全率Recall = TP/(TP+FN)。例如,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
这样,对于我们刚才那个总是预测病人肿瘤为良性的算法,其查全率为1。
那么查准率和召回率之间的关系是怎样的呢。
我们继续用预测肿瘤性质的例子。假使,我们的算法输出的结果在0-1之间,我们使用阈值0.5来预测真和假。
若使用比0.5更大的阈值,如0.7,0.9,这样做会减少错误预测病人为恶性肿瘤的情况,同时会增加未能成功预测肿瘤为恶性的情况,这样一来,查准率会随之变大。
相反,若使用更小的阈值,预测恶性肿瘤的情况会增多,也就是查全率会随之增大。这样做的目的,是尽可能让所有可能是恶性肿瘤的病人都得到进一步的检查、诊断。
我们绘制不同阈值情况下,查准率和查全率之间的关系。
现在我们有了两个度量值:查准率和查全率。那么我们到底需要哪一个,或者说怎么权衡两者之间的关系,我们更加希望只用一个值,就能得到很好的效果。
从图中可以看出,结合实际,单独选择查准率和查全率都不合适。或者去两者的平均值也不合适,比如,一个为1,一个为0,显然是不行的。我们采用下面一种方法,解决我们的疑问。
这时计算 F1值 (F1 Score),我们选择使得F1值最高的阈值。