2017-07-10 14:38:24

理论参考:

评估分类器性能的度量,像混淆矩阵、ROC、AUC等

http://www.cnblogs.com/suanec/p/5941630.html

ROC全称:receiver operation characters,适用于二分类。

同理可得由ROC曲线计算的AUC,适用于二分类。

计算AUC需要知道这个表格:

  实际正样本 实际负样本
预测正样本 正样本正确数 正样本错误数
预测负样本 负样本错误数 负样本正确数

其中实际正样本常被成为Positive,实际负样本常被成为Negative。

对应的表格中数据分别为True Positive、False Positive、True Negative、False Negative。

对应的概率Rate,分别为TPR、FPR、TNR、FNR。

其中TPR=TP/P、FPR=FP/N,绘制ROC,主要使用TPR和FPR。

使用网上的例子:

模型预测情况与实际类标情况:

由以上绘制的ROC曲线及各点取值。

当阈值自高向低取,分别为0.9、0.8、0.7、0.6、0.55。

0.9:TPR:0.1,FPR:0

0.8:TPR:0.2,FPR:0

0.7:TPR:0.2,FPR:0.1

0.6:TPR:0.3,FPR:0.1

0.55:TPR:0.4,FPR:0.1

按照取值绘制ROC图线,计算图线下面积即可得AUC。

其中:以0.7举例TRP和FPR如何统计:

当阈值为0.7时,可得模型将1、2、3样本分为了正样本,其他为负样本。

1、2、3中正样本正确了两个。

TPR:正样本正确率为正样本正确数目/所有正样本数目:2/10=0.2。

FPR:正样本错误率为正样本错误数目/所有负样本数目:1/10=0.1。

那么在0.7为阈值可以绘制ROC曲线点:(0.1,0.2)。

以此类推。绘制多个阈值下的ROC曲线点,可得ROC曲线的近似值。(因为阈值取值数量有限,故ROC为近似值)

计算AUC:

因为ROC曲线近似,可以利用矩阵面积加和得到面积和。(计算AUC面积和,就可以按个人喜好计算了,spark mllib中的AUC是按坐标取值计算连线形成梯形的面积加和。个人感觉按纵轴计算矩阵面积实现更容易一些,但精度有损失。)

当ROC为精确时,需要积分。仅存于理论层面。

最新文章

  1. vscode 1.5安装体验
  2. Xamarin Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy
  3. 关于http协议的理解
  4. Redis 设计与实现读书笔记一 Redis List
  5. SVN常见问题处理
  6. busybox filesystem udhcpc 原理
  7. 使用SBT构建Scala项目
  8. FANTASY:In which way do you think the world will end?
  9. oracle安装报错2
  10. 使用r.js优化静态资源
  11. webpack模块机制浅析【一】
  12. Mybatis源码学习之TypeHandler
  13. 有效的字母异位词的golang实现
  14. 解决mysql表不能查询修改删除等操作并出现卡死
  15. samtools 使用简述
  16. linux tomcat jvm调优
  17. 2013长春网赛 1006 hdu 4764 Stone(巴什博弈)
  18. CAN总线的显性电平为什么能覆盖隐性电平?
  19. MYSQL插入不能中文的问题的解决
  20. C#.NET常见问题(FAQ)-如何生成release版本的程序,生成debug版本的程序

热门文章

  1. fontawesome图标字体库组件在服务器上显示不出来图标的解决
  2. Android编码学习之Adapter
  3. android自己定义控件之飞入飞出控件
  4. jquery核心
  5. 系统管理员需知的 16 个 iptables 使用技巧
  6. 分析轮子(一)-ArrayList.java
  7. 设计模式? GoF
  8. Oracle&SQLServer中实现跨库查询
  9. IFRAME练习 各种调用
  10. Android 查看蓝牙hci日志