性能度量就是衡量模型泛化能力的评价标准
在机器学习的预测任务中,可以分为两类:
- 回归(regression):预测的值是连续的,比如某地区的房价预测任务
- 分类(classification):预测的值是离散的,比如猫狗图片的二分类任务,可以用0表示猫,1表示狗
回归任务
回归任务最常用的性能度量是“均方误差”(Mean Square Error, MSE)
设(xi,yi)表示第i个样本,xi是输入的向量(由各个特征值构成),yi是正确的输出值,f表示学习器学得的模型,f(xi)表示该模型的预测值,则整个样例集D的“均方误差”可表示为:
MSE=m1i=1∑m(f(xi)−yi)2更一般地,如果各个样本在数据集D中出现的概率p已知,则“均方误差”可表示为:MSE=∫x∼D(f(x)−y)2⋅p(x)dx
分类任务
分类任务主要有下面几种性能度量标准:
- 错误率与精度
- 准确率(查准率)与召回率(查全率)
- F1度量
- ROC 与 AUC
错误率与精度
错误率与精度较为简单,设错误率为E,精度为P
E=总样本数分类错误的样本数, P=总样本数分类正确的样本数显然,P = 1 - E
准确率(查准率)与召回率(查全率)
准确率(precision)也叫查准率,召回率(recall)也叫查全率
对于一个二分类的数据集,其类别标注有且仅有两种可能:正例或反例,对于作用于其上的模型,其输出也有两种可能:正例或反例(可以用0和1来表示),因此可以根据不同的组合得到4种关系:
显然有,TP + FN + FP + TN = 样例总数
准确率定义为:P=TP+FPTP召回率定义为:R=TP+FNTP
直观理解:准确率表示在所预测的正例中,有多少比例是真的正例;召回率表示所有为正例的样本中,有多少比例被预测了出来
因为准确率和召回率这样不同的特点,它们可以用于不同需求的任务度量;比如我们需要从一批西瓜中预测好瓜和坏瓜,如果我们希望将所有的好瓜都能分离出来,也就是希望召回率尽可能的高,最极端的情况是认为所有的瓜都是好瓜,那么召回率也就是1;而如果我们希望在我们预测的好瓜中,真的是好瓜的比例尽可能高,也就是希望准确率尽可能的高,那么我们可以只挑选一两个我们最确定是好瓜的瓜,这样准确率就会很高
F1度量
一般而言,准确率P与召回率R是难以兼得的(除非对于一些很简单的分类任务),那么我们就希望能够有一个指标能够综合考虑P和R,这样也就出现了F1度量:
F1=P+R2⋅P⋅R我们可以在得到P和R后,通过计算F1来比较各个模型的优劣
ROC 与 AUC
ROC全称是“受试者工作特征”(Receiver Operating Characteristic),ROC曲线的纵轴是“真正例率”(True Positive Rate, TPR),横轴是“假正例率”(False Positive Rate, FPR),其中,TPR和FPR定义为:
TPR=TP+FNTP, FPR=FP+TNFP 由此可以作出ROC曲线
该曲线的变化可以理解为:模型对于数据集进行预测后得到一组预测值(假设预测值落在0-1之间,1是正例,0是反例),对这组预测值从大到小排序,某样本的预测值越大,说明模型对于该样本是正例越自信;然后从1开始不断减小正例的阀值(阀值的作用是:若预测值大于它,则被认为是正例;若预测值小于它,则被认为是反例),这样会有越来越多的样本被认为是为正例,因而TPR和FPR会发生改变,在ROC中则可得到多个点,最终也就可以形成一条ROC曲线
AUC(Area Under ROC Curve)指的是ROC曲线与x轴形成的面积,AUC越大,表示模型的可靠性越高