机器学习——性能指标
衡量一个机器学习算法的好坏需要一个标准来衡量,对于不同场景中的不同任务就需要决定不同的指标来度量。根据没有免费午餐这个归纳偏好,我们可以知道,没有一种模型是完美适用于任何场景。所以选取一个合适的性能指标和选取一个切合的机器学习算法均是很重要的事情。所以本文对此加以整理
这里先对一些标记作出解释:给定样例集\(D=\{(\mathbb{x}_1,y_1),(\mathbb{x}_2,y_2),\dots,(\mathbb{x}_m,y_m)\}\),其中\(y_i\)是示例\(\mathbb{x}_i\)的真实标记,要评估学习器\(f\)的性能,就要把学习预测结果\(f(x)(或\hat{y})\)与真实标记\(y\)进行比较
分类问题的性能指标
混淆矩阵
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。
TN:真实类别为negative,模型预测的类别也为negative
FN:预测为negative,但真实类别为positive,是漏报
TP:真实类别为positive,模型预测的类别也为positive
FP:预测为positive,但真实类别为negative,是误报
TP、FP、TN、FN,第二个字母表示样本被预测的类别,第一个字母表示样本的预测类别与真实类别是否一致。
错误率与精度
错误率是分类错误的样本数占样本总数的比例
精度则是分类正确的样本数占样本总数的比例
更一般的,对于数据分布\(\mathcal{D}\)和概率分布函数\(p(·)\),二者可表达为
但是对于数据集中样本不均衡的情况来说,精度就会出现问题。例如异常检测,几百万的数据中可能仅会有数十例不正常样本。即使精度达到99%,也并不能保证模型就是好的模型
查准率与召回率
查准率P,预测为正例中真正标记为正的概率(是针对预测结果而言的)
查准率R,真正标记为正的样本被正确反映出来概率(是针对原来样本而言的)
PR曲线
查准率和查全率往往是一对矛盾的度量。简单来说,查准率高,查全率就低。反之亦然。我们可以根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”的正例样本。按此顺序逐个把样本作为正例进行预测,每次可以计算出当前的P、R值。我们可以绘制一幅图。
F1 Score
F1 Score为精准率和召回率的调和均值
ROC
ROC出现的动机
Motivation1:在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例 的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,引入ROC,ROC曲线可以用于评价一个分类器。
Motivation2:在类不平衡的情况下,如正样本990个,负样本10个,直接把所有样本分类为正样本,得到识别率为99%。但这显然是没有意义的。单纯根据Precision和Recall来衡量算法的优劣已经不能表征这种病态问题。
维基百科中的定义:In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.
ROC关注两个指标:
True Positive Rate: TPR = TP / (TP+FN) → 将正例分对的概率
Fales Positive Rate: FPR = FP / (FP+TN) → 将负例错分为正例的概率
在 ROC 空间中,每个点的横坐标是 FPR,纵坐标是 TPR,这也就描绘了分类器在 TP(真正率)和 FP(假正率)间的 trade-off。
ROC曲线中的四个点和一条线:
- 点(0,1):即FPR=0, TPR=1,意味着FN=0且FP=0,将所有的样本都正确分类;
- 点(1,0):即FPR=1,TPR=0,最差分类器,避开了所有正确答案;
- 点(0,0):即FPR=TPR=0,FP=TP=0,分类器预测所有的样本都为负样本(negative);
- 点(1,1):分类器实际上预测所有的样本都为正样本。
- 总之:ROC曲线越接近左上角,该分类器的性能越好。
两个模型用这个指标做评价的时候,如果一个模型A的ROC曲线可以包裹住另一个模型B,那么这个模型A就优于模型B。如果A和B两个模型有交叉,那么这个就看它们曲线下的面积大了,面积大的模型性能更优。
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。随机挑选一个正样本以及一个负样本,分类器判定正样本的值高于负样本的概率就是 AUC 值。
总之:AUC值越大的分类器,正确率越高。
- AUC = 1:绝对完美分类器,理想状态下,100%完美识别正负类,不管阈值怎么设定都能得出完美预测,绝大多数预测不存在完美分类器;
- 0.5<AUC<1:优于随机猜测。这个分类器(模型)妥善设定阈值的话,可能有预测价值;
- AUC=0.5:跟随机猜测一样(例:随机丢N次硬币,正反出现的概率为50%),模型没有预测价值;
- AUC<0.5:比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在AUC<0.5的状况。
同样的AUC的计算不局限于ROC曲线下,相同的情况放在PR曲线也可以。
AUC的计算方法:
第一种方法:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积之和。计算的精度与阈值的精度有关。
第二种方法:根据AUC的物理意义,我们计算正样本score大于负样本的score的概率。取\(NM\)(N为正样本数,M为负样本数)个二元组,比较score,最后得到AUC。时间复杂度为\(O(NM)\)。
第三种方法:与第二种方法相似,直接计算正样本score大于负样本的概率。我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n(n=N M),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有M-1个其他正样本比他score小,那么就有(rank_max-1)-(M-1)个负样本比他score小。其次为(rank_second-1)-(M-2)。最后我们得到正样本大于负样本的概率为
时间复杂度为O(N+M)。
回归问题的性能指标
平均平方误差 MSE
均方误差,也称平均平方误差Mean Square Error(MSE),即\(L_2\)范数损失
对于一般离散的样本点,我们可以有以下的方式计算
更一般的,对于数据分布\(\mathcal{D}\)和概率分布函数\(p(·)\),可表达为
平均绝对误差 MAE
平均绝对误差 MAE,即是\(L_1\)范数损失。
有时会发现学习是一件很快乐的事情 比一直跑步容易多了 不是嘛