资料目录:
1. What is an intuitive explanation of F-score?
2. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
=====================================================================
What is an intuitive explanation of F-score?
提要:
precision:你找出来的例子里,有多少正类。如果要提高P, 只找出一个正类并标记为正类就好了,这样,P将等于100%;如果在100的样本中,你标记了50个正类,那么,P不可能高于50%
recall:在真正的正类里,有多少被你找到了。要提高样本量,假设样本量等于真正的正类量,而且所有都被标记为正类,那么R 等于100%; 如果你标记了50个正类,而实际的正类正好是50个,那么,R等于100%。如果实际正类等于10000,那R会很低。
注意,在分类工作中,你的目标不是标记所有样本,而是找到正类。换言之,标记正类才是你的工作结果。因此,P是看你标记的数据中,有多少是标对了的。R是看在全部样本中,你标出的多少个目标个体。
因此,P大时,R会变小。为了用一个数据来较为合理的衡量结果,用到了调和平均数(harmonic mean), 调和平均数(Harmonic Mean)是求一组数值的平均数的方法中的一种,一般是在计算平均速率时使用。
Imagine that you're trying to classify politicians into two groups: those who are honest, and those who are not. I'll give you a list of 100 people, half of which are honest, and you'll give me a list of all the honest ones, but being careful not to accidentally include anyone who is not.
Having high precision means that when you do say that someone is honest, you're usually right about it. This is about how many politicians in your list are actually honest, out of all the ones that you've added to the list.
Having high recall means that you can identify most of the honest politicians out there. This is about how many honest politicians you've added to your list, out of all the ones that exist.
Note that these are not the same. You could add a single honest politician to the list. You would then have very high precision, since the only person that you've listed is actually honest; but you would also have very low recall: there are 50 honest politicians out there but you've only mentioned one.
Ideally, you'd want to list all honest politicians that exist while being careful to not accidentally include some who are not. If you could do that, then you'd have both high precision and high recall.
When measuring how well you're doing, it's often useful to have a single number to describe your performance. We could define that number to be, for instance, the mean of your precision and your recall. This is exactly what the F1-score is.
The only reason why we use the harmonic mean is because we're taking the average of ratios (percentages), and in that case the harmonic mean is more appropriate than the arithmetic mean.
原文链接:https://www.quora.com/What-is-an-intuitive-explanation-of-F-score
-------------------------------------------------------------------------------------------------------------------
【其他】
准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure:https://blog.argcv.com/articles/1036.c 【注:原文中的图有问题,自己重新做了个图,已插入文中】
机器学习(ML), 自然语言处理(NLP), 信息检索(IR)等领域, 评估(Evaluation)是一个必要的工作, 而其评价指标往往有如下几点: 准确率(Accuracy), 精确率(Precision), 召回率(Recall) 和 F1-Measure.(注:相对来说,IR 的 ground truth 很多时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的情况下,排在第三名还是第四名损失并不是很大,而排在第一名和第一百名,虽然都是“找到了”,但是意义是不一样的,因此更多可能适用于 MAP 之类评估指标.)
本文将简单介绍其中几个概念. 中文中这几个评价指标翻译各有不同, 所以一般情况下推荐使用英文.
现在我先假定一个具体场景作为例子.
现在某个班级有男生 80 人, 女生20人, 共计 100 人. 目标是找出所有女生. 现在某人挑选出 50 个人, 并把他们标记为女生,剩下50人标记为男生。注意:在被标记的50个女生中,有20 人是标对了的, 有30个人是标错了的(应标为男生)。现在要来评估(evaluation)下他的工作
提要:
accuracy: 在所有标记中,有多少是被分对了的。
precision: 在所有被标记的正类中,有多少是被分对了的。
recall: 在所有分对了的结果中,正类占比是多少
F1-score:precision和recall的一个调和均值
首先我们可以计算准确率(accuracy), 其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比. 也就是损失函数是0-1损失时测试数据集上的准确率.
这样说听起来有点抽象,简单说就是,前面的场景中,实际情况是那个班级有男的和女的两类,某人(也就是定义中所说的分类器)他又把班级中的人分为男女两类. accuracy 需要得到的是此君分正确的人占总人数的比例. 很容易,我们可以得到:他把其中70(20女+50男)人判定正确了, 而总人数是100人,所以它的 accuracy 就是70 %(70 / 100).
由准确率,我们的确可以在一些场合,从某种意义上得到一个分类器是否有效,但它并不总是能有效的评价一个分类器的工作. 举个例子, google 抓取了 argcv 100个页面,而它索引中共有10,000,000个页面, 随机抽一个页面,分类下, 这是不是 argcv 的页面呢?如果以 accuracy 来判断我的工作,那我会把所有的页面都判断为"不是 argcv 的页面", 因为我这样效率非常高(return false, 一句话), 而 accuracy 已经到了99.999%(9,999,900/10,000,000), 完爆其它很多分类器辛辛苦苦算的值, 而我这个算法显然不是需求期待的, 那怎么解决呢?这就是 precision, recall 和 f1-measure 出场的时间了.
再说 precision, recall 和 f1-measure 之前, 我们需要先需要定义 TP, FN, FP, TN 四种分类情况.
按照前面例子, 我们需要从一个班级中的人中寻找所有女生, 如果把这个任务当成一个分类器的话, 那么女生就是我们需要的, 而男生不是, 所以我们称女生为"正类", 而男生为"负类"
可以很容易看出, 所谓 TRUE/FALSE 表示从结果是否分对了, Positive/Negative 表示我们认为的是"是"还是"不是".
通过这张表, 我们可以很容易得到这几个值:
TP=20, FP=30, FN=0, TN=50
精确率(precision)的公式是P = TP/(TP+FP)。它计算的是所有"正确被检索的结果(TP)"占所有"实际被检索到的(TP+FP)"的比例.
在例子中就是希望知道此君得到的所有人中, 正确的人(也就是女生)占有的比例. 所以其 precision 也就是40%(20女生/(20女生+30误判为女生的男生)).
召回率(recall)的公式是R = TP/(TP+FN)它计算的是所有"正确被检索的结果(TP)"占所有"应该检索到的结果(TP+FN)"的比例.
在例子中就是希望知道此君得到的女生占本班中所有女生的比例, 所以其 recall 也就是100%(20女生/(20女生+ 0 误判为男生的女生))
F1值就是精确值和召回率的调和均值, 也就是
2/F1 = 1/P + 1/R
调整下也就是
F1 = 2PR/(P+R) = 2TP / (2TP+FN+FP)
例子中 F1-measure 也就是约为 57.143% = (2 * 0.4 * 1)/(0.4 + 1)
需要说明的是, 有人[3]列了这样个公式, 对非负实数\betaβ
Fβ = (β^2 + 1) * PR/(β^2*P+R)
将 F-measure 一般化.
F1-measure 认为精确率和召回率的权重是一样的, 但有些场景下, 我们可能认为精确率会更加重要, 调整参数 β , 使用 F_β-measure 可以帮助我们更好的 evaluate 结果.