使用Excel分析数据学习笔记之 二分类与混淆矩阵

  • 混淆矩阵的构成:
  • e.g.1:Bombers and seagulls
    • 案例背景
    • 混淆矩阵
    • 如何根据混淆矩阵得到ROC曲线?
    • 如何设定最佳阈值(optimal threshold)?
  • e.g.2:癌症诊断
    • 案例背景
    • 分析混淆矩阵:
      • Condition:
      • Classification:
    • 从条件概率的角度分析:
      • TP%、FP%代表着什么?
      • 这跟我们所需要的恰恰相反:
      • 计算阳性预测值、阴性预测值
  • 计算ROC曲线下面积:
  • 多个变量输入下的二分类(Binary Classification with more than one input)
    • 案例背景
    • 基于身高进行分类排序(classification),并设阈值为70
    • 为了得到更好的结果,我们可以把这些不同单位的变量结合起来:

最近在Coursera上从Excel到MySQL商业分析专项课程,为了督促自己学习,把笔记发布在这里。这仅仅是我基于课程的一些浅薄理解,如有错误欢迎指证!

混淆矩阵的构成:

  1. Condition 实际情况 (图中a、b)
  • +: 实际情况为正的概率,condition incidence
  • -:实际情况为负的概率
  • 边际概率,概率和为1
  1. Classification 预判 (图中c、d)
  • classification method used to classify an item as positive or negative
  • 在信息不完全的情况下做出预先判断,存在错误
  • probability of positive classification也叫classification incidence to test incidence.
  • negative: probability of negative classification
  • 边际概率,概率和为1
  1. 联合概率 (图中e、f、g、h)
  • 判断方法:

    1. 预判(Positive/Negative)为第二个字母

    2. 第一个字母T/F: 你的预判与实际情况是否一致?一致则为True,不一致为False

      e: True Positive (TP), 预判为positive, 实际情况为+,两者相符为true
      f:False Negative(FN)
      g: False Positive(FP)
      h: True Negative(TN)

  • 同样的,这四个联合概率的概率和为1
    ⚠️+ = TP+FN;- = FP+TN

e.g.1:Bombers and seagulls

案例背景

上世纪四十年代雷达的发明问世之初,技术还不是很成熟,只能得到模糊的图像反馈。而在英国与德国的闪电战中,德国轰炸机使英国人伤亡惨重。英军收到的模糊雷达图像可能是德军轰炸机,也可能是一群海鸥。如何根据模糊的图像反馈判断是否迎战?这个问题可以很好的被混淆矩阵和ROC曲线解决。

混淆矩阵
  • Condition

    • +: 轰炸机
    • -: 海鸥
  • Classification
    • positive: 派出战机,正面迎战
    • negative:原地不动
如何根据混淆矩阵得到ROC曲线?
  1. 基于雷达图像上的最大阴影面积赋值

  2. 追踪此次图像的最终实际结果

  3. 将得分降序排列

  4. 设定不同的阈值(threshold)可以得到不同的预判结果总数(positive/negatice classification),从而不同的False Positive Rate(FPR),True Positive Rate(TPR)
    ** 红色得分为轰炸机(3个),黑色得分为海鸥(17个)
    ** TPR= TP事件总数/+事件总数;FPR=FP事件总数/-事件总数

    设阈值为80:

    • 即得分>=80判定为positive classification, <80判定为negative classification
    • 得到混淆矩阵:
    • FPR = 4/17, TPR = 2/3

    设阈值为70:

    • 即得分>=70判定为positive classification, <80判定为negative classification
    • 得到混淆矩阵:
    • FPR = 7/17, TPR = 3/3 = 1

5.特定阈值下的(FPR,TPR)为ROC图像上一点, 不断改变阈值得到整个ROC图像

如何设定最佳阈值(optimal threshold)?

intuition: 这个例子中FN(德军派出轰炸机轰炸而英方未做出任何抵抗)的相对成本远远要比FP(派出战机迎战却发现只是一群海鸥)来得大,因此我们尽可能的要缩小FN的数值,即设定较低的阈值。

总成本 = FN事件总数xFN成本+FP事件总数xFN成本,而不同的阈值得到的FN、FP事件总数不同。最低总成本下的阈值为最佳阈值。

⚠️:当FN,FP的成本改变时,总成本改变,最佳阈值也会随之改变。

因此可得到结论: minimum cost threshold is determined by “cost function ratio”((cost per FN)/(cost per FP) )

e.g.2:癌症诊断

案例背景

假设一种蛋白质血液测试鉴别一种罕见的癌症。这种癌症在人口中的发病率为1%。已知TPR=95%,FPR=80%,这个测试准确吗?

分析混淆矩阵:

Condition:
  • +:得癌症,p(+)=1%
  • -: 未得癌症,p(-)=99%
Classification:
  • positive:测试呈阳性
  • negative:测试呈阴性
从条件概率的角度分析:
TP%、FP%代表着什么?
  • True positive = 测试呈阳性,且得了癌症,测试准确 = P(positive^+)
  • TPR = P(positive^+)/P(+) = P(positive/+), i.e., 已知我得病,测试呈阳性的概率。
  • 同样的,TNR = 已知我未得病,测试呈阴性的概率。
这跟我们所需要的恰恰相反:
  • 我们想知道的是:“若测试呈阳性,我得了癌症的概率有多大?”和 “若测试呈阴性,我未得癌症的概率有多大?”, 即P(+/positive), P(-/negative)。
  • 因为这两个概念常常出现,他们被赐予了特殊的名字:阳性预测值、和阴性预测值
计算阳性预测值、阴性预测值

P(+/positive) = P(+^positive) / P(positive) = 0.0095/0.2075 = 4.58%
P(-/negative) = P(-^negative) / P(negative) = 0.792/0.7925 = 99.37%
就算测试呈阳性,得癌症的概率也仅为4.58%。

计算ROC曲线下面积:

这部分内容有大佬写的很详细,偷个懒鸭

⚠️:每两个点之间只有横坐标或纵坐标移动,因为每一次下移阈值时,阈值以上为positive,要么对要么错,是将false negative重新分类为true positive或将true negative重新分类为false positive。
————————————————
版权声明:本文为CSDN博主「qiaoxyxj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qiaoxyxj/article/details/78439633

另一个大佬对AUC曲线的解释:
https://blog.csdn.net/pzy20062141/article/details/48711355?depth_1-utm_source=distribute.pc_relevant_right.none-task&utm_source=distribute.pc_relevant_right.none-task

多个变量输入下的二分类(Binary Classification with more than one input)

“What we have in business problems is a whole bunch of inputs, and we want to combine them so as to create the best possible model to predict our binary outcome, how to combine them.”

案例背景

12名士兵被要求在1小时内携带100磅的背包走4英里。我们有每个士兵的身高、体重和年龄信息
辣么我们得到的初始信息是这样的:

(Condition: 1 = 完成任务,0 = 未完成任务)

基于身高进行分类排序(classification),并设阈值为70

得到这样的混淆矩阵:

TPR = 1/2, FPR = 1/6

同理,基于体重、年龄分类也是一样的。

为了得到更好的结果,我们可以把这些不同单位的变量结合起来:
  1. standardise, so that you can figure out how much relative weight you should assign to each one
    ⚠️ By standardizing the data, we can find a way to treat each of the two input variables as equally important.
  2. sum the standardised terms together

若设阈值为-1.28:

使用Excel分析数据学习笔记之 二分类与混淆矩阵相关推荐

  1. 大数据学习笔记(二)-分级类聚列类聚

    下面用到的数据及代码:click here 1.获取数据: 来自100个博客里面的所有文章单词数目,这儿用的rss订阅源对文章数据进行获取,rss获取出来是xml文件格式,所以可以下载一个feedpa ...

  2. 大数据学习笔记(二)hadoop

    一.Hadoop生态 ​​ 二.Hadoop环境的搭建 1. 准备工作 A-新建一台虚拟机 (刚刚安装的全新系统)dt100 B.关闭防火墙 systemctl stop firewalld #关闭防 ...

  3. glibc-2.23学习笔记(二)—— free部分源码分析

    glibc-2.23学习笔记(二)-- free部分源码分析 _libc_free _int_free 函数定义 局部变量 start fast bins部分 unsorted bins部分 mmap ...

  4. setup.s 分析—— Linux-0.11 学习笔记(二)

    更新记录 版本 时间 修订内容 1.0 2018-4-14 增加了"获取显示模式"这一节,AL取值的表格 标题: setup.s 分析-- Linux-0.11 学习笔记(二) 老 ...

  5. VSTO学习笔记(二)Excel对象模型

    原文:VSTO学习笔记(二)Excel对象模型 上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升.从这次开始,将从VSTO 4.0开始,逐一探讨VSTO ...

  6. 多层高速PCB设计学习笔记(二)基本设计原则及EMC分析

    系列文章目录 多层高速PCB设计学习(一)初探基本知识(附单层设计补充) 多层高速PCB设计学习笔记(二)基本设计原则及EMC分析 多层高速PCB设计学习笔记(三) GND的种类及PCB中GND布线实 ...

  7. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  8. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  9. nrf52832 学习笔记(二)SDK框架分析

    nrf52832 学习笔记(二)SDK框架分析 个人对SDK框架的一些理解,如有错误欢迎斧正. flash 分区 在不包含DFU的情况下,nrf52832 flash划分为: MBR 0x000000 ...

最新文章

  1. 点击按钮取GridView当前被操作行的数据
  2. 纯CSS实现圆角矩形框
  3. ERROR Worker: All masters are unresponsive! Giving up
  4. 切莫开一块地荒一块地
  5. python闭包与装饰器有啥关系_深入理解Python中的闭包与装饰器
  6. 【大数据】分布式集群部署
  7. 炁体源流 鸿蒙,一人之下:八绝技中最强被曝光,没想到炁体源流落榜,第一在后头...
  8. 寄存器是中央处理器内的组成部分
  9. Incapsula企业版测试项目
  10. 自定义一个月份选择器插件
  11. 【TI-ONE系列教程(五)】如何使用 TI-ONE SDK 玩转算法大赛
  12. html5 websocket 手机,HTML5 WebSocket 示范
  13. 乘法器的Verilog HDL实现
  14. 20151026作业
  15. 我最喜爱的九位历史人物 - 曹操(Space搬家)
  16. DatagramPacket.getData()与DatagramPacket.getLength()的误区
  17. 网站开发进阶(十一)如何将一个jsp页面嵌套在另一个页面中
  18. 虚拟机linux修复grub,日常系统维护之修复linux的grub引导
  19. Zerotier 搭建moon
  20. GIT上传代码的时候出现(Please tell me who you are.)信息应该咋么解决?

热门文章

  1. 猿如意开发工具|python3.7
  2. 3Dtouch 基本原理
  3. 大数据在高校的应用场景_大数据在高校中的应用研究
  4. 人生无捷径「一万小时定律·正篇」
  5. std::packaged_task 源码分析
  6. plt 固定X轴、Y轴的范围 ax设置横纵坐标的范围 ax.set_ylim(ymin = 0, ymax = 130)ax.set_xlim(xmin = -5, xmax = 5)
  7. 图片文字识别软件哪个比较好
  8. 我在成都火车站捡了个彝族美女 第19节:饭来张口的生活
  9. 为什么数据库会丢失数据?
  10. 汉诺塔 问题 VIII