机器学习有很多评估的指标。有了这些指标我们就横向的比较哪些模型的表现更好。我们先从整体上来看看主流的评估指标都有哪些:

分类问题评估指标:

  1. 准确率 – Accuracy
  2. 精确率(差准率)- Precision
  3. 召回率(查全率)- Recall
  4. F1分数
  5. ROC曲线
  6. AUC曲线

回归问题评估指标:

  1. MAE
  2. MSE

接下来我们看看分类模型的评估指标:

本文我们就来聊一聊准确率、召回率、精确率

1、混淆矩阵

了解上述概念前,我们先了解一下混淆矩阵

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵(matching matrix)。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。

2、准确率 – Accuracy :预测正确的结果占总样本的百分比

准确率 =(TP+TN)/(TP+TN+FP+FN)

虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效

3、精确率(差准率)- Precision :所有被预测为正的样本中实际为正的样本的概率(只针对正样本)

精准率 =TP/(TP+FP)

精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本

4、召回率(查全率)- Recall : 实际为正的样本中被预测为正样本的概率(只针对正样本)

召回率=TP/(TP+FN)

召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。
多分类计算也是一样的:

=====================================================================================

今天聊聊AUC,重点是公式和代码(20210331更新)

什么是AUC?

相信这个问题很多玩家都已经明白了,简单的概括一下,AUC(are under curve)是一个模型的评价指标,用于分类任务。
那么这个指标代表什么呢?这个指标想表达的含义,简单来说其实就是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。

具体关于AUC含义的分析:

1.浅层:auc就是一个衡量模型好坏的指标,是roc下方的面积

2.浅层:auc就是一个衡量模型排序的指标,它可以用来针对正负样本失衡的场景下的,模型择优

3.深层:他衡量的是排完序之后,随机从正样本中抽一个它的分数大于随机从负样本中抽取一个分数的概率。roc怎么绘制的。

接下来用代码实现一下几种auc的计算方式,其中第三种是博主自己想的,结果是一样的(最终思路相同,仅供参考)

方式一:

方式二:

,代表第i条样本的序号。(概率得分从小到大排,排在第rank个位置)

分别是正样本的个数和负样本的个数

只把正样本的序号加起来。

对于这个公式做如下解释和手推,如有不对请批评指正:

代码献上:

#第一种方式计算AUC的方式,直接用
import numpy as np
from sklearn.metrics import roc_auc_scorey_true = np.array([1,1,0,0,1,1,0])
y_scores = np.array([0.8,0.7,0.6,0.4,0.5,0.3,0.1])print("y_true is ",y_true)
print("y_scores is ",y_scores)
print("auc is ",roc_auc_score(y_true,y_scores))#第二种方式计算AUC的方式label_all = y_true.reshape((-1,1))
pred_all = y_scores.reshape((-1,1))
posNum = len(list(filter(lambda s :s[0] == 1,label_all)))
if(posNum>0):#负样本数量negNum = len(label_all) - posNum#对preall进行排序 [0.8,0.7,0.6,0.4,0.5,0.3,0.1]sortedq = sorted(enumerate(pred_all),key=lambda x:x[1])print(sortedq)posRankSum = 0#遍历预测序列for j in range(len(pred_all)):if(label_all[j][0] == 1):#print("+++++++++++",list(map(lambda x:x[0],sortedq)).index(j)+1)posRankSum += list(map(lambda x:x[0],sortedq)).index(j)+1#print("posRankSum------------",posRankSum)auc = (posRankSum-posNum*(posNum+1)/2)/(posNum*negNum)print(auc)#第三种方式,这种思路其实很简单,就是算正样本在负样本前面的个数
concatAB = np.stack((y_true,y_scores),1).reshape(-1,2)
sortAB = sorted(concatAB,key=lambda x:x[1],reverse=True)
posNum2 = len(list(filter(lambda s :s[0] == 1,label_all)))if posNum>0:# 负样本数量negNum2 = len(y_true) - posNum2sum = 0for i in range(len(sortAB)):if (sortAB[i][0] == 1):for j in range(i+1, len(sortAB)):if (sortAB[j][0] == 0):sum +=1print(sum)auc = sum/(posNum2*negNum2)print("auc-zl:",auc)

多分类f1分数_一文看懂分类模型的评估指标:准确率、精准率、召回率、F1等..._遇见高中生的博客-CSDN博客

瞎聊机器学习——多分类的精确率和召回率_二哥不像程序员的博客-CSDN博客_多分类问题的召回率

下次有机会再写回归模型的指标

机器学习——二分类、多分类的精确率和召回率相关推荐

  1. 机器学习中的二分类问题评价指标之精确率、召回率、F1值通俗理解

    引言:对于分类问题,我们在评估一个模型的好坏时,通常想到的是把该模型在测试集上分类结果正确的样本数量比上测试集的样本数量的比值结果,即准确率(精确率)作为评价准则.但除此之外,还有精确率和召回率作为二 ...

  2. python分类预测降低准确率_【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值...

    [火炉炼AI]机器学习011-分类模型的评估:准确率,精确率,召回率,F1值 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19 ...

  3. python计算召回率_机器学习之分类:精确率和召回率

    精确率 精确率指标尝试回答以下问题: 在被识别为正类别的样本中,确实为正类别的比例是多少? 精确率的定义如下: Precision = \dfrac{TP}{TP + FP} 注意:如果模型的预测结果 ...

  4. 机器学习分类模型中的评价指标介绍:准确率、精确率、召回率、ROC曲线

    文章来源:https://blog.csdn.net/wf592523813/article/details/95202448 1 二分类评价指标 准确率,精确率,召回率,F1-Score, AUC, ...

  5. 机器学习基础(五十三)—— 精确率与召回率(多分类问题精确率和召回率的计算)

    精确率(precision),召回率(recall)由混淆矩阵(confusion matrix)计算得来. 在信息检索中,精确率通常用于评价结果的质量,而召回率用来评价结果的完整性. 实际上,精确度 ...

  6. 机器学习分类问题指标评估内容详解(准确率、精准率、召回率、F1、ROC、AUC等)

    文章目录 前言 一.混淆矩阵(confusion matrix) 二.准确率,精准率,召回率,F1分数 1. 准确率(Accuracy) 2. 精确率(Precision) 3. 召回率(Recall ...

  7. 精确率、召回率、F1 值、ROC、AUC等分类模型评价指标含义与作用详解

    文章目录 摘要 一.精确率.召回率.F函数.准确率和错误率 1.定义 2.区别与应用 二.ROC曲线.P-R曲线.AUC 1.P-R曲线 2.ROC曲线 3.AUC 摘要 在涉及机器学习领域的分类问题 ...

  8. 吴恩达机器学习(二十二)精确率和召回率

    当面对一个机器学习问题时,有很多不同的思想来改进学习算法. 通过一个简单的算法来快速实现它,然后使用交叉验证集来测试数据: 画出相应的学习曲线: 误差分析:   机器学习分类模型存在一种情况叫偏斜类. ...

  9. scikit-learn:打印分类报告,求准确率、精确率、召回率、F1值等指标

    一.打印分类报告(使用scikit-learn库中的函数) from sklearn.metrics import classification_report# y_test为测试集真实标签, y_p ...

最新文章

  1. Ubuntu下dex2jar的安装和使用
  2. 基于标记的AR的OpenCV实现
  3. 教你怎么快速配置 React
  4. DataWorks搬站方案:Airflow作业迁移至DataWorks
  5. Leetcode--2. 两数相加
  6. 手动编译安装mysql-5.5.28a
  7. Android开发之广播
  8. Java-note-调试小技巧
  9. 语音识别如今发展到什么阶段了?
  10. Spring中IOC和DI的概念
  11. 关于网页导出Excel
  12. matlab 从 excel读取 日期_MATLAB一键记账它不香吗?
  13. fofa域名检测存活工具_fofaAPI获取url并批量检测4.22通达oa任意用户登录漏洞
  14. iOS 图片编辑——涂鸦——在图片上添加文字
  15. Nginx下的反向代理 双层代理 负载均衡
  16. imuupdate() 解算
  17. Affine-Transformation Parameters Regression for Face Alignment
  18. RTU、FTU、DTU、TTU都是什么鬼?
  19. Ubports安装和使用gedit和ros等记录(仅供参考)
  20. python乘法口诀倒序_利用Python的For控制流输出乘法口诀

热门文章

  1. 为什么非常想要一样东西的时候却得不到,但慢慢就不想要了?
  2. C++ opencv imread读不进来图片
  3. hcip(p2p网络与虚拟专线)
  4. 108将的绰号及其归宿
  5. html modal显示页面,Modal中显示HTML字符串
  6. Powershell知识点1:开启脚本限制 报错:无法加载文件,因为在此系统中禁止执行脚本
  7. 淘宝爬虫之强行登录如何解决Selenium被检测到的问题?
  8. 给2021金三银四的程序员们-投简历100份,1份面试通知都没收到,哪里出了问题
  9. 斑马ZM40条码打印机仅7K3
  10. 敷完面膜后要擦水乳吗_敷完面膜后要擦水乳吗