2018-02-14
机器学习-评价指标-分类问题
• 分类:
ml
• 标签:
ml
机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的工作,而其评价指标往往有如下几点:准确率(Accuracy)
,精确率(Precision)
,召回率(Recall)
和F1-Measure
。
他们存在的场景通常是在测试(Testing)
或验证(Validating)
情况下。
真实情况 | 预测结果 | |
---|---|---|
正例 | 反例 | |
正例 | TP | FN |
反例 | FP | TN |
准确率 accuracy
TP + FP + FN + TN = 总样本数
A = (TP + TN) / (TP + FN + FP + TN)
准确率 accuracy 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率,此时在正负样本不均的情况下,容易丧失意义。
大白话就是“你的预测有多少是对的”
精确率 precision -查准率
The number of true positives divided by the number of true positives and false positives.
P = TP / (TP + FP)
预测为正例中的数据真正的正例占多少?
精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)
召回率 recall-查全率
The number of true positives divided by the number of true positives and the number of false negatives.
R = TP / (TP + FN)
召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
举个例子,丰田公司的“召回门”事件,当时在全球召回850万辆车,但是这里面真正有问题的车有多少呢?可以理解为丰田公司为了提高“召回率”,下了血本,那也是没有办法的,回到题目,在样本不平衡的情况下提高召回率,只能‘’误杀‘’大部分,就是降低P,这里有一个平衡P和R的一个指标F1,就是两者的调和均值,但是像上面的例子就不需要了,目标就是提高R。
大白话就是“正例里你的预测覆盖了多少”
如何提高机器学习算法的召回率?
先说网上看到的这个汇总回答,就是针对样本失衡的分类学习的,个人认为其中比较可行简单的方案是
1,扩大数据量,然后直接把多数类样本随机删除,直到跟少数类样本的量一致。因为扩大了样本量,所以即便删除掉很多样本,也能保证少数累样本的数量够用
2,把分类问题当成单类模式识别or异常值识别问题。如果失衡问题特别严重,那么换个角度不做二类分类了,就直接当成异常值识别了
汇总回答的地址是 在分类中如何处理训练集中不平衡问题我之前处理这个问题的时候也用过过抽样和欠抽样(SMOTE),但效果也不好。反倒是直接调整分类算法中对两类样本的权重效果会好些。不过代价也是损失precision。内容地址如下权当是看个例子好了 回顾一下毕业论文中的问题
F1-Measure
Weighted average of precision and recall.
F1-measure 认为精确率和召回率的权重是一样的,但有些场景下,我们可能认为精确率会更加重要
ROC与AUC
相关(Relevant),正类 | 无关(NonRelevant),负类 | |
---|---|---|
被检索到(Retrieved) | TP | FP |
未被检索到(Not Retrieved) | FN | TN |
在信息检索领域,精确率和召回率又被称为查准率和查全率,
查准率=检索出的相关信息量 / 检索出的信息总量
查全率=检索出的相关信息量 / 系统中的相关信息总量
例子
假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,系统查找出50个,其中只有40个是真正的正样本,计算上述各指标。
- TP: 将正类预测为正类数 40
- FN: 将正类预测为负类数 20
- FP: 将负类预测为正类数 10
- TN: 将负类预测为负类数 30
准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
精确率(precision) = TP/(TP+FP) = 80%
召回率(recall) = TP/(TP+FN) = 2/3
总结
precision 与 recall 其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数
Accuracy measures the model over all.Precision, recall and F1 measure a model’s relevance. For example, it would be dangerous to predict that cancer will not reoccur (i.e. a false negative) as the person would not seek further treatment. Because of this, it would be wise to choose a model that avoids false negatives (i.e. a higher precision, recall and F1) even if the overall accuracy lower.
由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。
当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。
参考
- http://charleshm.github.io/2016/03/Model-Performance/
- http://bookshadow.com/weblog/2014/06/10/precision-recall-f-measure/
- https://www.zhihu.com/question/19645541
- https://blog.argcv.com/articles/1036.c
- https://www.zhihu.com/question/39819838
dzzxjl