在机器学习、数据挖掘领域,工业界往往会根据实际的业务场景拟定相应的业务指标。本文旨在一起学习比较经典的三大类评价指标,其中第一、二类主要用于分类场景、第三类主要用于回归预测场景,基本思路是从概念公式,到优缺点,再到具体应用(分类问题,本文以二分类为例)。

1.准确率P、召回率R、F1 值

  • 定义

    • 准确率(Precision):P=TP/(TP+FP)。通俗地讲,就是预测正确的正例数据预测为正例数据的比例。
    • 召回率(Recall):R=TP/(TP+FN)。通俗地讲,就是预测为正例的数据实际为正例数据的比例
    • F1值(F score):
  • 思考
    • 正如下图所示,F1的值同时受到P、R的影响,单纯地追求P、R的提升并没有太大作用。在实际业务工程中,结合正负样本比,的确是一件非常有挑战的事。
    • 图像展示
    • 下面附上源码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cmfig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
x = np.linspace(0,1,100)
p,r = np.meshgrid(x,x)    #meshgrid函数创建一个二维的坐标网络
z = 2*p*r/(p+r)
ax.plot_surface(x,y,z,rstride=4,cstride=4,cmap=cm.YlGnBu_r)
ax.set_title('F1')  #标题
ax.set_xlabel('precision')   #x轴标签
ax.set_ylabel('recall')   #y轴标签
plt.show()

2.ROC、AUC

  • 概念

    • TPR=TP/(TP+FN)=TP/actual positives
    • FPR=FP/(FP+TN)=FP/actual negatives
    • ROC是由点(TPR,FPR)组成的曲线,AUC就是ROC的面积。AUC越大越好。
    • 一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting
  • 图像展示
  • 附上代码
library(ROCR)
p=c(0.5,0.6,0.55,0.4,0.7)
y=c(1,1,0,0,1)
pred = prediction(p, y)
perf = performance(pred,"tpr","fpr")
plot(perf,col="blue",lty=3, lwd=3,cex.lab=1.5, cex.axis=2, cex.main=1.5,main="ROC plot")
  • python版本计算AUC
from sklearn import metrics
def aucfun(act,pred):fpr, tpr, thresholds = metrics.roc_curve(act, pred, pos_label=1)return metrics.auc(fpr, tpr)
  • 直接利用AUC优化分类任务(R语言版)

    下面是代码
#生成训练数据
set.seed(1999)
x1 = rnorm(1000)
x2 = rnorm(1000)
z = 1 + 2*x1 + 3*x2
pr = 1/(1+exp(-z))
y = rbinom(1000,1,pr)     #使用logloss作为训练目标函数
df = data.frame(y=y,x1=x1,x2=x2)
glm.fit=glm( y~x1+x2,data=df,family="binomial")#下面使用auc作为训练目标函数
library(ROCR)CalAUC <- function(real,pred){rocr.pred=prediction(pred,real)rocr.perf=performance(rocr.pred,'auc')as.numeric(rocr.perf@y.values)
}
#初始值
beta0=c(1,1,1)loss <- function(beta){z=beta[1]+beta[2]*x1+beta[3]*x2pred=1/(1+exp(-z))-CalAUC(y,pred)
}res=optim(beta0,loss,method = "Nelder-Mead",control = list(maxit = 100))

3.PRC、ROC比较

  • AUC是ROC的积分(曲线下面积),是一个数值,一般认为越大越好,数值相对于曲线而言更容易当做调参的参照。
  • PR曲线会面临一个问题,当需要获得更高recall时,model需要输出更多的样本,precision可能会伴随出现下降/不变/升高,得到的曲线会出现浮动差异(出现锯齿),无法像ROC一样保证单调性。
  • 在正负样本分布得极不均匀(highly skewed datasets)的情况下,PRC比ROC能更有效地反应分类器的好坏。

4.mape平均绝对百分误差

  • 定义
  • 技巧
    • 在sklearn中,对于回归任务,一般都提供了mse损失函数(基于树的模型除外)。但有时我们会遇到sklearn中没有定义的损失函数,那么我们可以自定重写模型或者定义函数,下面以xgboost为模型,mape作为损失函数为例(grad、hess分别对应损失函数一阶导、二阶导)。
    • 代码
def mapeobj(preds,dtrain):gaps = dtrain.get_label()grad = np.sign(preds-gaps)/gapshess = 1/gapsgrad[(gaps==0)] = 0hess[(gaps==0)] = 0return grad,hess  def evalmape(preds, dtrain):gaps = dtrain.get_label()err = abs(gaps-preds)/gapserr[(gaps==0)] = 0err = np.mean(err)return 'error',err  

参考资源
1.关于AUC,你应该知道的和可能不知道的 (PS.最近才知道,这篇文章的作者是工大的校友啊)

准确率,召回率,F1 值、ROC,AUC、mse,mape评价指标相关推荐

  1. 准确率,召回率,F值,ROC,AUC

    准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...

  2. 精确度/召回率/F1值/Micro-F1和Macro-F1的理解

    如下图所示,假设有若干张图片,其中12张是狗的图片其余是猫的图片.现在利用程序去识别狗的图片,结果在识别出的8张图片中有5张是狗的图片,3张是猫的图片(属于误报). 图中,实心小圆代表狗的图片,虚心小 ...

  3. [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC

    一 为什么要评估模型? 一句话,想找到最有效的模型.模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标. 选定模型时一开始都是假设数据的分布是一定的,然而数据的分布会随着时间 ...

  4. 准确率/召回率/精准率/F值_模型评价

    准确率/召回率/精准率/F值 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择. 在训练数据集上运行模型(算法)并在测试数据集中测试效果, 迭代进行数据模型的修改, 这种方式被称为交 ...

  5. 准确率-召回率 - Precision-Recall

    Precision-Recall 准确率-召回率 本文翻译自 Precision-Recall 更多翻译可以看 Scikit-learn 某部分的中文翻译 用于评估分类器输出质量的 准确率-召回率 指 ...

  6. 【数据挖掘】K-NN 分类 ( 简介 | 分类概念 | K-NN 分类实例 | K-NN 分类准确度评估 | K-NN 分类结果评价指标 | 准确率 | 召回率 )

    文章目录 I . K-NN 简介 II . K-NN 分类 III . K-NN 分类实例 IV . K-NN 分类 准确性评估方法 V . 保持法 VI . kkk-交叉确认法 VII . K-NN ...

  7. 图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)

    在图像分类或者图像分割中,为评价模型的预测效果,在训练过程中通常需要比较预测值与真实标签值的差距,即误差. 目录 图像分类过程的评价指标 混淆矩阵 正确率/准确率 精准率 召回率 F1分数 图像分割过 ...

  8. 准确率 召回率_机器学习中F值(F-Measure)、准确率(Precision)、召回率(Recall)

    在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型的效果做评价. 业内目前常常采用的评价指标有准确率(Precision).召回率(Recall).F值(F-Measure)等,下图是不同机器学习 ...

  9. 我对于准确率---p值,召回率R值以及F值的理解

    再互联网广告的推荐系统和反作弊的实践中经常遇到准确率,召回率,F值几个东西,刚入行的时候,我经常搞混,直到后来我逐渐明白了. 举个列子! 我们用一个模型去判断一段时间的作弊流量,假设该段时间的流量是1 ...

最新文章

  1. HDU1272_并查集
  2. [ SAP ]MM Valuation System
  3. eclipse下创建Maven项目
  4. IDEA 自动生成 serialVersionUID 的设置
  5. 记录最近业务中出现的两个问题
  6. 网络工程师Day4--实验3-1 配置ACL过滤企业数据
  7. 人工智能的下个十年在推理?
  8. 不容易系列之(3)—— LELE的RPG难题 (递推dp)
  9. 因为分区表已变,使用再生龙恢复ubuntu系统后无法休眠的解决办法
  10. Pytorch优化器全总结(二)Adadelta、RMSprop、Adam、Adamax、AdamW、NAdam、SparseAdam
  11. mongos魔兽世界模拟器
  12. 什么是 JScript?
  13. AXI中READY与VALID之间握手关系
  14. 正常计算机的c盘空间多大,电脑C盘应该留多大空间?
  15. 期一完全的备份和星期四_星期四:备份您的东西
  16. 【JMX】-----JMX概述
  17. sio.savemat得到空struct解决方法
  18. Python爬虫学习笔记-第二课(网络请求模块上)
  19. 免费将PPT转换成PDF的教程,拿走不谢!
  20. java音乐网站论文_毕业论文基于javaweb的音乐网站的设计与实现.doc

热门文章

  1. java快速数据度数抵导入_java – 使用扫描仪从.txt文件读取度数符号
  2. 01 | 23届秋招嵌入式岗位薪资情况汇总
  3. 小米5 流量显示无服务器,出乎意料!小米Play这配置,简直伤透米粉心!自带流量能否挽救?...
  4. 大数据任务调度工具azkaban深入使用
  5. 限制外来计算机访问,禁止外来USB接口连接Win10系统电脑的方法
  6. 如何改变图片大小kb?图片尺寸怎么在线修改?
  7. android pay 支持什么手机,Samsung Pay支持哪些设备 Samsung Pay支持机型详解
  8. 季节前面为什么用in_英语中表示日期,什么时候用on什么时候用in,什么时候用at或for?就...-日期用in还是on-英语-简镜匀同学...
  9. 基于postCss的TaiWindCss源码解析
  10. 全面进军国际市场?酷派的手机“野心”拿什么来实现