以前看这东西经常迷惑,以为评估模型好坏的标准就是看预测对了多少,即:
正确率(accuracy) = 预测对的 / 总数。但是,不能总是用这种简单的指标来评测模型的好坏。写在最前面的一点,auc,roc,recall和precision都基于混淆矩阵,他们之间是有联系的。混淆矩阵如下:

我们将算法预测的结果分为下面四种情况:
1)正确肯定(True Positive,TP):预测为真,实际为真
2)正确否定(True Negative,TN):预测为假,实际为假
3)错误肯定(False Positive,FP):预测为真,实际为假
4)错误否定(False Negative,FN):预测为假,实际为真
1、Recall、Precision和F1 Score
Precision(查准率) = TP / (TP + FP)。例如,在我们所有预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
Recall(召回率,吴恩达叫查全率) = TP / (TP + FN)。例如,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
如果我们希望提高查准率,即我们希望只在非常确信的情况下预测为真(肿瘤为恶性),我们可以使用比0.5更大的阈值,如0.7,0.9.这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。
如果我们希望提高召回率,尽可能的让有可能是恶性肿瘤的病人都得到进一步检查、诊断,我们可以使用比0.5更小的阈值,如0.3。根据不同的阈值,我们将查全率和召回率的关系绘制成图表,曲线的形状根据数据的不同而不同:

可以看出Precision和Recall是互相制约的关系。
我们希望有一个能帮助我们找到这个阈值的方法,一种方法是计算F1值(F1 Score),公式为:
选择F1值最大的阈值。
2、AUC和ROC
2.1、简介
AUC全称是Area Under roc Curve,是roc曲线下的面积。ROC全名是Receiver Operating Characteristic,是一个在二维平面上的曲线---ROC curve。横坐标是false positive rate(FPR),纵坐标是true positive rate(TRP)。对一个分类算法,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们可以得到一个经过(0,0), (1,1)的曲线,这就是分类器的ROC曲线。一般来说,曲线应该在(0,0), (1,1)连线(对角线)的上方。因为(0,0), (1,1)连线所形成的ROC曲线代表一个随机分类器。如果你的分类器在直线底下,说明你的分类器辣鸡。虽然,ROC curve来表示分类器很直观,但是,我们可以用一个数值来表示分类器的好坏,即AUC,它是ROC曲线下面的面积。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。
2.2、ROC和AUC
ROC由TPR和FPR组成,其中TPR = TP / (TP + FN) = Recall(TRP是召回率),FPR = FP / (FP + TN)。我们以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。

在ROC曲线中,可以曲线距离左上角越近,分类效果越好。然后用一个值表示,就有了AUC,好像没啥好说的。。。
网友评论