机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等

机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等模型评估是整个建模周期中基础且核心的部分。选择恰当的评估指标,可以使模型训练和测试事半功倍。本文介绍分类模型评估的几个常用指标。理解并能熟练使用这几个指标对模型进行评估,基本可以应对初中级的数据建模工作。 一. 错误率和准确率 80% 的准确率似乎还不错,该模型将所有样本全部预…

机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等

模型评估是整个建模周期中基础且核心的部分。选择恰当的评估指标,可以使模型训练和测试事半功倍。本文介绍分类模型评估的几个常用指标。理解并能熟练使用这几个指标对模型进行评估,基本可以应对初中级的数据建模工作。

一. 错误率和准确率

错误率(error rate)准确率(accuracy) 是最常用的两个评价指标, 直观易懂

错误率即预测错误的样本占总样本的比率;准确率则是预测正确的样本占总样本的比率;两者之和为1

举个例子:100个真实的测试样本中有80个正例,20个反例,模型预测结果全是正例,则该模型的错误率和准确率分别是多少?

很明显,此时错误率为20/100=20%, 准确率 1-20%=80%

80% 的准确率似乎还不错,该模型将所有样本全部预测为了正例,却依然得到了80% 的准确率。原因就在于样本不平衡较为严重,一旦样本分布不平衡,错误率和准确率两个衡量指标便很难对模型性能进行有效衡量。

此时,我们便要进入下一层,对于不平衡类别样本,或者说有没有更加通用的衡量指标来有效的评估模型

二. 混淆矩阵,Precision,Recall

2.1 混淆矩阵

介绍F1分数及AUC,ROC之前,我们需要先拿出一个有名的混淆矩阵(confusion matrix) 框线图 机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等

True Positive (TP):模型将正例预测正确的个数,即样本为正例,模型预测为正例

True Negative (TN): 模型将反例预测正确的个数,即样本为反例,模型预测为反例

False Positive (FP): 模型将反例预测错误的个数,即样本为反例,模型预测为正例

False Negative (FN): 模型将正例预测错误的个数,即样本为正例,模型预测为反例

举个例子:待检测的潜在新冠病毒携带者有10人阳性(携带),90人阴性(未携带),测试仪器对10个阳性样本预测为8阳性,2阴性;对90个阴性样本预测为80阴性,10阳性

本例子中,我们可以计算出(此处要特别注意,TP,TN,FP,FN均指的是个数,不是百分比):

TP = 8; TN = 80; FP = 10; FN = 2

提出混淆矩阵,是为了计算 精确率 precision 和 召回率 recall,这两个概念很容易搞混或者难以记忆。但只要记住precision 是针对预测结果的精确度量,而 recall 是针对真实样本的召回度量,就可以很好的理解和记忆了

 

2.2 精确率和召回率

Precision,针对预测结果而言的,表示预测为正的样本中真实也为正的样本所占比例。即原本为正的样本预测也为正,TP;原本为负的样本预测为正,FP。故 precision = TP / (TP + FP)上面例子的计算结果即为 8/(8+10)=8/18

Recall, 针对真实样本而言,表示原本为正的样本有多大比例被预测正确了。即原本为正的样本预测也为正,TP;原本为正的样本预测为负,FN故 recall = TP / (TP + FN)

上面例子的计算结果即为 8/(8+2)=8/10

可见模型的 recall 尚可,但 precision 较低,该模型倾向于将潜在病毒携带者预测为阳性。那么它是一个好模型吗,应该说还不错,但在该场景下,我们其实应该进一步提高其 召回率(recall) ,原因是,作为新冠病毒检测,宁可检测为阳性,再次进行检测,也不能放过本身是阳性但没有检测出来的情况。

三. F1-score / ROC /AUC 及代码实现

3.1 F1-score

F1-score是什么呢,其实就是综合考虑precision 和 recall 的结果而计算的衡量分数。数学上来看,F1-score 即是precision 和 recall 的调和平均数(Harmonic mean)F1-score = 2/(1/P+1/R) = 2PR/P+R

 

3.2 ROC 曲线

ROC (Receiver Operating Characteristic)曲线的绘制要用到混淆矩阵,ROC曲线的横坐标为真正例率false positive rate(FPR),纵坐标为假正例率 true positive rate(TPR),其中,FPR = TP / (TP + FN); TPR = FP / (FP + TN)可以看出FPR和recall的计算一样

以TPR为横轴,以FPR为横轴,以TPR为纵轴,即可绘制出ROC曲线,那么,TPR和FPR的每一个对应坐标点是怎么来的呢?我们知道,模型给出分类结果前,首先是输出类别概率,然后以默的0.5为阈值进行分类的。我们只需分别以每一个预测概率值为阈值,即可得到多组不同的预测结果,根据每组预测结果分别计算FPR和TPR,即可得到多组坐标值,从而绘制出ROC曲线图。

机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等

 

3.3 AUC

AUC 是 ROC 曲线下的面积,它是一个数值,沿着 ROC 横轴做积分可计算得到。其物理意义是随机给定一个正样本和一个负样本,将正样本预测为正的概率为p1, 将负样本预测为正的概率为p2, p1>p2 的概率即为AUC,可见AUC越大,模型分类效果越好。ACU可以很好的衡量分类器的分类性能,目前被广泛采用。

 

3.4 使用 sklearn 进行评估指标计算示例

a. 加载样例数据,搭建逻辑回归分类模型

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
X, y_true = load_breast_cancer(return_X_y=True)
clf = LogisticRegression(solver="liblinear", random_state=0).fit(X, y)
y_pred = clf.decision_function(X)

b. 计算各项指标

Accuracy

from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred) 

Precision, Recall

from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
precision_score(y_true, y_pred)recall_score(y_true, y_pred)

f1-score, AUC

from sklearn.metrics import f1_score
from sklearn.metrics import roc_auc_score
f1_score(y_true, y_pred)
roc_auc_score(y_true, y_pred)

今天的文章机器学习模型评估指标: 准确率, 精确率, F1-score, AUC 等分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/16528.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注