准确率、精确率、召回率、F1、AUC和ROC曲线其实都是评价模型好坏的指标,而且相互之间是有关系的,只是侧重点不同。我们知道二分类的混淆矩阵(confusion matrix)如下:
- 真正例(TP):实际上是正例的数据点被标记为正例
- 假正例(FP):实际上是反例的数据点被标记为正例
- 真反例(TN):实际上是反例的数据点被标记为反例
- 假反例(FN):实际上是正例的数据点被标记为反例

准确率 (accuracy)= 分类正确的数量/总样本量=(TP+TN)/总样本量 = (TP+TN)/(TP+TN+FP+FN
精确率(Precision)= 预测为正的样本中有多少是真正的正样本=TP/(TP+FP) ,也叫查准率);分类模型仅仅返回相关实例的能力
召回率(Recall)= 正类样本中有多少被预测正确了=TP/(TP+FN),也叫查全率;分类模型识别所有相关实例的能力。
F1值是精确率和召回率的调和均值,即F1=2PR/(P+R),相当于精确率和召回率的综合评价指标。

受试者特征曲线(ROC 曲线,Receiver Operating Characteristic curve):
ROC曲线的横坐标为false positive rate(FPR):FP/(FP+TN);假阳性率,即实际无病,但根据筛检被判为有病的百分比;在实际为0的样本中你预测为1的概率;假正率(FPR) = 1- 特异度 = FP/(FP+TN)
纵坐标为true positive rate(TPR):TP/(TP+FN);真阳性率,即实际有病,但根据筛检被判为有病的百分比;真正率(TPR) = 灵敏度 = TP/(TP+FN)
这两者都可以通过混淆矩阵计算得到。


ROC曲线的阈值问题
与前面的 P-R 曲线类似,ROC 曲线也是通过遍历所有阈值来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在 ROC 曲线图中也会沿着曲线滑动。
如何判断ROC曲线的好坏?
改变阈值只是不断地改变预测的正负样本数,即 TPR 和 FPR,但是曲线本身是不会变的。那么如何判断一个模型的 ROC 曲线是好的呢?这个还是要回归到我们的目的:FPR 表示模型虚报的响应程度,而 TPR 表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是 TPR 越高,同时 FPR 越低(即 ROC 曲线越陡),那么模型的性能就越好。
AUC(曲线下的面积)
完全随机的二分类器的AUC为0.5,虽然在不同的阈值下有不同的FPR和TPR,但相对面积更大,更靠近左上角的曲线代表着一个更加稳健的二分类器。
AUC 的一般判断标准
0.5-0.7: 效果较低,但用于预测股票已经很不错了
0.7-0.85: 效果一般
0.85-0.95: 效果很好
0.95-1: 效果非常好,但一般不太可能
check = clf.predict(xgb.DMatrix(train), ntree_limit=clf.best_ntree_limit) predictions = [round(value) for value in check]
# evaluate predictions
Xgbc_accuracy = accuracy_score(label, predictions)
Xgbc_precision = precision_score(label, predictions)
Xgbc_sensitivity = recall_score(label, predictions)
Xgbc_f1_score = f1_score(label, predictions)
#定义混淆矩阵,算出特异性
def specificity_score(y_true, y_predicted):
cm = confusion_matrix(y_true, y_predicted)
return cm[0, 0] / (cm[0, 0] + cm[0, 1])
Xgbc_specificity = specificity_score(label, predictions)
print('Xgbc_accuracy:%.3f,Xgbc_precision:%.3f, Xgbc_sensitivity:%.3f,Xgbc_specificity:%.3f,Xgbc_f1_score:%.3f'
%(Xgbc_accuracy,Xgbc_precision, Xgbc_sensitivity, Xgbc_specificity, Xgbc_f1_score ))
Xgbc_fpr,Xgbc_tpr,Xgbc_threasholds=roc_curve(label,check)
Xgbc_auc=roc_auc_score(label,check)
原创文章(本站视频密码:66668888),作者:xujunzju,如若转载,请注明出处:https://zyicu.cn/?p=9100