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的类),即做为要检测出来的类。

总结

  1. 我们使用precision和recall来衡量算法的好坏,这样当我们遇到skewed classes时,即使我们将所有的预测值都设为0或者1时,它不会有高的precison和recall
  2. 当我们算法的precision和recall很好时,我们可以确信地说我们的算法表现很好(即使我们遇到了skewed classes)
  3. 当我们遇到skewed classes问题时,我们使用precision和recall比用的误差率或者准确率能更好地来衡量算法的好坏

Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&recall)的更多相关文章

  1. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  2. 吴恩达机器学习笔记39-误差分析与类偏斜的误差度量(Error Analysis and Error Metrics for Skewed Classes)

    如果你准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量:而是构建一个简单的算法,这样你可以很快地实现它. 构建一个学习算法的推荐方法为:1 ...

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

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

  4. 三维网格精简算法(Quadric Error Metrics)附源码

    在计算机图形应用中,为了尽可能真实呈现虚拟物体,往往需要高精度的三维模型.然而,模型的复杂性直接关系到它的计算成本,因此高精度的模型在几何运算时并不是必须的,取而代之的是一个相对简化的三维模型,那么如 ...

  5. composer 报 zlib_decode(): data error

    使用composer 时报  zlib_decode(): data error 错误. 解决办法:执行 composer self-update 即可

  6. composer 报错:Failed to decode response: zlib_decode(): data error 解决办法

    执行命令 composer require particle/validator 报错 Failed to decode response: zlib_decode(): data error 网上推 ...

  7. Failed to decode response: zlib_decode(): data error

    /********************************************************************** * Failed to decode response: ...

  8. 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 ...

  9. composer爆错:zlib_decode():data error

    昨晚用nginx运行Yii的一个开源小项目,结果composer安装依赖一直报错,如下 Failed to decode response: zlib_decode(): data error 如果遇 ...

随机推荐

  1. React与Vue的比对

    1.virtual dom 用JS模拟DOM结构,DOM变化的对比,放在JS层做,以提高重绘性能 DOM操作昂贵,JS运行效率高,要减少DOM操作 使用:snabbdom的使用 核心API:h函数 h ...

  2. 微信小程序访问豆瓣电影api400错误解决方法

    最近在跟着demo学习微信小程序,却卡在了第一步请求豆瓣电影api上,折腾了很久,代码如下: wx.request({ url : "https://api.douban.com/v2/mo ...

  3. linux全面详细转载文章

    在网上发现了一位大佬写的linux各种命令.系统.配置等的详细解析,在此转载保留以便学习! 骏马金龙https://www.cnblogs.com/f-ck-need-u/p/7048359.html

  4. CF1090H Linearization 构造、位运算、前缀和

    传送门 有点神仙的题目 首先注意到对于串\(s\),\(b=s_0\)一定会比\(b = s_0 \bigoplus 1\)更优 考虑先分析linear串的性质.注意到位运算考虑按位处理.我们考虑\( ...

  5. ubuntu 18.04安装RTX 2060 显卡驱动

    第一:安装ppa的显卡驱动源 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update 第二:检查显卡和推荐驱动 ubuntu- ...

  6. Java中 单例模式(singleton)

    Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收( ...

  7. Oracle数据库中导出某张表到SQL并关联更新

    首先想到查询出结果,然后导出为SQL文件: 先导出表结构 1 在桌面建立对应的sql空文件 2 toos-->export userObjects 3 在对话框中选择你要导出的表 4 勾选上si ...

  8. ADO.NET 七(一个例子)

    通过一个完整的实例实现课程信息管理功能的操作,包括查询.修改.删除课程信息等操作. 1) 创建课程信息表 create table StuCourse ( id int primary key ide ...

  9. 深入理解JVM(四) -- 垃圾内存回收的判定方法和内容

    上一篇文章我们学到了对象在内存中是如何存储的已经是如何被访问的,这篇文章将介绍当内存空间不够时,虚拟机将怎样判定对象可不可以被回收已经哪些地方会发生回收. 垃圾回收主要(不是全部)发生在堆内存中,当一 ...

  10. js中this指向的三种情况

    js中this指向的几种情况一.全局作用域或者普通函数自执行中this指向全局对象window,普通函数的自执行会进行预编译,然后预编译this的指向是window //全局作用域 console.l ...