机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure):
摘要:
数据挖掘、机器学习和推荐系统中的评测指标-准确率(Precision)、召回率(Recall)、F值(F-Measure)简介:
引言:
在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。
业内目前常用的评价指标有准确率、召回率、F值等等,下图是不同机器学习算法的评价指标。下午讲对其中某些指标做简要介绍。
本文针对二元分类器!
在介绍指标之前必须先了解“混淆矩阵”:
True Positive (真正,TP): 将正类预测为正类数
True Negative (真负,TN ): 将负类预测为负类数
False Positive (假正,FP):将负类预测为正类数->误报(Type Ⅰ error)
False Negative(假负,FN): 将正类数预测为负类数->漏报(Type Ⅱ error)
准确率计算公式:
注:准确率是我们最常见的评价指标,而且很容易理解,就是指被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。
准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不代表一个算法就好,比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震,1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么他就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为啥99%的准确率的分类器不是我们想要的,因为这里面的数据分布不均衡,类别为1 的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。再举个例子说明一下,在正负样本不均衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里,点击的数量是很少的,一般只有千分之一,如果用acc,即使是全部预测成负类(不点击),acc也有99%以上,没有意义。因此,单纯依靠准确率来评价一个算法模型是远远不够科学全面的。
错误率则与正确率相反,描述被分类器错分的比例,Error rate = (FP + FN) / (TP + TN + FP + FN), 对某一个实例来说,分对与分错是互斥事件,所以准确率 = 1 – 错误率。
Sensitive = TP / P, 表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。
Specificity = TN / N , 表示的是
精确率(precision)定义为:
表示的是 被分为正例的示例中实际为正例的比例。
召回率是覆盖面的度量,度量有多少个正例被分为正例,recall = TP / (TP + FN) = TP / P = sensitive。可以看到,召回率和灵敏度是一样的。
P和R 指标有时候会出现矛盾情况,这样就需要综合考虑他们,最常见的方法就是F-measure (又称为 F-Score),F-Measure 是Precision 和Recall 加权调和平均:
当参数a = 1 时, 就是最常见的F1,也即:
可知F1 综合了P和R的结果,当F1较高时则能说明试验方法比较有效。
计算速度: 分类器训练和预测所需要的时间
鲁棒性: 处理缺失值和异常值的能力
可扩展性:处理大数据集的能力
可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把他看成一个黑盒子。
一下内容为自己总结:
Roc 曲线(receiver Operating Characteristic)曲线是以 假正率(FP_rate) 和 假负率(TP_rate)为轴的曲线,ROC曲线下的面积我们叫做AUC,如下:
即PR(precision-recall)曲线
ROC曲线的最佳值位于左上角,而PR曲线最佳值位于右上角。但是不能保证优化ROC空间中的AUC,能与优化PR中的AUC相对应。
PR曲线能够在高度不平衡数据下有效评估模型性能的原因主要是:
注:假设N_c>>P_c(即Negative的数量远远大于Positive的数量),若FP很大,即有很多N的sample被预测为P,因为这里写图片描述,因此FP_rate的值仍然很小(如果利用ROC曲线则会判断其性能很好,但是实际上其性能并不好),但是如果利用PR,因为Precision综合考虑了TP和FP的值,因此在极度不平衡的数据下(Positive的样本较少),PR曲线可能比ROC曲线更实用。