召回率

一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC

馋奶兔 提交于 2019-12-12 21:13:05
参考资料: https://zhuanlan.zhihu.com/p/46714763 ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到)。其实,理解它并不是非常难,但是好多朋友都遇到了一个相同的问题,那就是:每次看书的时候都很明白,但回过头就忘了,经常容易将概念弄混。还有的朋友面试之前背下来了,但是一紧张大脑一片空白全忘了,导致回答的很差。 我在之前的面试过程中也遇到过类似的问题,我的面试经验是:一般笔试题遇到选择题基本都会考这个率,那个率,或者给一个场景让你选用哪个。面试过程中也被问过很多次,比如什么是AUC/ROC?横轴纵轴都代表什么?有什么优点?为什么要使用它? 我记得在我第一次回答的时候,我将准确率,精准率,召回率等概念混淆了,最后一团乱。回去以后我从头到尾梳理了一遍所有相关概念,后面的面试基本都回答地很好。现在想将自己的一些理解分享给大家,希望读完本篇可以彻底记住ROC/AUC的概念。 ▌什么是性能度量? 我们都知道机器学习要建模,但是对于模型性能的好坏(即模型的泛化能力),我们并不知道是怎样的,很可能这个模型就是一个差的模型,泛化能力弱,对测试集不能很好的预测或分类。那么如何知道这个模型是好是坏呢?我们必须有个评判的标准。为了了解模型的泛化能力,我们需要用某个指标来衡量,这就是性能度量的意义。有了一个指标,我们就可以对比不同模型了

准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

▼魔方 西西 提交于 2019-12-10 11:08:35
准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure yu Code 22 Comments ♤ Hide Sidebar Tuesday, January 15th, 2013 机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的工作,而其评价指标往往有如下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。(注:相对来说,IR 的 ground truth 很多时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的情况下,排在第三名还是第四名损失并不是很大,而排在第一名和第一百名,虽然都是“找到了”,但是意义是不一样的,因此更多可能适用于 MAP 之类评估指标。) 本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不同,所以一般情况下推荐使用英文。 现在我先假定一个具体场景作为例子。 假如某个班级有男生 80 人,女生 20 人,共计 100 人.目标是找出所有女生. 现在某人挑选出 50 个人,其中 20 人是女生,另外还错误的把30个男生也当作女生挑选出来了. 作为评估者的你需要来评估( evaluation )下他的工作

信息检索(IR)的评价指标介绍

扶醉桌前 提交于 2019-12-09 12:52:32
准确率、召回率、F1 信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)和准确率(Precision Rate),召回率也叫查全率,准确率也叫查准率,概念公式: 召回率(Recall) = 系统检索到的相关文件 / 系统所有相关的文件总数 准确率(Precision) = 系统检索到的相关文件 / 系统所有检索到的文件总数 图示表示如下: 注意:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图: 如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回。 所以,在两者都要求高的情况下,可以用F1来衡量。 F1 = 2 * P * R / (P + R) 公式基本上就是这样,但是如何算图1中的A、B、C、D呢?这需要人工标注,人工标注数据需要较多时间且枯燥,如果仅仅是做实验可以用用现成的语料。当然,还有一个办法,找个一个比较成熟的算法作为基准,用该算法的结果作为样本来进行比照,这个方法也有点问题,如果有现成的很好的算法,就不用再研究了。 AP和mAP(mean Average Precision) mAP是为解决P,R,F

CDA 数据分析师 level1 part 5

断了今生、忘了曾经 提交于 2019-12-06 16:30:35
数据分析师-机器学习 数据分析师-机器学习 机器学习概念 机器学习概念 ●机器学习研究如何让计算机不需要明确的程序也能具备学习能力。( Arthur Samuel,1959) ●一个计算机程序在完成了任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P,随着E的增加而增加,可以称其为学习。(Tom Mitchell11977) 虽然机器学习的研究来源于人工智能领域,但是机器学习的方法却应用于数据科学领域,因此我们将机器学习看作是一种数学建模更合适。 机器学习的本质就是借助数学模型理解数据。当我们给模型装上可以适应观测数据的可调参数时,“学习”就开始了;此时的程序被认为具有从数据中“学习”的能力。一旦模型可以拟合旧的观测数据,那么它们就可以预测并解释新的观测数据。 模型构建流程 第一步:获取数据 既然我们机器学习是借助数学模型理解数学,那么最重要的原材料就是数据了。获取数据通常指的是获取原始数据,当然这里可以是一手数据,也可以是二手数据,关键看机器学习的学习任务。 “数据决定机器学习结果的上限,而算法只是尽可能的逼近这个上限”,可见数据在机器学习中的作用。那么一般而言对于数据我们有哪些要求呢? 数据要具有代表性,数据需要包含尽可能多的信息,数据也需要同学习任务有关联性。 对于监督学习中的分类问题,数据偏斜不能过于严重

LSH搜索算法

我们两清 提交于 2019-12-04 01:32:24
LSH(Location Sensitive Hash),即位置敏感哈希函数。与一般哈希函数不同的是位置敏感性,也就是散列前的相似点经过哈希之后,也能够在一定程度上相似,并且具有一定的概率保证。 作者注:LSH算法分两种:SimHash和MinHash。 simhash的原理是减少搜索空间,用汉明距离替代余弦距离 minHash的原理是降维。通过hash映射函数,将特征元素的个数降下来。 形式化定义: 对于任意q,p属于S,若从集合S到U的函数族H={h1,h2...hn}对距离函数D(,),如欧式距离、曼哈顿距离等等,满足条件: 则称D(,)是位置敏感的。 如下图,空间上的点经位置敏感哈希函数散列之后,对于q,其rNN有可能散列到同一个桶(如第一个桶),即散列到第一个桶的概率较大,会大于某一个概率阈值p1;而其(1+emxilong)rNN之外的对象则不太可能散列到第一个桶,即散列到第一个桶的概率很小,会小于某个阈值p2. LSH的作用 ◆高维下近似查询 相似性检索在各种领域特别是在视频、音频、图像、文本等含有丰富特征信息领域中的应用变得越来越重要。丰富的特征信息一般用高维向量表示,由此相似性检索一般通过K近邻或近似近邻查询来实现。一个理想的相似性检索一般需要满足以下四个条件: 1. 高准确性。即返回的结果和线性查找的结果接近。 2. 空间复杂度低。即占用内存空间少。理想状态下

20_精确率和召回率

折月煮酒 提交于 2019-12-03 01:47:54
1.分类模型的评估:  estimator.score():一般最常见使用的是准确率,即预测结果正确的百分比。 2.混淆矩阵:  在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)。 3.精确率和召回率:  精确率(precision):预测结果为正例,真实样例中为正例的比例。    预测结果为真,真实结果就是为真。  召回率(recall):真实为正例的样本中,预测结果为正例的的比例。   真实结果中出现了假的,就需要召回。 4.sklearn.metrics.classification_report:分类评估模型API   sklearn.metrics.classification_report(y_true, y_pred, target_names=None)   y_true:真实目标值;   y_pred:估计器预测目标值;   target_names:目标类别名称;   return:每个类别精确率与召回率; 5.单词:   metrics:衡量指标。 """ klearn20类新闻分类 20个新闻组数据集包含20个主题的18000个新闻组帖子 """ from sklearn.datasets import fetch_20newsgroups from

深度学习:mAP(mean average precision)

十年热恋 提交于 2019-12-02 11:40:25
mAP是指平均准确率,是机器学习中模型好坏的一种评价指标。在介绍mAP前应该首先了解几个概念: 1、P (percision) 准确率,在周志华的《机器学习》中,称为“查准率”。在信息检索中,准确率是指我检索出的信息有多少比例是用户感兴趣的。   P = 系统检索到的相关文件 / 系统检索到的文件总数 2、R (recall) 召回率,又称为“查全率”,指用户感兴趣的信息有多少被检测出来了   R = 系统检测到的相关文件 / 数据库中相关文件总数 举个例子来说,某数据库中有1000个文件,我要搜索跟机器学习相关的文件,而数据库中机器学习相关文件有200个。搜索后,系统检索出100个文件,80个跟机器学习相关,那么:   P(准确率) = 80 / 100 = 80% R(召回率)= 80 / 200 = 40% 在改变检索算法后,再进行一次检索,结果检索出180个文件,机器学习相关文件有120个,那么:   P(准确率)= 120 / 180 = 66.7%   R(召回率)= 120 / 200 = 60% 这两个算法到底哪个算法好呢,很难单一的用准确率或召回率来评判。 准确率和召回率一般有如下特点:准确率高,召回率就低。召回率高,准确率就低。这个也比较容易理解,比如要获得较高的召回率,势必要搜索出大量文件,还是上面那个例子,我搜索出500个文件,其中200个跟机器学习相关

7.评价分类结果

本小妞迷上赌 提交于 2019-11-29 12:34:30
1.准确度的陷阱和混淆矩阵 我们之前对于分类问题,一直使用分类的准确度评价分类的结果,但是实际上分类问题的评价比回归问题的评价要复杂很多,相应的指标也多很多。可是之前使用准确度来进行评价不是挺好吗?但其实准确度是有一个很大的问题的,举个例子 我有一个癌症检测系统,通过对人进行体检,那么可以判断这个人是否患有癌症,而这个系统预测的准确度是99%,那么这个系统是好,还是坏呢?按照我们之前的逻辑,准确度都达到99%了,那么肯定是一个好系统了,其实不然。如果这个癌症的发病率只有百分之1呢,换句话说,1000个人里面只有10个癌症患者,健康的人远远高于患有癌症的人。那么不管什么人,系统只要都预测成健康,或者没有患有癌症,那么这个系统的准确度依然能达到99%,也就是说这个系统甚至都不需要机器学习,不管来什么人,只要都预测成健康就可以了,因为健康的人相对于患有癌症的人,比例显然是远远高于的。因此只要都预测成健康,那么准确度依旧会很高,但是这样的系统有用吗?我们的目的是,希望能够检测出来患有癌症的人,尽管这个系统的准确度达到了99%,但是癌症患者是不是一个都没有检测出来啊,所以这便是分类准确度的一个陷阱,或者说一个弊端,那么我们便有了其他的评价指标。所以我们说分类问题的评价指标相较于回归问题,要更复杂一些,毕竟回归问题只要判断误差的大小、或者r2的大小即可 或者我们的例子再举的极端一点

机器学习分类算法评价指标

半腔热情 提交于 2019-11-27 12:15:35
//2019.08.14 #机器学习算法评价分类结果 1、机器学习算法的评价指标一般有很多种, 对于回归问题一般有MAE,MSE,AMSE等指标 ,而对于分类算法的评价指标则更多: 准确度score,混淆矩阵、精准率、召回率以及ROC曲线、PR曲线 等。 2、对于分类算法只用准确率的评价指标是不够的,并且对于一些情况它是存在问题的, 对于极度偏斜的数据集(比如对于癌症的发生预测),准确度的评价指标是存在问题的 ,需要使用混淆矩阵进行进一步的分析。 3、 混淆矩阵(Confusion Matrix): 混淆矩阵的行数和列数一般是由分类算法的分类结果数目决定的, 对于n各分类结果,混淆矩阵是nxn的矩阵 ,行和列的索引就是n个分类结果,其中行代表真实值,而列代表的是预测值。 矩阵Axy每个网格里的值代表了真实值在x的情况下预测为y的数据样本个数。 图 4、根据混淆矩阵得到的矩阵结果,我们可以再次定义两个评价指标,称为 精准率precision和召回率recall ,其中 精准率precision=预测正确个数/预测总数,召回率recall=预测正确个数/真实所有个数 。 图 5、 精准率和召回率的算法评判指标的解读应该结合具体分析问题的方向和实际场景,不同的场景对于不同指标的侧重点是不一样的 。比如在股票预测里面我们更加注重精准率,我们更加注重预测结果的准确度

机器学习之分类

只愿长相守 提交于 2019-11-26 13:47:25
本次使用的数据集是比较经典的mnist数据集。它有着 70000 张规格较小的手写数字图片,由美国的高中生和美国人口调查局的职员手写而成。这相当于机器学习当中的“Hello World”,人们无论什么时候提出一个新的分类算法,都想知道该算法在这个数据集上的表现如何。机器学习的初学者迟早也会处理 MNIST 这个数据集。接下来就是进行数据集的读取工作。 加载数据 机器学习的初学者迟早会接触Minist这个数据集,sklearn提供很多辅助函数用于下载流行的数据集 fetch_mldata 出错修改方式 下载文件 https://github.com/amplab/datascience-sp14/raw/master/lab7/mldata/mnist-original.mat 创建一个文件夹:datasets或mldata,将下载好的mnist-original.mat文件放在这个文件夹之中。 fetch_mldata('MNIST original', data_home="datasets"),data_home参数即为从本地导入数据的地址。 from sklearn.datasets import fetch_mldata mnist = fetch_mldata('MNIST original', data_home="sample_data") mnist X, y =