模型评估标准AUC(area under the curve)、Precision、Recall、PRC、F1-score

AUC值

AUC(area under the curve)由分类输出/结果得到的一个值,衡量分类效果。根据字面意思是曲线下面积,是一个范围在0和1之间的值,曲线下面积AUC是指ROC曲线下面积。AUC直观地反映了ROC曲线表达的分类能力(AUC = 1,代表完美分类器,0.5 < AUC < 1,优于随机分类器,0 < AUC < 0.5,差于随机分类器)。

ROC曲线

ROC是为了形象的衡量分类器的鲁棒性(无论选取多大的阈值,分类都能尽可能地正确),改变阈值绘制ROC曲线(FPR为横轴,TPR为纵轴

阈值是介于(0-1)之间的一个数,常取0.5(阈值的理解:对于一个班级的成绩,有考10,20,50,60,70,80,90,100等。如果将及格线定在60分,及格率可能为90%。如果将及格线定在70分,及格率可能为80%。如果将及格线定在90分,及格率可能为50%。即给定不同的分数线得到不同的及格率)。

我们知道阈值不同,分类的结果会受到影响。如果使用AUC评估模型,则考虑了阈值的变动,所以评估的效果更好

FPRTPR

假阳性率(False Positive Rate),负样本预测为正样本的可能性,越小越好;FPR=FP/(FP+TN)。真阳性率(True Positive Rate),正样本预测为正样本的可能性,越高越好;TPR=TP/(TP+FN)。有关实际值和预测值表格(混淆矩阵)如下:

                                                      

  1. True positive(TP),称为真阳率,表明实际是正样本预测成正样本的样本数
  2. False negative(FN),称为假阴率,表明实际是正样本预测成负样本的样本数
  3. False positive(FP),称为假阳率,表明实际是负样本预测成正样本的样本数
  4. True negative(TN),称为真阴率,表明实际是负样本预测成负样本的样本数

AUC细节

给出两个样本,分类器得到负例样本概率和正例样本概率分类器的性能好可以表述为正样本越接近1同时负样本越接近0越好,或者负样本越接近1同时正样本越接近0越好。

1 调节阈值

图中左上角就是ROC曲线(蓝色),其中横轴就是前面说的FPR(False Positive Rate),纵轴就是TPR(True Positive Rate)。 

阈值为0.8和0.5时,对应下面图箭头所指的点。这样,不同的阈值对应不同的点。最后所有的点就可以连在一起形成一条曲线,就是ROC曲线。

2 重叠区域

当蓝色区域与红色区域基本重叠时,ROC曲线就和接近y=x这条线了。

3 AUC表示的是正例排在负例前面的概率。 

第一个坐标系的AUC值表示,所有的正例都排在负例的前面。第二个AUC值,表示有百分之八十的正例排在负例的前面。

我们知道阈值不同,分类的结果会受到影响。如果使用AUC评估模型,则考虑了阈值的变动,所以评估的效果更好。

4 ROC曲线有一个很好的特性

当测试集中的正负样本分布发生变化了,ROC曲线可以保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。 当增加负样本的数量时,ROC曲线基本没有变化。

在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

 

参考文献

https://blog.csdn.net/liweibin1994/article/details/79462554

https://blog.csdn.net/mingyuli/article/details/81184674

 

Precision、Recall、PRC、F1-score

Precision指标在中文里可以称为查准率或者是精确率,Recall指标在中卫里常被称为查全率或者是召回率,查准率 P和查全率 R分别定义为:

                                                       

(1)P=TP/(TP+FP)         查准率(Precision)是指在所有系统判定的“真”的样本中,确实是真的的占比

(2)R=TP/(TP+TN)         查全率(Recall)是指在所有确实为真的样本中,被判为的“真”的占比

Accuracy = (TP+TN)/(TP+FP+FN+TN)=正确的预测/总的正反例

查准率和查全率是一对矛盾的度量,比如:我们如果希望好瓜尽可能多地选出来,则可以通过增加选瓜的数量来实现,如果将所有瓜都选上了,那么所有好瓜也必然被选上,但是这样查准率就会越低。

再说PRC, 其全称就是Precision Recall Curve,它以查准率为Y轴,、查全率为X轴做的图。它是综合评价整体结果的评估指标。所以,哪总类型(正或者负)样本多,权重就大。也就是通常说的『对样本不均衡敏感』。引入“平衡点”(BEP)来度量,他表示“查准率=查全率”时的取值,值越大表明分类器性能越好,以此比较我们一下子就能判断A较B好。

                                                                   

(3)F1=2*P*R/(P+R)。

BEP还是有点简化了,更常用的是F1度量:F1-score 就是一个综合考虑precision和recall的指标,比BEP更为常用。

怎么选择评估指标?

ROC和PRC在模型性能评估上效果都差不多,但需要注意的是,在正负样本分布得极不均匀(highly skewed datasets)的情况下,PRC比ROC能更有效地反应分类器的好坏。

 

参考文献

https://www.jianshu.com/p/2ad360edd219

https://www.cnblogs.com/skyfsm/p/8467613.html

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于多分类logistic回归结果,我们可以使用sklearn库中的相关函数来计算这些参数。具体步骤如下: 1. 导入必要的库和数据 ```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score, cross_val_predict from sklearn.metrics import accuracy_score, roc_auc_score, recall_score, precision_score, f1_score from sklearn.datasets import load_iris # 加载数据 iris = load_iris() X = iris.data y = iris.target ``` 2. 创建模型并进行十折交叉验证 ```python # 创建模型 clf = LogisticRegression(multi_class='auto', solver='lbfgs', max_iter=5000) # 进行十折交叉验证 scores = cross_val_score(clf, X, y, cv=10) y_pred = cross_val_predict(clf, X, y, cv=10) ``` 3. 计算各个参数 ```python # 计算accuracy accuracy = accuracy_score(y, y_pred) # 计算auc auc = roc_auc_score(y, y_pred, multi_class='ovo', average='weighted') # 计算recall recall = recall_score(y, y_pred, average='weighted') # 计算precision precision = precision_score(y, y_pred, average='weighted') # 计算F1-score f1 = f1_score(y, y_pred, average='weighted') ``` 其中,multi_class参数指定了多分类问题的处理方式,solver参数指定了优化器的选择,max_iter参数指定了最大迭代次数。cross_val_score函数可以得到十折交叉验证的得分,cross_val_predict函数可以得到每个样本的预测结果。通过调用相关函数,即可计算出accuracy、aucrecallprecision以及F1-score等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值