【机器学习】为什么要使用F1衡量分类器的性能
2016-09-19 11:27
411 查看
https://discussions.youdaxue.com/t/f1/4638/6?u=beibei19890724 原文链接
http://blog.csdn.net/duxinyuhi/article/details/52142721 查全率和查准率参考另一篇文章为什么要使用F1衡量分类器的性能
查准率(Precision)与查全率(Recall)
以信息检索为例说明,总共50篇文献,其中20篇文献是我感兴趣的目标文献,输入特定检索条件返回10篇文献,其中5篇是我要的文献。查准率(Precision) = 查出的文章中有多少是正确目标 = 5/10
查全率(Recall) = 总共正确的文章中有多少被正确查出 = 5/20
两种值都是我们想要尽量提高的,但不可能两全其美:想要查准率为1,最好的结果就是一篇文献也没搜到,返回的结果肯定没有分类错误,但这样也没有意义;想要查全率为1,最好的情况就是50篇皆返回,这样搜索本身也失去了意义。
F1作为单独的性能指标
我们将F1定义为查准率与查全率的调和平均数。即 $$ 1/F1 = (1/Precison + 1/Recall) * 1/2 $$
这样可以避免出现查全率或查准率为1而另一端为0的极端情况出现。
还可以根据对查准率/查全率的不同偏好设置两者的比率\Beta
比如对癌症的诊断,可能更关心查全率,则\beta设置大于1。$$ 1/F_\beta = 1/(1+\beta^2) * (1/Precision + \beta^2/Recall) $$
感谢@mrbean和另一位助教(抱歉没听清ID)的解答
3 回复
4 赞
回复
F1
score
Shortcomings
of Accuracy 中的第二点和第三点不是很明白
p1版块精华帖
创建时间
7月10日
最后回复
7月19日
5
回复
171
浏览
4
用户
5
赞
4
链接
Whale
7月10日
源自 quora4
附上一张图。也就是 当时@walker 所提出的。
1 赞
回复
Nicky优达学城导师
7月11日
补充一下。
还有一种情况是返回20篇,20篇都是对的。这种情况下Precision和Recall也都为1。但这个1与前面的1不同,这个1是最有意义的,也是我们追求的。
回复
Nicky优达学城导师
7月19日
nirvanafish:
想要查准率为1,最好的结果就是一篇文献也没搜到
因为查准率是 1 - 查错率,这里查错率为零。
回复
weiwenjie
7月19日
nirvanafish:
可以避免出现查全率或查准率为1而另一端为0的极端情况出现
为什么这个公式可以避免?举个例子好吗?
回复
nirvanafish
7月19日
F1公式取调和平均值,举例说明:如果一端查全率为0.1(除数不能为0),一端查准率为1,代入F1的公式,F1取值2/11,远小于查准率的1,也就是说0.1极大地降低了该模型的性能指数,小值将大值的影响降低,从而得到合理的性能估计。
weiwenjie:
nirvanafish:
可以避免出现查全率或查准率为1而另一端为0的极端情况出现
为什么这个公式可以避免?举个例子好吗?
相关文章推荐
- 机器学习知识点(三十六)分类器性能度量指标f1-score
- 机器学习6--如何衡量一个学习算法的性能和如何设计一个系统
- 衡量分类器的性能指标
- 第九篇:使用 AdaBoost 元算法提高分类器性能
- C#为什么使用AS和IS运算符及其性能比较
- 笔记:为什么只使用DataReader(DataReader和Dataset的性能比较)?
- 机器学习之分类器性能指标之ROC曲线、AUC值
- 为什么要使用内存泄露工具、性能检测工具
- 为什么要使用缓存?用OSCache提升J2EE系统运行性能
- 为什么交叉熵损失可以提高具有sigmoid和softmax输出的模型的性能,而使用均方误差损失则会存在很多问题
- 机器学习之分类器性能指标之ROC曲线、AUC值
- 机器学习中分类器的性能评价指标
- 机器学习 之 SVM 为什么使用核函数
- 网站的静态资源为什么要使用独立域名,竟然对访问性能还有如此大的影响
- R语言︱分类器的性能表现评价(混淆矩阵,准确率,召回率,F1,mAP、ROC曲线)
- 使用 AdaBoost 元算法提高分类器性能
- 为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
- 为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
- 机器学习性能衡量指标
- 为什么 Python被Google选为TensorFlow的开发语言呢?使用 Python比C++语言进行机器学习有什么优势?