专栏首页备份机器学习性能评价指标汇总

机器学习性能评价指标汇总

1 分类

1.1 混淆矩阵

  • True Positive(真正, TP):将正类预测为正类数.
  • True Negative(真负 , TN):将负类预测为负类数.
  • False Positive(假正, FP):将负类预测为正类数 → 误报 (Type I error).
  • False Negative(假负 , FN):将正类预测为负类数 → 漏报 (Type II error).

关系如下表所示:

预测值=1

预测值=0

真实值=1

TP

FN

真实值=0

FP

TN

1.1.1 准确率 Accuracy, ACC

ACC(Accuracy) = \frac{TP+TN}{TP+TN+FP+FN}

注:在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义

1.1.2 精确率 或 查准率 Precision, P

P=\frac{TP}{TP+FP}

注: 精确率(precision)和准确率(accuracy)是不一样的

1.2.3 召回率 或 查全率 Recall, R

R=\frac{TP}{TP+FN}

1.2.4 F1 测量值

\frac{2}{F1} = \frac{1}{P} + \frac{1}{R} \\ F1 = \frac{2TP}{2TP + FP + FN}

注: F1 是精确率和召回率的调和均值

1.3 AUC

AUC 是 ROC (Receiver Operating Characteristic) 曲线以下的面积, 介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。

1.3.1 ROC 曲线

这里不赘述ROC的一些细节,参考ROC和AUC介绍以及如何计算AUC

ROC曲线关注两个指标:

true~positive~rate: TPR = \frac{TP}{TP + FN}\\ false~positive~rate: FPN = \frac{FP}{FP + TN}

ROC 曲线如图(a)所示,横坐标是false positive rate, FPN, 纵坐标是true positive rate, TPR

首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。

简单说:AUC值越大的分类器,正确率越高 :

  • AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  • 0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC=0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC<0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在 AUC<0.5 的情况。

1.3.2 为什么要使用ROC曲线 和 AUC 评价分类器

既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:

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

2 回归

2.1 平均绝对误差

1. http://www.cnblogs.com/dlml/p/4403482.html

  1. https://beader.me/2013/12/15/auc-roc/
  2. http://alexkong.net/2013/06/introduction-to-auc-and-roc/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • julia简易教程——安装Julia+jupyter notebooks

    在遇到Python的时候,我发现Python是最好的语言,但是在慢慢熟悉Julia 之后发现,Python依旧最好的语言 T_T ,原因有可能是系统原因还是其他...

    莫斯
  • Julia简易教程——3_复数和分数

    在Julia中, im 用来表示复数 i,表示 -1 的平方,因为i在编程语言中常见,所以用i m代替。

    莫斯
  • Linux 中指定使用的GPU

    其中左上侧有0、1、2、3的编号,表示GPU的编号,在后面指定GPU时需要使用这个编号。

    莫斯
  • duilib基本框架

    最近我一个同学在项目中使用到了duilib框架,但是之前并没有接触过,他与我讨论这方面的内容,看着官方给出的精美的例子,我对这个库有了很大的兴趣,我自己也是初学...

    Masimaro
  • 神经网络架构搜索——可微分搜索(SGAS)​

    NAS技术都有一个通病:在搜索过程中验证精度较高,但是在实际测试精度却没有那么高。传统的基于梯度搜索的DARTS技术,是根据block构建更大的超网,由于搜索的...

    AI异构
  • Unicode与JavaScript详解

    上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 ![](/blogimg/asset/...

    ruanyf
  • JavaScript 有个 Unicode 的天坑

    最近笔者在项目中遇到了emoji表情的处理,期间发现js处理多字节字符时会有较多坑,记录一下与各位分享。

    疯狂的技术宅
  • Unicode与JavaScript详解

    上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 ? 一、Unicode是什么? Uni...

    ruanyf
  • 科技圈的Logo也要过十一,谷歌VS百度,谁丑谁尴尬?

    镁客网
  • 【Objective-C】05-第一个OC的类

    说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,...

    猿人谷

扫码关注云+社区

领取腾讯云代金券