模型泛化能力的评估(准确率、精确率、召回率、F1、ROC、AUC)与代码实现

泛化能力指训练好的模型在测试集上的表现
指标:准确度、精确率、召回率、F1值、ROC、AUC等。
对于二分类问题,有混淆矩阵:

实际结果 1 实际结果 0预测结果 111(TP) 10 (FP)预测结果 001(FN) 00 (TN)

T—-True; F—False; P(positive) =1; N(Negative) =0
注: 先看预测结果(P/N),再针对实际结果对比预测结果,给出判断结果(T/F)

定义
预测正确的结果占总样本的百分比
准确率 = (TP + TN) / (TP + TN + FP + FN)
特点
可以判断总的正确率,但在样本不均衡的情况下,并不能很好的来衡量结果。

from sklearn.metrics import accuracy_score
accuracy(y_test, y_pred)

定义
针对预测结果而言,含义是在所有被预测为正的样本中实际为正的样本的概率。
精确度 = TP/(TP+FP)
准确率与精确率的区别
准确率代表整体的预测准确程度,包含正样本和负样本;
精确率代表对正样本结果中的预测准确程度。

定义
针对原样本而言,在实际为正的样本中被预测为正的概率。
召回率 = TP/(TP+FN)

精确率和召回率可通过P-R图表示,两者是矛盾,无法做到双高。
F1-Score可以同时考虑精确率和召回率,让两者同时达到最高,取得平衡。
平衡点: F1-Score = 2 _Precision_Recall / (Precision + Recall)

TPR(真正率)= TP/(TP+FN) : 模型预测覆盖的程度
FPR(假正率) = FP/(FP+TN) : 模型虚报的程度
这两个指标分别针对不同类别计算,不会受到样本不平衡的影响。
ROC曲线
FPR为横坐标,TPR为纵坐标
TPR越大越好,FPR越小越好
因此ROC曲线越好越陡峭
AUC曲线
取值:[0.5, 1]
定义:表示ROC曲线下面的面积,用于判断模型的优劣
AUC判别标准:
0.5~0.7 : 效果较低
0.7~0.85 : 效果一般
0.85~0.95 : 效果很好
0.95~1 : 效果非常好

from sklearn.metrics import classification_report
model.score(y_test, y_pred)
model.classification_report(y_test, y_pred)

我在学这一块儿知识的时候会有疑惑:这么多指标到底看哪一个呢?
通常在选择最优模型时看的Accuracy和loss。后来接触了实际的项目发现,一个模型的部署要考虑其业务场景,比如当误报的风险比较大,漏报的风险不是很大时,要考虑Recall(这个要看具体的0和1是怎么指定的)。有些业务场景只需要全局的准确率足够高即可。

理论参考 《西瓜书》 BY 周志华
代码参考:github: datawhalechina
机器学习笔记

Original: https://blog.csdn.net/AAAAAAABBgg/article/details/125132880
Author: 请工作善待我
Title: 模型泛化能力的评估(准确率、精确率、召回率、F1、ROC、AUC)与代码实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/664201/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球