赞
踩
指标 | 描述 | Scikit-learn函数 |
---|---|---|
Precision | 精准度 | from sklearn.metrics import precision_score |
Recall | 召回率 | from sklearn.metrics import recall_score |
F1 | F1值 | from sklearn.metrics import f1_score |
Confusion Matrix | 混淆矩阵 | from sklearn.metrics import confusion_matrix |
ROC | ROC曲线 | from sklearn.metrics import roc |
AUC | ROC曲线下的面积 | from sklearn.metrics import auc |
指标 | 描述 | Scikit-learn函数 |
---|---|---|
Mean Square Error (MSE, RMSE) | 平均方差 | from sklearn.metrics import mean_squared_error |
Absolute Error (MAE, RAE) | 绝对误差 | from sklearn.metrics import mean_absolute_error, median_absolute_error |
R-Squared | R平方值 | from sklearn.metrics import r2_score |
下面详细介绍准确率、精确率、召回率、ROC曲线、AUC、PR曲线
TP:模型将实际为正类的真确预测为正类。P指最终预测结果为positive, T指是正确的预测 true
FP:模型将实际为负类的错误预测为正类。P指最终预测结果为positive, F指是错误的预测 false
TN:模型将实际为负类的正确预测为负类。N指最终预测结果为negative, T指是正确的预测 true
FN:模型将实际为正类的错误预测为负类。N指最终预测结果为negative, F指是错误的预测 false
预测准确的在所有样本中的比例,即
对于给定的测试数据集,预测结果为正类的数据中,有多少数据被正确预测,即
对于所有实际上为正的样本,模型预测正确为正的比例,即
P-R曲线刻画准确率和召回率之间的关系,准确率和召回率是一对矛盾的度量,一般来说,准确率高时,召回率往往偏低,召回率高时,准确率往往偏低。
在很多情况下,我们可以根据学习器的预测结果对样例进行排序,排在前面的是学习器认为最可能是正例的样本,排在后面的是学习器认为最不可能是正例的样本,按此顺序逐个把样本作为正例进行预测,则每次可计算当前的准确率和召回率,以准确率为纵轴,以召回率为横轴,可以画出下面的P-R曲线。
上图来自西瓜书,查准率即准确率,查全率即召回率。
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C,但是A和B的性能无法直接判断,但我们往往仍希望把学习器A和学习器B进行一个比较,我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点。平衡点(BEP)是查准率=查全率时的取值,如果这个值较大,则说明学习器的性能较好。所以基于平衡点,可以认为学习器A优于B。
ROC曲线的两个参数:
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值分为正类,否则为反类,因此分类过程可以看作选取一个截断点。
不同任务中,可以选择不同截断点,若更注重”准确率”,应选择排序中靠前位置进行截断,反之若注重”召回率”,则选择靠后位置截断。因此排序本身质量的好坏,可以直接导致学习器不同泛化性能好坏,ROC曲线则是从这个角度出发来研究学习器的工具。
ROC全称是"受试者工作特征(Receiver Operating Characteristic)",ROC曲线的坐标轴分别为真正例率(TPR)和假正例率(FPR),TPR为纵轴,FPR为横轴,定义如下:
在进行学习器比较时,和P-R图类似,若一个学习器的ROC曲线完全"包住"另一个学习器的ROC曲线,则说明前者的性能更好,若二者的ROC曲线发生交叉,则难以一般性的断言二者孰优孰劣。这时可以通过比较ROC曲线下的面积,即AUC(Area Under of ROC Curve),如上图阴影部分面积。
ROC曲线:接收者操作特征曲线(receiver operating characteristic curve),是反映敏感性和特异性连续变量的综合指标,roc曲线上每个点反映着对同一信号刺激的感受性。
ROC曲线的横轴是假正率(FP_rate)、是TPR,纵轴是真正率(TP_rate),ROC曲线的面积就是AUC(Area Under the Curve)。
先来了解下,对于计算ROC最重要的三个概念就是TPR, FPR, 截断点(thresholds)。 (1)TPR:真实的正例1中,被预测为正例的比例
TPR即True Positive Rate,TPR = TP/(TP+FN)。(其中,样本中的真实正例类别总数即TP+FN)
(2)FPR:真实的反例0中,被预测为正例的比例
FPR即False Positive Rate,FPR=FP/(TN+FP)。(其中,样本中的真实反例类别总数为FP+TN)
(3)截断点thresholds
机器学习算法对test样本进行预测后,可以输出各test样本对某个类别的相似度概率。比如t1是P类别的概率为0.3,一般我们认为概率低于0.5,t1就属于类别N。这里的0.5,就是”截断点”。
最理想的分类器,就是对样本分类完全正确,即FP=0,FN=0。所以理想分类器TPR=1,FPR=0
(1) 曲线与FP_rate轴围成的面积(记作AUC)越大,说明性能越好,即图上L2曲线对应的性能优于曲线L1对应的性能。即:ROC曲线越靠近A点(左上方)性能越好,代表模型越好,即ACU接近1 ;曲线越靠近B点(右下方)曲线性能越差。
(2) A点是最完美的performance点,B处是性能最差点。
(3) 位于C-D线上的点说明算法性能和random猜测是一样的–如C、D、E点。位于C-D之上(即曲线位于白色的三角形内)说明算法性能优于随机猜测–如G点,位于C-D之下(即曲线位于灰色的三角形内)说明算法性能差于随机猜测–如F点。
(4) 虽然ROC曲线相比较于Precision和Recall等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。
从AUC判断分类器(预测模型)优劣的标准: AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。 AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。 AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
参考文献:
https://blog.csdn.net/ljfwz153076024/article/details/89071850#Task2_49
https://blog.csdn.net/qq_14822691/article/details/81051958
https://blog.csdn.net/nc514819873/article/details/89094687
https://github.com/HuanwenW/NLP-2019.github.io/blob/master/Data%20%26%26%20基本概念.md
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。