Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&recall)
skewed classes
skewed classes: 一种类里面的数量远远高于(或低于)另一个类,即两个极端的情况。
预测cancer的分类模型,如果在test set上只有1%的分类误差的话,乍一看是一个很好的结果,实际上如果我们将所有的y都预测为0的话(即都不为cancer),分类误差为0.5%(因为cancer的比率为0.5%)。error降低了,那这是对算法的一种改进吗?显然不是的。因为后面一种方法实际上什么也没有做(将所有的y=0),不是一种好的机器学习算法。所以这种error metrics对于skewed classes是不行的,那么我们要寻求一种适用于skewed classes上面的error metrics。
precision(查准率) & recall(召回率)
用测试集来评估一个分类模型: 如上图所示,在实际值与预测值上进行一个2*2的分类(假设这是一个2分类问题),将它们分为真阳性(实际是postive,预测也是postive),假阳性(预测是postive,实际是negative),真阴性(实际是negative,预测也是negative),假阴性(预测也是negative,实际是positive)。
precision(查准率):真阳性(True positive)/预测为positive(阳性的)数量(predicted y=1)= 真阳性/(真阳性+假阳性)
recall(召回率): 真阳性(True positive)/实际为positive(阳性的)的数量 (actually have cancer) = 真阳性/(真阳性+假阴性)
这样当我们用precision与recall来评估上一个例子的算法时(将所有的y都预测为0),这样它的true positive 就为0,这样它的precision与recall就都为0,即能知道这不是一个好的算法,所以我们可以通过precision和recall来评估一个算法是否好。也给了我们一个更直接的方法来评估模型的好坏。
我们经常使用y=1(不是y=0)来做为很少(rare)出现的那个类(如为cancer的类),即做为要检测出来的类。
总结
- 我们使用precision和recall来衡量算法的好坏,这样当我们遇到skewed classes时,即使我们将所有的预测值都设为0或者1时,它不会有高的precison和recall
- 当我们算法的precision和recall很好时,我们可以确信地说我们的算法表现很好(即使我们遇到了skewed classes)
- 当我们遇到skewed classes问题时,我们使用precision和recall比用的误差率或者准确率能更好地来衡量算法的好坏
Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&recall)的更多相关文章
- 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))
上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...
- 吴恩达机器学习笔记39-误差分析与类偏斜的误差度量(Error Analysis and Error Metrics for Skewed Classes)
如果你准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量:而是构建一个简单的算法,这样你可以很快地实现它. 构建一个学习算法的推荐方法为:1 ...
- Keras 处理 不平衡的数据的分类问题 imbalance data 或者 highly skewed data
处理不平衡的数据集的时候,可以使用对数据加权来提高数量较小类的被选中的概率,具体方式如下 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, ...
- 三维网格精简算法(Quadric Error Metrics)附源码
在计算机图形应用中,为了尽可能真实呈现虚拟物体,往往需要高精度的三维模型.然而,模型的复杂性直接关系到它的计算成本,因此高精度的模型在几何运算时并不是必须的,取而代之的是一个相对简化的三维模型,那么如 ...
- composer 报 zlib_decode(): data error
使用composer 时报 zlib_decode(): data error 错误. 解决办法:执行 composer self-update 即可
- composer 报错:Failed to decode response: zlib_decode(): data error 解决办法
执行命令 composer require particle/validator 报错 Failed to decode response: zlib_decode(): data error 网上推 ...
- Failed to decode response: zlib_decode(): data error
/********************************************************************** * Failed to decode response: ...
- O/S-Error: (OS 23) Data error (cyclic redundancy check)问题处理
RMAN-03002: backup plus archivelog 命令 (在 08/24/2015 03:31:00 上) 失败ORA-19501: 文件 "XXXXXX.DBF&quo ...
- composer爆错:zlib_decode():data error
昨晚用nginx运行Yii的一个开源小项目,结果composer安装依赖一直报错,如下 Failed to decode response: zlib_decode(): data error 如果遇 ...
随机推荐
- 给通过canvas生成的二维码添加logo
以jquery.qrcode为例来说, 生成二维码代码: 依赖jquery.js, jquery.qrcode.js //计算宽,高,中心坐标,logo大小 var width = 256,heigh ...
- 从一个案例窥探ORACLE的PASSWORD_VERSIONS
1.环境说明 ORACLE 客户端版本 11.2.0.1 ORACLE 服务端版本 12.2.0.1 2.异常现象 客户端(下文也称为Cp)访问服务端(Sp),报了一个错误: Figure 1 以错误 ...
- python 可变数据类型和不可变数据类型(7)
python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,其中数据类型分为两个大类,一种是可变数据类型:一种是不可变数据类 ...
- WordPress 设计学习
"One can never be defeated until defeat has been accepted as a reality"----- Bruce Lee 官网免 ...
- Linux学习-防火墙-Selinux-配置本地YUM源
关闭防火墙并设置开机不启动 systemctl status firewalld.service #查看firewalld状态systemctl stop firewalld #关闭systemctl ...
- [十一集训] Day1 (2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018))
A Altruistic Amphibians 原题 题目大意: n只青蛙在高度为d的井中,每只有跳跃距离.重量和高度,每只青蛙可以借助跳到别的青蛙的背上而跳出井,每只青蛙能承受的最大重量是自身重量, ...
- Linux06 文件的打包和压缩(gzip/gunzip、tar、bzip2)
一.gzip/gunzip 这是用于压缩和解压单个文件的工具,且使用方法比较简单 gzip 文件名 gunzip 文件名 二.tar(用的比较多) 不仅可以用于打包文件,还可以将整个目录中的全部文 ...
- 有关java中的try{}catch(){}的讲解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_38225558/article/d ...
- 【LEETCODE】39、第561题 Array Partition I
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- mysql疑问