在机器学习中,对一个模型的学习能力好坏的评估,往往人为判断不容易直接得到结果,这时候就可以根据一些数据指标进行分析评估。对模型(分类器,学习器)的泛化能力进行评估,有衡量模型泛化能力的评价标准,被称为性能度量。
性能度量反应了人物需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果,这就意味着模型的"好坏"是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
先来了解两个简单的概念:
错误率(error rate):分类错误的样本数占样本总数的比例,即如果在m个样本中有a个样本分类错误,则错误率E = a / m,对应的,就有准确率。
准确率(accuracy):准确率 = 1 - 错误率,即1 - a / m。
一、混淆矩阵
对于二分类问题,可将样例根据其真实类别与分类器预测类别的组合划分为:
真正例(Ture Positive,TP),将正类预测为正类的数量,即预测正确;
真负例(True Negative,TN),将负类预测为负类的数量,即预测正确;
假正例(False Positive,FP),将负类预测为正类的数量,即预测错误--误报;
假负类(False Negative,FN),将正类预测为负类的数量,即预测错误--漏报。
TP,TN,FP,FN也可以这样理解,第一个字母表示的是预测正确与错误,第二个字母表示预测的结果。T表示正确,所以TP和TN都是预测正确的,然后P表示正类,TP就表示你预测它为正,实际也是正,这就是预测正确的(TP);N表示负类,TN就表示你预测为负类,实际也是负类,即预测正确(TN)
同理,F表示错误,所以FP和FN都是预测错误的,然后P表示正类,FP就表示你预测为正,但实际是负类,即预测错误(FP);N表示负类,FN就表示你预测为负,但是实际为正,即预测错误(FN)。
令TP、TN、FP、FN分别表示其对应的样本数,则TP + TN + FP + FN = 样本总数,分类的"混淆矩阵"如下:
真实情况 | 预测情况 | |
---|---|---|
正类 | 反类 | |
正类 | TP(真正例) | FN(假负例) |
反类 | FP(假正例) | TN(真负例) |
二、准确率、精确率、召回率和F1值
本文开头就已经定义了准确率,在了解了混淆矩阵之后,可以重新定义准确率的概念,以方便我们更好的理解计算。
准确率(Accuracy):预测正确的样本数(TP和TN)占所有样本数的比例,一般地说,准确率越高,分类器越好,计算公式如下:
精确率(Precision),亦称查准率:正确预测为正的样本数(TP)占全部预测为正(TP和FP)的比例,计算公式如下:
召回率(Recall),亦称查全率:正确预测为正的样本数(TP)占全部实际为正(TP和FN)的比例,计算公式如下:
F1值:F1值为算数平均数除以几何平均数,且越大越好,计算公式如下:
转换后得到(其中m为样本总数):
总结:精确率和召回率是一对矛盾的度量,一般来说,精确率高时,召回率往往偏低;而召回率高时,精确率往往偏低。
三、ROC曲线和AUC值
ROC曲线,全称是"受试者工作特征"(Receiver Operating Characteristic)曲线,是研究学习器泛化性能的有力工具。ROC曲线的纵轴是"真正例率"(True Positive Rate,简称TPR),预测为正实际为正的样本数(TP)占全部实际为正(TP和FN)的比例;横轴是"假正例率"(False Positive Rate,简称FPR),预测为正实际为负的样本数(FP)占全部实际为负(TN和FP)的比例。计算公式如下:
如图所示:
假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。
横轴FPR:FPR越大,预测正类中实际负类越多。
纵轴TPR:TPR越大,预测正类中实际正类越多。
理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,TPR、1-FPR越大效果越好。
AUC值(Area Under ROC Curve),是指ROC曲线下的面积。从数学角度讲,AUC值是小于1的数值,一般情况下,ROC曲线都位于y=x这条直线的上方,所以AUC是介于0.5-1之间。
从AUC判断分类器(预测模型)优劣的标准:
AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:抛硬币),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
总之,AUC值越大的分类器,正确率越高。
【参考文献】
[1] 周志华.机器学习[M].北京:清华大学出版社,2016年1月:23-35
https://blog.csdn.net/u013063099/article/details/80964865