二分类问题常用的评估指标是精度(precision),召回率(recall),F1值(F1-score)
评估指标的原理:
通常以关注的类为正类positive,其他类为负类negative,分类器在测试数据上预测正确或不正确,结合正负类,4种情况出现的可能为:
将正类预测为正类(true positive)——用tp表示
将正类预测为负类(false negative)——用fn表示
将负类预测为正类(false positive)——用fp表示
将负类预测为负类(true negative)——用tn表示
用诊断病人是否有病,“有病”是被关注的正类,“没病”是不关注的负类。
应用
精度可以看作是预测数据的正确率(预测100个数据正确,其中有多少个是真的正确,这个值越高说明模型精度比较好),召回率可以看作是预测数据的实用性(预测的100个正确数据中真的正确占原本正确数据的百分比,这个值越高模型的价值越大。)有的模型预测精度很高,比如说预测出来的值都正确,但还有很多正确数据没预测出来,就可以说这个模型的价值不高。有的模型召回率很高,即所有正确的数据它全覆盖到了,但有点过拟合,存在错误数据也预测成了正确的,所以F1值就是一个对p和r的加权均值。一般来说,精度、召回率、F1值能很好地评估一个模型是否合适,F1值越高,模型越合适。
举个例子:
用经典的病人诊断例子:
则精度P为55.6%,召回率R为83.3%,F1值就不再算了。
当精度P和召回率R都很高的时候,F1值也会较高。
用代码演示:假设有10个病人问诊,7个是真有病,3个只是心理作用,诊断就是分类器(模型),1代表确有病,0代表没有病。
import numpy as np
from sklearn.metrics import precision_score,recall_score,f1_score
from sklearn.tree import DecisionTreeClassifier
y_true=np.array([1,0,1,0,1,