栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

二分类模型评价指标

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二分类模型评价指标

前言 该文只作为个人懒得每次都百度这个指标问题,收藏东西又太多不好翻找所作总结,仅供参考 1 混淆矩阵 混淆矩阵
预测正例预测反例
真实正例TP(真正例)FN(假反例)
真实反例FP(假正例)TN(真反例)
1.1 二分类问题的预测结果可以根据情况分成以下四类:
  • 真正例(True Positive):预测值为1,真实值为1

  • 假正例(False Positive):预测值为1,真实值为0

  • 真反例(True Negative):预测值为0,真实值为0

  • 假反例(False Negative):预测值为0,真实值为1

1.2 构造成结果的混淆矩阵
分类	        真实值:1	        真实值:0
预测值:1	TP(True Positive)	FP(False Positive)
预测值:0	FN(False Negative)	TN(True Negative)
1.3 关于混淆矩阵使用api接口生成结果的一个注意说明
  • 我们利用 sklearn中的 confusion_matrix 函数来得到混淆矩阵,函数原型为:
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)
  • y_true:样本真实的分类标签列表

  • y_pred:样本预测的分类结果列表

  • labels:类别列表,可用于对类别重新排序或选择类别子集。如果默认,则将y_true 或y_pred 中至少出现一次的类别按排序顺序构成混淆矩阵。

  • sample_weight:样本权重

1.4注意:生成结果对应关系为:
TN|FP
FN|TP
  • 注:这个顺序才是api输出的顺序,而不是按照上方混淆矩阵表格那样的顺序

  • api使用的例子见参考链接1,此处不再赘述

2 准确率,精确率,召回率,F1得分,logloss 2.1 精准率又称查准率: P = T P T P + F P P = frac{TP}{TP + FP} P=TP+FPTP​
2.2 召回率又称查全率: R = T P T P + F N R = frac{TP}{TP+FN} R=TP+FNTP​
2.3 F1:精准率和召回率的调和平均 F 1 = 2 ∗ P ∗ R P + R F1 = frac{2 * P * R}{P + R} F1=P+R2∗P∗R​
2.4 准确率

A c c u r a c y = 预 测 对 的 样 本 数 样 本 总 数 = T P + T N T P + T N + F P + F N Accuracy = frac{预测对的样本数}{样本总数} = frac{TP + TN}{TP + TN + FP + FN} Accuracy=样本总数预测对的样本数​=TP+TN+FP+FNTP+TN​

2.5关于精确率,召回率异同之处,此处简单介绍,可以参考链接2
  • 精准率可以解释为,预测为正例的样本中,有多少是真的正例(你认为的该类样本,有多少猜对了(猜的精确性如何))

  • 召回率可以解释为,真实的正例的样本中,有多少被预测出来(该类样本有多少被找出来了(召回了多少))

2.6 二分类对数损失 l o g l o s s = − ( y ∗ l o g ( p ) + ( 1 − y ) ∗ l o g ( 1 − p ) ) logloss = -(y * log(p) + (1-y) * log(1-p)) logloss=−(y∗log(p)+(1−y)∗log(1−p))
3 AUC值与ROC曲线 3.1 AUC是ROC曲线的量化指标,即ROC曲线下的面积。AUC值越大越好,即面积曲线下面积越大越好。
  • AUC的意义:随机抽取一对正负样本,AUC是把正样本预测为1的概率大于把负样本预测为1的概率的概率。这句话有点拗口,用公式写就是:

  • 求解AUC方法

3.2 ROC曲线

  • ROC曲线横轴FPR,纵轴TPR下面积,反映整体性能,也就是预测结果的好坏(正例在前,反例在后)。
此处也是搬运同事对评级指标的总结,感谢‍ 3.3 auc使用api注意事项
  • 此处直接看参考链接,注意使用api的参数问题以及不同api的区别
4 GAUC

5 KS

7

  • KS(Kolmogorov-Smirnov):好坏样本之间累计分布的差值(最大值),用于评估模型的风险区分能力。好坏样本的累计差异越大,模型的风险区分能力越强,KS指标越大。

  • 具体KS例子以及评级指标该参考链接中也有

  • 正负样本的洛伦兹曲线构成,反映了模型对正负样本的区分能力,大于0.2才有区分能力,接近1更好

6 G-Mean
  • G-Mean是另外一个指标,也能评价不平衡数据的模型表现,其计算公式如下。

对正样本召回率和对负样本召回率相乘再开根号

G − M e a n = R e c a l l ∗ S p e c i f i c i t y = T P T P + F N ∗ T N T N + F P G-Mean = sqrt{Recall * Specificity} \ = sqrt{frac{TP}{TP+FN} * frac{TN}{TN+FP}} G−Mean=Recall∗Specificity ​=TP+FNTP​∗TN+FPTN​ ​

  • 数据不均衡时(小样本)可以参考的评价指标,正例准确率与负例准确率的综合指标
7 MCC
  • MCC是应用在机器学习中,用以测量二分类的分类性能的指标,该指标考虑了真阳性,真阴性,假阳性和假阴性,通常认为该指标是一个比较均衡的指标,即使是在两类别的样本含量差别很大时,也可以应用它。

  • MCC本质上是一个描述实际分类与预测分类之间的相关系数,它的取值范围为[-1,1],取值为1时表示对受试对象的完美预测,取值为0时表示预测的结果还不如随机预测的结果,-1是指预测分类和实际分类完全不一致。

M C C = T P ∗ T N − F P ∗ F N ( T P + F P ) ( T P + F N ) ( T N + F P ) ( T N + F N ) MCC = frac{TP * TN - FP*FN}{sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}} MCC=(TP+FP)(TP+FN)(TN+FP)(TN+FN) ​TP∗TN−FP∗FN​

  • 描述实际分类与预测分类之间的相关系数,越接近1越好,-1表示与真实结果相反
8 参考链接
  • python实现混淆矩阵 - 知乎 (zhihu.com)

  • 如何解释召回率与精确率? - 知乎 (zhihu.com)

  • 二分类问题常见的评价指标 - 知乎 (zhihu.com)

  • sklearn计算auc的坑----model.predict()和 model.predict_proba()的区别_ODIMAYA的博客-CSDN博客_model.predict_proba

  • 模型评价指标—KS_阿黎逸阳的博客-CSDN博客_ks模型评估

  • 二分类问题中的评估指标,附代码(超详细)_WGS.的博客-CSDN博客_二分类问题的评价指标

  • 最后一个链接近乎涵盖所有的指标,可以多看看,真的很全面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号