【0.1】 前言--Tensorflow踩坑记之tf.metrics

[0.1] 前言–Tensorflow踩坑记之tf.metrics

作为一名小白中的小白(苦笑脸),澜子的每一步都走得艰难万分(哭),好在身边还是有很靠谱的小伙伴能给我很多帮助,能让我艰难且缓慢无比的进度得到不小的提升。
所以,对于最近踩坑很多的 tf.metrics,特地记录一下。
当然,如果大噶发现博客中我理解过程中的任何错误,一定记得告诉我啊,这样才能更好地进步哇。

之所以会接触到这个API,是因为最近在做一个二分类的问题,然后希望用多个评价指标包括:召回率(Recall),精确率(Precision),F_Score,AUC对模型进行综合评估,而不仅仅只是准确率(Accuracy) 的单一指标。

评价指标简介

混淆矩阵

混淆矩阵是理解众多评价指标的基础。先贴一张图,经典的混淆矩阵是长这个样子滴。
混淆矩阵
理解混淆矩阵以及下文所涉及到的其他的评价指标之前,我们首先要了解一下 TP,FP,TN,FN 这四个被广泛应用于二分类评价中的基本概念。这一篇文章 图文并茂,解释得很不错,我也截取了几张很好看的图,会依次出现在后续的文章中。下图便很好地解释了四个基本概念。
四个基本概念

  • TP:True Positive,预测为正例,实际也为正例。
  • FP:False Positive,预测为正例,实际却为负例。
  • TN:True Negative,预测为负例,实际也为负例。
  • FN:False Negative,预测为负例,实际却为正例。

准确率(Accuracy)

首先上图一张,颜值即正义,有这么好看的图,应该很好理解其中的含义吧。准确率 即指所有预测正确的样本(无论预测的是正例还是负例)占所有样本的比例。
准确率

精确率(Precision)

高颜值的美图继续。精确率就是指当前划分到正样本类别中,被正确分类的比例,即真正的正样本所占所有预测为正样本的比例。

其实我自己在没有真正运用这些指标之前,并不是很理解其中的含义。针对我自己这段时间的经历,我的理解是运用精确率,可以发现模型的潜在问题:比如我自己第一个尝试的模型,就出现了模型的预测输出一直为零的情况。但是,由于我之前并没有加入精确率的指标,只关注了模型的准确率,导致模型的准确率结果虽然有90%,但是精确率出现了NAN

我自己分析出现这个结果的原因是:第一,样本的数据量很大且比较稀疏;第二,小白如我在数据预处理方面做得很糟糕,导致数据分布就很不合理,也就意味着会出现一个batch里面label中0的数量远大于1,进而模型一直在学0的情况。而我们如果仅仅只看准确率,模型似乎没有那么糟糕,然而其实模型的效果是很差的,准确率没有很低只是因为batch本身比较稀疏,所以就算模型输出一直是零,也不会出现很低的准确率。那么,有了精确率就够了吗?当然不是,我们接着看一个简单的例子。

比如:我们有一个样本数量为50的数据集,其中正样本的数量为20。但是,在我们所有的预测结果中,只预测出了一个正样本,并且这个样本也确实是正样本,那么TP=1,FP=0,Precision = TP/(TP+FP) = 1.0,那么我们的模型是不是就很好了呢?当然不是,我们还有19个正样本都没有预测成功呢。所以,是时候使出召回率这一绝招啦。
精确率

召回率(Recall)

美图接着上。召回率即指当前被分到正样本类别中,真实的正样本占所有正样本的比例,即召回了多少正样本的比例。
召回率
接着上文继续说,精确率和召回率之间存在着什么关系呢?我们当然希望Precision 和 Recall 的值越高越好。在上文的例子中,我们得到模型的精确率为1,但并不表示模型就很好,因为FN=19,可以得到召回率 Recall = TP/(TP+FN)= 0.05。所以,如果仅仅只靠精确率,显然也是不够的。

那么问题又来了,有没有一个能够结合两者的评价指标呢?必杀技F_Score来也。

F_Score

此处没有美图了。F_Score其实就是 Precision和 Recall的加权调和平均:

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值