preision与recall之间的权衡

依然是cancer prediction的例子,预测为cancer时,y=1;一般来说做为logistic regression我们是当hθ(x)>=0.5时,y=1;

当我们想要在预测cancer更确信时(因给病人说他们有cancer会给他们带来很重大的影响,让他们去治疗,所以想要更确信时再告诉病人cancer的预测): 我们可以将阀值设为0.7,这时我们将有一个高的precision(因为标注出有cancer的都是很确信的),和一个低值的recall;如果将threshold设为0.9--->高的precision,和一个低值的recall

当我们希望避免漏掉患有cancer的病人时(避免假阴性,即我们不希望一个病人有cancer,但是我们却没有告诉他,耽误了他的治疗):将threshold设为0.3,这时我们得到一个低的precision(标出有cancer的有很多都是实际上被误标的)和一个高的recall(因为绝大多数的cancer都被标注出来了).

因此对于大多数的回归模型,我们需要权衡precision与recall。

precision&recall曲线(随着threshold的改变而改变)如上图右边所示,precision&recall曲线有很多种可能性,取决于具体的算法。

那么我们可以自动选取合适的threshold吗?

如何选择合适的threshold

以上三个算法的threshold值不同,即precision与recall值不同,那么我们应该选择上面三个模型中的哪个模型呢?----我们需要一个评估试题值(evaluation metric)来进行衡量。

precison与recall不能做为evaluation metric,因为它们是不同的两个数字(此消彼长)。

如果我们使用平均值来做为这个evaluation metric: 可以看到算法3的平均值是最大的,但是算法3不是一个好的算法,因为我们可以通过将所有的y预测为1(即将threshold降低)来达到高的recall,低的precision,这显然不是一个好的算法,但是它却有很好的average,故我们不能使用average来做为evaluation metric。

F score(或者F1 score): 在机器学习中常用的来衡量precision与recall的evaluation metric(用来选择threshold),当precison与recall中有一个很小时,通过这个公式得到的F值也会很小,这样就防止了我们上面提到的用average来衡量的错误。即只要F值是大的,则precision与recall都较大。

如果precision或者recall有一个为0,F值就为0;如果是很完美的模型,即precision与recall都为1的话,则F值也为1,故现实中F值的范围在0-1之间。

总结

  1. precision与recall之间的权衡(通过变动threshold来变动它们的值)
  2. 不同的threshold对应不同的precison与recall,如何选择合适的threshold来得到好的模型(通过F值在cross validation集上进行模型选择)
  3. 如果想自动选择threshold,则试试一系列的不同的threshold,在cross validation上进行选择

Handling skewed data---trading off precision& recall的更多相关文章

  1. Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&recall)

    skewed classes skewed classes: 一种类里面的数量远远高于(或低于)另一个类,即两个极端的情况. 预测cancer的分类模型,如果在test set上只有1%的分类误差的话 ...

  2. 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)

    一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...

  3. 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy

    针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy   真实结果 1 ...

  4. Keras 处理 不平衡的数据的分类问题 imbalance data 或者 highly skewed data

    处理不平衡的数据集的时候,可以使用对数据加权来提高数量较小类的被选中的概率,具体方式如下 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, ...

  5. 查准与召回(Precision & Recall)

    Precision & Recall 先看下面这张图来理解了,后面再具体分析.下面用P代表Precision,R代表Recall 通俗的讲,Precision 就是检索出来的条目中(比如网页) ...

  6. TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area,

    TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area, https://www.zhihu.com/question/30643044 T/ ...

  7. Classification week6: precision & recall 笔记

    华盛顿大学 machine learning :classification  笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...

  8. Precision,Recall,F1的计算

    Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...

  9. 目标检测的评价标准mAP, Precision, Recall, Accuracy

    目录 metrics 评价方法 TP , FP , TN , FN 概念 计算流程 Accuracy , Precision ,Recall Average Precision PR曲线 AP计算 A ...

随机推荐

  1. (CSDN迁移) 输入一个链表,从尾到头打印链表每个节点的值

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 思路1. 翻转链表,使用java自带的翻转函数或者从头到尾依次改变链表的节点指针 /** * public class ListNode { * ...

  2. jira中使用eazyBI

    参考:https://docs.eazybi.com/eazybijira/set-up-and-administer/set-up-and-administer-for-jira-server/in ...

  3. 「模拟赛20191019」C 推式子+贪心+树状数组

    题目描述 给定一棵\(n\)个点的有根树,根节点编号为\(1\),点有点权. 定义\(d(v)\)表示\(v\)到\(1\)的路径上的边数. 定义\(f(v,u)\)在\(v<u\)且\(v\) ...

  4. spring 循环引用问题,在一次问题调试过程中发现有个小伙伴竟然把循环引用设置成false了。估计是百度的时候没小心额外的代码吧。。。

    循环引用属性操作: 1)AbstractAutowireCapableBeanFactory类中的allowCircularReferences被设置为了false. 2)代码: Annotation ...

  5. 开发板与pc之间文件传输:kermit and lrzsz

    imx6开发板与pc机之间通过串口传输文件步骤: 1. 安装好kermit并可以使用 2. 交叉编译lrzsz开源软件并把可执行程序lrz lsz拷贝到开发板 2.1 下载并解压lrzsz-0.12. ...

  6. 使用 python 进行微信好友分析

    使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordc ...

  7. Django框架深入了解_02(DRF之序列化、反序列化)

    序列化:将Python对象准换成json格式的字符串,反之即为反序列化 DRF的序列化使用过程: 使用drf的序列化组件 -1 新建一个序列化类继承Serializer -2 在类中写要序列化的字段 ...

  8. 【LEETCODE】35、169题, Majority Element

    package y2019.Algorithm.array; import java.util.HashMap; import java.util.Map; /** * @ProjectName: c ...

  9. jwt 0.9.0(二)jwt官网资料总结

    1.JWT描述 Jwt token由Header.Payload.Signature三部分组成,这三部分之间以小数点”.”连接,JWT token长这样: eyJhbGciOiJIUzI1NiIsIn ...

  10. python中的可哈希与不可哈希

    什么是可哈希(hashable)? 简要的说可哈希的数据类型,即不可变的数据结构(字符串str.元组tuple.对象集objects). 哈希有啥作用? 它是一个将大体量数据转化为很小数据的过程,甚至 ...