不同的机器学习任务有着不同的性能评价指标。例如,分类问题,可以使用准确率 (Accuracy)、对数损失函数 (log-loss)、AUC等评价方法。实数序列数据预测问题,可以使用平方根误差 (root mean square error, RMSE) 等指标;又如在搜索引擎中进行与查询相关的项目排序中,可以使用精确率-召回率 (precision-recall)。本文将介绍一些在机器学习中常见的评价指标。
混淆矩阵
混淆矩阵是对分类的结果进行详细描述的一个表,无论是分类正确还是错误,并且对不同的类别进行了区分,对于二分类则是一个2x2的矩阵,对于n分类则是nxn的矩阵。对于二分类,第一行是真实类别为“Positive”的记录个数(样本个数),第二行则是真实类别为“Negative”的记录个数,第一列是预测值为“Positive”的记录个数,第二列则是预测值为“Negative”的记录个数。如下表所示:
准确率(Accuracy)
分类正确的样本个数占所有样本个数的比例:
准确率看起来非常简单。然而,准确率评价指标没有对不同类别进行区分,即其平等对待每个类别。但是这种评价有时是不够的,比如有时要看类别0与类别1下分类错误的各自个数,因为不同类别下分类错误的代价不同,即对不同类别的偏向不同,比如有句话为“宁可错杀一万,不可放过一千“就是这个道理,例如在病患诊断中,诊断患有癌症实际上却未患癌症(False Positive)与诊断未患有癌症的实际上却患有癌症(False Negative)的这两种情况的重要性不一样。另一个原因是,可能数据分布不平衡,即有的类别下的样本过多,有的类别下的样本个数过少,两类个数相差较大。这样,样本占大部分的类别主导了准确率的计算,为了解决这个问题,对准确率进行改进,得到平均准确率。
精确率(Precision)
分类正确的正样本个数占分类起所有的正样本个数的比例:
召回率 (Recall)
分类正确的正样本个数占正样本个数的比例:
F1-Score
精确率和召回率的调和平均值,它的值更接近于 Precision 和 Recall 中较小的值:
对数损失函数(log_loss)
在分类输出中,若输出不再是0、1,而是实数值,即属于每个类别的概率,那么可以使用 Log-loss 对分类结果进行评价。这个输出概率表示该记录所属的其对应的类别的置信度。比如如果样本本属于类别 0,但是分类器则输出其属于类别1的概率为 0.51,那么这种情况认为分类器出错了。该概率接近了分类器的分类的边界概率 0.5。Log-loss是一个软的分类准确率度量方法,使用概率来表示其所属的类别的置信度。Log-loss具体的数学表达式:
其中,yi 是指第 i 个样本所属的真实类别 0 或者 1,pi 表示第 i 个样本属于类别 1的概率,这样上式中的两个部分对于每个样本只会选择其一,因为有一个一定为 0,当预测与实际类别完全匹配时,则两个部分都是 0,其中假定 0log0=0。
从数学上来看,Log-loss的表达式是非常漂亮的。我们仔细观察可以发现,其信息论中的交叉熵 (Cross Entropy,即真实值与预测值的交叉熵),它与相对熵(Relative Entropy,也称为KL距离或KL散度, Kullback–Leibler divergence.)也非常像。信息熵是对事情的不确定性进行度量,不确定越大,熵越大。交叉熵包含了真实分布的熵加上假设与真实分布不同的分布的不确定性。因此,log_loss 是对额外噪声 (extra noise) 的度量,这个噪声是由于预测值域实际值不同而产生的。因此最小化交叉熵,便是最大化分类器的准确率。
AUC (Area under the Curve (Receiver Operating Characteristic, ROC))
AUC的全称是Area under the Curve,即曲线下的面积,这条曲线便是ROC曲线,全称为the Receiver Operating Characteristic 曲线。ROC 曲线描述分类器的True Positive Rate(TPR,分类器分类正确的正样本个数占总正样本个数的比例)与False Positive Rate(FPR,分类器分类错误的负样本个数占总负样本个数的比例)之间的变化关系。
如上图,ROC 曲线描述 FPR 不断变化时,TPR 的值,即 FPR 与 TPR 之间的关系曲线。显而易见,最好的分类器便是 FPR=0%,TPR=100%,但是一般在实践中一个分类器很难会有这么好的效果,即一般 TPR 不等于 1,FPR 不等于 0 的。当使用 ROC 曲线对分类器进行评价时,如果对多个分类器进行比较时,如果直接使用 ROC 曲线很难去比较,只能通过将 ROC 分别画出来,然后进行肉眼比较,那么这种方法是非常不便的,因此我们需要一种定量的指标去比较,这个指标便是 AUC 了,即 ROC 曲线下的面积,面积越大,分类器的效果越好,AUC 的值介于 0.5 到 1.0 之间。
具体如何描绘ROC曲线,如在二分类中,我们需要设定一个阈值,大于阈值分类正类,否则分为负类。因此,我们可以变化阈值,根据不同的阈值进行分类,根据分类结果计算得到ROC空间中的一些点,连接这些点就形成ROC曲线。ROC曲线会经过(0,0)与(1,1)这两点,实际上这两点的连线形成的ROC代表一个随机分类器,一般情况下分类器的ROC曲线会在这条对角连线上方。
RMSE (平方根误差)
回归模型中最常用的评价模型便是 RMSE(root mean square error,平方根误差),其又被称为 RMSD(root mean square deviation),其定义如下:
其中,yi 是第 i 个样本的真实值,yi^ 是第 i 个样本的预测值,n 是样本的个数。该评价指标使用的便是欧式距离。RMSE 虽然广为使用,但是其存在一些缺点,因为它是使用平均误差,而平均值对异常点(outliers)较敏感,如果回归器对某个点的回归值很不理性,那么它的误差则较大,从而会对RMSE的值有较大影响,即平均值是非鲁棒的。