准确率和召回率相等,准确率、精确率、召回率?( 二 )


如何理解?
模型的输出可以代表信心(也就是模型预测样本为正的确信程度) 。阈值增加 , 则表示需要更大的信心才会预测为正 , 这时准确率必然增加;同时 , 阈值的增加导致所预测正样本的减少 , 找出正样本的可能性就会降低 , 从而导致召回率的下降 。
在多分类任务中 , 模型会输出一个Category分布 , 比如3分类 , 一个可能的输出是[0.1, 0.2, 0.7] 。在深度学习模型中 , 我们一般使用一个softmax函数来生成中的分布 。记前一层的输出为, 最终的输出为 ,  则:
要调整类别1所对应的准确率召回率 , 我们直接调整就行了(增加/减少一个值) 。增加 , 类别1的的召回率增加 , 准确率下降;同时 , 类别2、类别3的召回率下降 , 准确率增加 。
如何理解?
增加 , 类别1所对应的概率会增加 , 其它类别的概率则会降低 。人为提升概率 , 会导致其预测正样本的概率增加 , 从而导致召回率的上升 , 其它类别的情况则相反 。
在NLP中 , 分词、词性、NER都被转化为序列标注任务进行处理 。序列标注任务也就是序列分类任务 。学会了分类任务准确率召回率调整方法 , 调整序列标注任务也就不难了 。以NER任务为例:
现在主流的序列标注模型是BI-LSTM-CRF、BERT-CRF等 , 都是先使用一个神经网络计算每个字每个类别的分数 , 然后再通过CRF层进行调整 。我们可以通过调整进入CRF之前的分数 , 从而达到调整准确率与召回率的目的 。(BI-LSTM-CRF和CRF的PyTorch通用实现可以参考 开源库bi-lstm-crf )
在上面的表格种 , 每一列对应一个字的多分类的分数 , 这些分数的范围没有经过归一化 , 范围是整个 , 但是调整的方法还是一样的 , 直接修改这些分数就行了 。
比如通过增加"O"标签对应的分数 , "O"标签对应的最终概率就会提升 , 跟实体相关的标签(B-LOC, I-LOC, ...)的概率则会下降 , 这样NER的召回率就会下降 , 准确率则会上升 。
通过实验法 , 拿一个带标注的数据集作为测试集 , 使用不同的调整数值 , 跑完整个测试集上 , 并计算准确率与召回率 。这样就会得到2根曲线 , 一条对应准确率、一条对应召回率 , 横坐标对应不同的调整数值 。然后根据需要选择对应的调整数值即可 。
Q3:如何解释召回率与准确率最有可能的问题是模型的问题 , 一个模型的性能好坏并不在于其对训练集的误差大小 , 而在于其对测试集的误差是否接近于对训练集的误差 , 也就是说 , 你这种情况 , 并非是数据本身的问题 , 而是你的模型还未找到训练集所蕴含的规律 , 不具备良好的泛化能力
Q4:什么是准确率和召回率准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值 , 用来评价结果的质量 。其中精度是检索出相关文档数与检索出的文档总数的比率 , 衡量的是检索系统的查准率;
召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率 , 衡量的是检索系统的查全率 。
Q5:准确率、精确率、召回率准确率 (accuracy) = (TP + TN) / (TP + FN + FP + TN)
通俗解释: 在所有样本中 , 预测正确的概率
精确率 (precision)= TP / (TP + FP)
通俗解释:你认为的正样本中 , 有多少是真的正确的概率
召回率 (recall) = TP / (TP + FN)
通俗解释:正样本中有多少是被找了出来
某池塘有1400条鲤鱼 , 300只虾 , 300只鳖 。
现在以捕鲤鱼为目的 。撒一大网 , 逮着了700条鲤鱼 , 200只虾 , 100只鳖 。
那么 , 这些指标分别如下:
出处
终于有人讲清楚准确率(accuracy)、召唤率(recall)和精确率(precision)的关系
Q6:一图看懂召回率和准确率 在算法大佬们的模型报告中 , 经常会出现“召回率”和“准确率”这两个指标 , 作为一名数据分析师 , 要是听不懂就尴尬啦 , 话不多说 , 看下面这个图 , 一目了然
举例:
在对视频内容进行分类时 , 视频池里总共有1000条视频 , 其中100条美食视频 。算法大佬通过牛逼的模型识别出200条并打上美食标签 , 其中50条是真正的美食视频 , 那么:


推荐阅读