看博客上都在说书上关于代价曲线的介绍太过于简单,只考书中的内容无法理解,我当时看完竟然咩有这种感觉,看来功力是完完全全的不够啊!建议大家看原论文(有30多页,我没去看,有时间的朋友可以阅读一下)

知乎上这个版主的回答很好
机器学习(周志华)第2.3.4节中,代价曲线的理解?2017/11/17号更新的,有幸在写这篇之前看到^_^

主要参考博客:
1.西瓜书《机器学习》阅读笔记4——Chapter2_代价曲线
2.机器学习模型性能评估方法笔记
3.【西瓜书】周志华《机器学习》学习笔记与习题探讨(二)②

西瓜书中这段话说的很形象。
不同类型的错误所造成的后果不同。例如在医疗诊断中,错误的把患者诊断为健康人与错误的把健康人诊断为患者,看起来都是犯了“一次错误”,但后者的影响是增加了进一步检查的麻烦,前者的后果却可能是丧失了拯救生命的最佳时机。

为权衡不同类型的错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。

而在上一篇文章中我们提到为什么使用ROC曲线,以及ROC曲线的性质。
ROC曲线的一个优点就是,它和测试样本的类别分布于与误分类代价无关,即无论测试样本的正反例比例如何变化、无论误分类代价如何变化,分类器的ROC曲线都是不变的。一个指定的(类别分布,误分类代价)称为一个operating condition。

换句话说,前面介绍的性能度量,大都隐式地假设了“均等代价”。如果实际处理问题中,我们面临的是一个非均等代价问题,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”则可以达到目的。

以二分类为例,回顾一下几个概念。其中costijcost_{ij}表示将第ii类样本预测为第jj类样本的代价。


表2.2将第0类作为正类,第1类作为反类,令 D+D^+与 D−D^-分别代表样例集 DD的正例子集和反例子集。
“代价敏感”(cost-sensitive)错误率为:

E(f;D;cost)=1m⎛⎝∑xi∈D+I(f(xi)≠yi)×cost01+∑xi∈D−I(f(xi)≠yi)×cost10⎞⎠

E(f;D;cost)=\frac{1}{m}\left(\sum_{x_i \in D^+} I(f(x_i) \neq y_i)\times cost_{01} +\sum_{x_i\in D^-}I(f(x_i)\neq y_i)\times cost_{10}\right)

性能度量的方法:绘制代价曲线
代价曲线的横轴是正例概率代价P(+)costP(+)cost,纵轴是归一化代价 costnormcost_{norm} 。

P(+)cost=p×cost01p×cost01+(1−p)×cost10

P(+)cost=\frac{p\times cost_{01}}{p\times cost{01} + (1-p)\times cost_{10}}

costnorm=FNR×p×cost01+FPR×(1−p)×cost10p×cost01+(1−p)×cost10

cost_{norm}=\frac{FNR\times p\times cost_{01} + FPR\times (1-p)\times cost_{10}}{p\times cost{01} + (1-p)\times cost_{10}}
其中,p(or p(+)p(+))是样例为正例的概率;FNR是 假反例率;FPR是 假正例率

相信很多人和我一样看完上述公式不是很理解
就我查找的相关资料整理一下

分析理解:
令cost10=C(+|−)cost_{10} = C(+|-)表示实际为反例但预测成正例的代价
令cost01=C(−|+)cost_{01} = C(-|+)表示实际为正例但是预测为反例的代价

在介绍ROC曲线的末尾部分我们提到过一组指定的(类别分布,误分类代价)称作一个operating condition,并且对应ROC空间中的一簇iso-performance直线。

C(+|−)=C(−|+)C(+|−)=C(−|+)的情况下
令C(+|−)=C(−|+)=1C(+|−)=C(−|+)=1,此时期望代价就是错误率。并且现在operating condition就是p(+)p(+)。我们希望用实际使用时的性能来评估分类器,但是实际环境中的p(+)p(+)是未知的,所以应该得到所有可能的p(+)p(+)值上的性能来对分类器进行评估。
所以应该得到所有可能的p(+)p(+)值上的性能来对分类器进行评估。
此时,代价曲线的x轴表示p(+)p(+),y轴表示错误率。当x=0时,意味着测试集中全是反例,此时一个分类器在此测试集上的整体错误率等于把正例预测为反例的概率,也就是FNR。当x=1x=1时,意味着测试集中全是正例,此时一个分类器在此测试集上的整体错误率等于把反例预测为正例的概率,也就是FPR。这样ROC空间中的一个分类器对应的点,到代价空间中成了一条线段:(这句话如何理解?)

知乎博主给出的解释: 链接在文章顶部已经给出

1) 代价曲线,以下简称 CC,是参数曲线。这个从纵轴横轴定义就可以看出来了,而且参数是 。
2) 连接两点的线段如何用参数方程表示?假设两点分别是点 AA点BB ,如果想表示 ABAB连线所有点的集合就用λA+(1−λ)B\lambda A + (1-\lambda)B,λ∈[0,1]\lambda \in [0,1]。通过变化 λ\lambda,我们可以得到线段 ABAB。仔细对比一下 2) 中的式子和 CC 的定义,是不是有很多相通点?只不过λ\lambda变成了pp罢了AA 点呢,就是 (0,FPR)(0,FPR),即 P=0P=0 时对应的点。同理,BB 点(1,FNR)(1,FNR) 是 p=1p=1所对应的。题主试着变化一下 从 0 到 1,是不是这么一条线段呢?
3) 以上说的是不归一情况,必须为直线;如果归一情况,题主说对了~ 不一定是直线,而是一条凸或凹的曲线。(关于这句话我不明白,归一的话就是凹或凸的曲线)

跳回本文(看一个例子)

从左图的代价曲线图可以很容易地看出在什么条件下C4.5分类器更好,在什么条件下1R分类器更好。

继续分析:
要理解代价曲线,得直接从期望总体代价的式子入手。
我们知道,在二分类问题中,一个分类器对应一个阈值 η\eta ,一个阈值又对应着 ROC 曲线上的一个点,也就是 ROC 曲线上一个固定的 (FPR,TPR)(\text{FPR}, \text{TPR})

先不研究总体,只看单个分类器的期望代价,假设我们的分类器是

于是该分类器的期望代价就是

E[Cost]=∑i=01∑j=01cijPr[decideHi|Hj]Pr[Hj]

E[Cost]=\sum^1_{i=0}\sum^1_{j=0}c_{ij}Pr[decide H_i|H_j]Pr[H_j]
其中, cijc_{ij} 来自于我们定义的 cost matrix。
Pr[decide Hi∣Hj]\text{Pr} [\text{decide } H_i \mid H_j] 是条件概率,又称 likelihood。题主不知道是否熟悉这一说法,但是换个称呼就一定知道了

Pr[Hj]Pr[H_j]是先验概率,在周老师的书里, Pr[H1]=pPr[H_1]=p,所谓的正例概率。显然负例概率就是 Pr[H0]=1−Pr[H1]=1−pPr[H_0]=1-Pr[H_1]=1-p

根据周老师的语境,我们假设了c00,c11 c_{00},c_{11} 都是 0, 所以

E[Cost]=c10×(1−p)×FPR+c01×p×FNR

E[Cost]=c_{10}\times (1-p)\times FPR +c_{01}\times p\times FNR
建议题主把上面这个式子的化简自己操作一下,很简单,但是可以加深印象 :)

你看一下这个式子,是不是和书中 (2.25) 的分子一摸一样?分母不用管,分母存在只是为了归一化。

再次强调一下,E[Cost]E[Cost]目前只是代表单个分类器(不是学习器)的期望代价。那么,连接 (0, FPR) 和 (1, FNR) 的这条线段是什么意思呢?就是c01×pc_{01}\times p(正例先验概率代价)和该分类器的期望代价的关系。比如说,我们看图中的这条粗直线:随着正例先验概率的提高,该分类器的期望代价也随之线性提高。

有了上述的基础,我们就可以很清晰的得到:

C(+|−)≠C(−|+)C(+|-)\neq C(-|+)的情况下
此时需要同时把类别分布和误分类代价作为一个operating condition,然后考虑所有可能operating condition下的期望误差。
一个分类器(注意:这是一个分类器的)的期望代价为:

E[Cost]=FNR∗p(+)∗C(−∣+)+FPR∗p(−)∗C(+∣−)(1)

E[Cost]=FNR\ast p(+)\ast C(-\mid+)+FPR\ast p(-)\ast C(+\mid -)\tag{1}

最大期望代价在所有实例都被错误分类的情况下出现,有

maxE[Cost]=p(+)∗C(−∣+)+p(−)∗C(+∣−)(2)

maxE[Cost] = p(+)\ast C(-\mid +)+p(-)\ast C(+\mid -)\tag{2}
用(2)对公式(1)归一化,使最大期望代价为1:

Norm(E[Cost])=FNR∗p(+)∗C(−∣+)+FPR∗p(−)∗C(+∣−)p(+)∗C(−∣+)+p(−)∗C(+∣−)(3)

Norm(E[Cost])=\frac{FNR\ast p(+)*C(-\mid +)+FPR\ast p(-)\ast C(+\mid -)}{p(+)\ast C(-\mid+)+p(-)\ast C(+\mid -)}\tag{3}

x轴也需要包含误分类代价的信息,直接为p(+)∗C(−∣+)p(+)\ast C(−\mid+),并归一化到[0,1]范围:

PC(+)=p(+)∗C(−∣+)p(+)∗C(−∣+)+p(−)∗C(+∣−)(4)

PC(+)=\frac {p(+)\ast C(-\mid+)}{p(+)\ast C(-\mid +)+p(-)\ast C(+\mid -)}\tag{4}

还可以定义

PC(−)=p(−)∗C(+∣−)p(+)∗C(−∣+)+p(−)∗C(+∣−)(5)

PC(-)=\frac {p(-)\ast C(+\mid-)}{p(+)\ast C(-\mid +)+p(-)\ast C(+\mid -)}\tag{5}
于是有 PC(−)=1−PC(+)PC(-)=1-PC(+)

有(2)(3)得到:

Norm(E[Cost])=FNR∗PC(+)+FPR∗(1−PC(+))(6)

Norm(E[Cost])=FNR\ast PC(+) + FPR\ast (1 - PC(+))\tag{6}
现在以 PC(+)PC(+)作为x轴,以 Norm(E[Cost])Norm(E[Cost])作为y轴,得到代价敏感下的代价空间。按照公式(6)得到的一条直线就是一个分类器对应的代价曲线。

虽然代价敏感情况下分析分类器的期望误差看起来好像很困难,但实际上相对于代价不敏感情况,唯一的改变只是把x轴和y轴的定义一般化了,得到的代价直线是一样的。

代价曲线包含的面积问题

  1. 代价曲线可视化了正例先验概率(横轴)最小代价期望(纵轴)的关系。而反观 ROC 曲线,它可视化的是 FPR(横轴)TPR(纵轴),如果放在侦测理论的语境中,横纵轴又被分别称为误警率(False Alarm Rate)和侦测率(Detection Rate)。浓浓的战争氛围,没错,ROC 曲线最先就是用来评价雷达的好坏的,哪怕现在的教材,习题里没有一道雷达题压压阵也是不达标的。
  2. ROC 曲线坐标系(强调一下,是那个 1x1 的坐标系)中的一个点,可以对应代价曲线所在的坐标系中的一条线段。不严格点,咱可以把这种关系称为对偶(Dual)。强调这个概念是为了说明:这两类曲线是可以互相转换的。因为,一旦你获得了 ROC 曲线的所有信息,你就可以逐点画出另个坐标系里对应的线段;反之,如果你有一条代价曲线,你就可以通过画切线,看切线左右的截距来得到 FPR 和 FNR,(如果不明白,可以看题主提供的图片)。而有了这两个数字,你就又可以在 ROC 曲线的坐标系中描出相应的点。
  3. 那他们不一样在哪里?周老师提到,代价曲线包含了代价的权重c01,c10c_{01},c_{10} ,但依本人愚见,周老师还漏说了相当重要的一点,那就是代价曲线同时考虑了先验概率p<script type="math/tex" id="MathJax-Element-21880">p</script> 的影响。在 ROC 曲线,咱有 FPR 和 TPR 就可以描点,不需要先验概率 的半点信息,或者不严格地说: ROC 曲线只描述了 的情况;反观代价曲线,整个横轴就是先验概率啊!从这个角度想,大家是否可以直观理解对于同个分类器,为什么一边是点,一边是线段了呢?ROC 曲线坐标系中的一个点只考虑了 时的特例,而代价曲线坐标系中的一条线段则是把 从 到 所有的结果都展示给我们了!突然想到:ROC 曲线所折射的方法论其实就是统计学的频率派,因为人家不考虑先验啊,而近年(大概是 2006 吧)才出现的代价曲线,它所折射的恰是后来不断发展的贝叶斯派。知乎站内传送门:贝叶斯学派与频率学派有何不同?

现在说面积,第一个问题:曲线下面积评价的到底是什么?以周老师教材的语境,我认为是学习器,不是分类器。
简单来想,最终的代价曲线是无数不同的分类器所对应的线段围啊叠啊的产物,所以这个面积怎么也不可能是用来评价单个分类器的。
西瓜书原话如下:
如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为所有条件下学习器的期望总代价,如图2.5所示(这里我感觉作者回答有问题)

@petersg 在评论区中提到了极限,很是启发~所以我觉得可以这么严格定义代价曲线(不归一情况)

再往后我就跟不上节奏了,目前先理解到这,后面再补上。

模型评估与选择(后篇)-代价曲线相关推荐

  1. 模型评估与选择(中篇)-ROC曲线与AUC曲线

    P-R曲线 以二分类问题为例进行说明.分类结果的混淆矩阵如下图所示. 假设,现在我们用某一算法h对样本进行二分类(划分为正例.反例).由于算法可能与理想方法存在误差,因此在划分结果中,划分为正例的那部 ...

  2. 小吴的《机器学习 周志华》学习笔记 第二章 模型评估与选择

    小吴的<机器学习 周志华>学习笔记 第二章 模型评估与选择 上一周我们介绍了第一章的基础概念,这一次将带来第二章的前三节.后面的2.4 比较检验与2.5 偏差与方差,涉及概率论与数理统计概 ...

  3. 第二章——模型评估与选择

    2.1 经验误差与过拟合 先介绍几个专业名词: 错误率(error rate): 通常我们把分类错误的样本数占样本总数的比例称为错误率:即如果在 m m m个样本中有 a a a个样本分类错误,则错误 ...

  4. 机器学习笔记(二)模型评估与选择

    2.模型评估与选择 2.1经验误差和过拟合 不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合. 1)经验误差 错误率(errorrate):分类错误 ...

  5. 《机器学习》 —— 第二章:模型评估与选择 学习笔记

    2.1 经验误差与过拟合 把分类错误的样本数占样本总数的比例称为"错误率"(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m:相应的,1-a/m称为 ...

  6. 机器学习(周志华)- 第2章模型评估与选择笔记

    转自: https://samanthachen.github.io/2016/08/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0_%E5%91%A8%E5%BF%9 ...

  7. [机器学习]1模型评估与选择

    模型评估与选择 目录 文章目录 模型评估与选择 目录 第二章 模型评估与选择 评估方法 性能度量 比较检验 第二章 模型评估与选择 评估方法 对数据集D产生训练集S和测试集T的方法: 留出法 直接划分 ...

  8. 西瓜书学习笔记第2章(模型评估与选择)

    西瓜书学习笔记第2章(模型评估与选择) 2.1经验误差与过拟合 2.2评估方法 2.2.1留出法(hold-out) 2.2.2交叉验证法(cross validation) 2.2.3自助法(boo ...

  9. 西瓜书笔记之 模型评估与选择

    讲真,这书是越看觉得自己不会的越多,感觉好多概念,完全不是理工男喜欢的样子.. 首先了解一下NP问题,机器学习面临的问题多是NP完全问题(NP-C问题),号称世界七大数学难题之一. NP的英文全称是N ...

  10. 机器学习【西瓜书/南瓜书】--- 第2章模型评估与选择(上)(学习笔记+公式推导)

    目录 前言 2.1 经验误差与过拟合 2.2 评估方法 2.2.1 留出法(hode−outhode-outhode−out) 2.2.2 交叉验证法(crossvalidationcross val ...

最新文章

  1. 【TensorFlow】tf.nn.conv2d是怎样实现卷积的?
  2. 看看那些在公众号留言中的照片
  3. activity切换效果
  4. 一次线上redis报障处理过程
  5. 周四话运营:如何提高用户留存?
  6. Java培训教程:Java中的位移运算符!
  7. 女神一秒变路人!腾讯研究AI卸妆效果算法出品“一键卸妆”功能
  8. python 四足机器人运动学_撸了个四足机器人
  9. [注]什么是用户?估计90%人不知道
  10. 给mysql 授权 命令_mysql中授权命令grant用法详解:
  11. 以Chef和Ansible为例快速入门服务器配置
  12. 网络测试利器netperf安装和使用
  13. Qt开源作品40-图片及文字与base64编码互换
  14. ABB控制器800模块AC800F/PM802F
  15. SEO|解析关键词密度与分布
  16. android实现对PDF进行签名、涂鸦操作
  17. Flash打开其他外部EXE软件
  18. 将打开在扩展显示器的界面移动到主显示器中的方法
  19. 自动语音对话系统 Python实现
  20. 19蓝桥国赛B组C/C++ I第八大奇迹

热门文章

  1. 98点人脸关键点检测算法
  2. PFPLD 人脸关键点检测
  3. python改文件夹名称_Python 批量修改文件夹名称
  4. 金融类自定义View(二)--股票分时图
  5. 基于AChartEngine绘制股票走势图----分时图二(五日,涨跌涨跌幅)
  6. 两个PDF合并成一个PDF怎么做?三分钟教会你两种方法
  7. python 方差齐性检验_SPSS正态分布以及方差齐性检验以及Wilcox检验
  8. Java集合源码剖析——基于JDK1.8中LinkedList的实现原理
  9. 各类后台脚本语言区别(PHP、JSP、ASP和ASPX)
  10. 关闭445端口的方法