[易懂]如何理解论文中的那些评估方法性能指标概念名词{召回率 ROC AUC 交叉验证}
假设现在我们论文是要识别垃圾邮件。将邮件分类为垃圾邮件和非垃圾邮件。
好了接下来通过垃圾邮件这个例子说明别人论文中常常出现的评估方法性能的概念名字是什么意思。
假如我输入了5个数据到模型,那么模型会有相应5个分类结果出来。
TP FP TN FN
这个四个词都是表示的是数字,四种情况下的样本数目。比如True Positive (TP)表示邮件分类正确了,并且模型判断它是垃圾邮件(Positive)样本的个数。统计这些数目就可以统计准确率和召回率这些比率。一定要先理解这个再看后面的准确率和召回率。
这四个词每个词都是两个单词的首字母缩写而成。其中第一个字母{T代表True、F代表False},这个是表明是分类对了还是分类错了。第二个字母{P代表Positive、N代表Negative},这个代表模型它输出结果是什么。
在当前案例中标签“垃圾邮件”=“Positive”,“非垃圾邮件”=“Negative”。
True Positive (TP): 邮件分类正确(True)了,并且模型判断它是垃圾邮件(Positive),满足前面这两个条件的次数。
False Positive (FP): 邮件分类错误(False)了,并且模型判断它是垃圾邮件(Positive),满足前面这两个条件的次数。
True Negative (TP): 邮件分类正确(True)了,并且模型判断它是垃圾邮件(Negative),满足前面这两个条件的次数。
False Negative (FP): 邮件分类错误(False)了,并且模型判断它是垃圾邮件(Negative),满足前面这两个条件的次数。
Recall 和 Precision
Accuracy
模型分类结果同样本的标签一致的邮件 占 总样本邮件的比率。
ROC 和 AUC
ROC是一条曲线。AUC是ROC曲线下面的面积大小,面积越大越准确(Area Under ROC Curve),所以AUC是个数,这个数本质是ROC的积分值(积分就是面积)。
ROC这条曲线是这么来的。
一般模型不是会输出一个概率值嘛,比如模型认为当前这邮件有70%概率是垃圾邮件。那到底是判定他是垃圾邮件还是不认为他是垃圾邮件呢?
那我们是不是要设定一个阈值,比如设定阈值是80%。只要模型认为他是垃圾邮件概率超过80%那么就判定他是垃圾邮件,否则认为不是垃圾邮件。
这样的阈值可以取很多个。比如[1%,10%,2%,30%, 40%,50%,60%,70%,80%]。我们设定阈值不同是不是对应不同准确率?因为如果我设定99%才判定是垃圾邮件,那肯定有很多垃圾邮件漏掉了,如果我设定10%的概率就判定是垃圾邮件那可能所有邮件都判定是垃圾邮件了。
怎么办?
我们每设定一个阈值,我就计算下这个阈值下判定垃圾邮件的性能指标。然后将这个指标画成一条曲线,这条曲线就是ROC曲线。ROC曲线下面的面积就是AUC值。
那么问题来了,ROC用了哪些评估阈值好不好的性能指标?答:有两个。
k-fold Cross Validation
这就是防止过拟合算出的模型准确率是错误的情况出现。
它是这么做的:
先把训练集分成k份。 第1次重新训练模型就把第1份作为验证集,剩下的其他数据用于训练。计算下准确率。 第2次重新训练模型(新的模型和第1次模型无关)就把第2份留作验证集,其他数据用作训练(这个其他数据是包括第1份的)。计算下准确率。 ... 第k次重新训练模型就把第k份留作验证集,其他数据用作训练。计算下准确率。 然后,模型最终准确率是这k次的准确率取平均。
举个例子:
将数据分成标号为1 2 3 4 5 6的六份数据。 第1次:用于训练的数据的标号为2 3 4 5 6 ;用于测试模型性能的那份数据是标号为1。计算一次准确率。 第2次:用于训练的数据的标号为1 3 4 5 6 ;用于测试模型性能的那份数据是标号为2。计算一次准确率。 ... 第6次:用于训练的数据的标号为1 2 3 4 5 ;用于测试模型性能的那份数据是标号为6。计算一次准确率。 然后,模型最终的准确率是这6次准确率取平均。
你的支持是我愿意分享知识的动力
相关阅读:
Last updated