机器学习中的模型评价指标

Table of Contents

本文由作者原创,未经允许禁止转载。联系marcnuth(AT)foxmail.com了解转载事宜。

1 概述

机器学习的整个流程中,除了特征工程和模型设计上,评价优化也是很重要的一步。 之前一直想着把相关的内容做一个总结,趁着最近工作上也遇到了很多类似的问题,索性写一篇博文记录整理一下相关知识。

在机器学习的实际应用中,我们经常遇到这样三类问题:

  1. 对于该问题,应该用什么指标去评价整个算法的优劣?
  2. 在对模型/工作流程做了一些优化后,最终的表现是否有所提升?
  3. 在多个模型之间对比,哪个模型更好?

其中,对于问题1,我们可以认为这是评测指标选择问题,针对不同任务有不同的评价指标。 对于问题2和3,都可以归类为算法优劣对比的问题。 问题3说的很明白,在有多个模型可供选择的时候该问题很容易发生。 而对于问题2,一些可能的真实场景是,去除/增加某个特征,模型是否得到优化;调整参数后,模型是否得到优化等。

本文将主要针对问题1进行讨论总结,对于问题2和问题3,在之前我的文章中,已经讨论过了,可以参见 《机器学习中如何正确的进行模型选择》.

2 思维图

dmml_evaluation_mind_graph.svg

3 评测指标

3.1 分类问题

3.1.1 概述

分类问题包括二分类问题和多分类问题。其中,多分类问题都可以归结为二分类问题。 在本文中,针对分类问题的评测指标,我们都将将问题简化为二类分类问题的评测问题。

3.1.2 混淆矩阵(confusion matrix)

对于二分类问题,有

  Real Positive Real Negative Metrics
Predict Positive TP FP Precision=TP/(TP+FP)
Preidct Negative TN FN  
Metrics Recall=TP/(TP + TN)   Accuracy=(TP+TN)/(TP+TN+FP+FN)

例如,TP的意思即为truly predict it as positive, 即分类正确。 而FP为falsely predict it as positive, 即原本是negative,分类错误。

通过组合 TP/FP/TN/FN,可以得到不同的评测指标。 如上面表格显示的,可以得到 recall/precision/accuracy 3个不同的指标。 另外,为了平衡 recall和precision 这两个指标的值,有另一个常用的指标: F1-measure = 2RP/(R + P) 其中 R代表recall, P代表precision.

3.1.3 ROC

ROC, 即Receiver Operating Characteristic。

  • X轴: False Positive Rate = FP / (TP + FP)
  • Y轴: True Posistive Rate = Recall = TP / (TP+TN)

ROC曲线的一个例子:

dmml_evaluation_roc.png

画ROC曲线的步骤:

  1. 预测出各个类别的概率
  2. 选取不同的阈值,根据该阈值分类,并计算出TPR, FPR
  3. 反复执行#2, 得到一组数据,画出ROC

ROC曲线反映TP率和FP率的关联变化关系。 理论上说,当某点的切线斜率最大时,即为使得模型最好的点,该点的阈值为最佳阈值。

问题: 是否FPR很低就意味着模型的训练效果好呢?

3.1.4 PRC

PRC即 precision-recall 曲线.

  • X轴: recall
  • Y轴: precision

PRC 曲线的一个例子:

dmml_evaluation_prc.png

画 PRC 的步骤与画 ROC 的步骤类似,这里就不再赘述。

ROC和PRC其实是相当类似的,区别在于两者的X/Y轴所取的数据不一样。ROC和PRC值得注意的地方:

  • 两者都提供给了一种办法使得我们去评估不同阈值下的验证结果
  • 两者都是基于二分类任务的
  • 通过计算曲线下的面积也是一种评估办法
  • ROC 对类别的分布不敏感, 比如正负例在验证集中的占比变化了,对 ROC 的影响不大
  • ROC 可以用来选择合适的阈值
  • PRC 展示了和误分类率的关系
  • PRC 很适合用于处理负类过多的问题,例如不平衡问题

3.1.5 AUC

AUC,即Area under the curve, 其中这个curve指的是ROC. 理论上,一个随机分类的AUC=0.5, 一个完美的分类器(将所有正例负例都分类正确)的AUC=1。 AUC也常被用来评估一个模型是否足够好,当AUC越接近于1时,则模型越好。

不过值得注意的是,AUC给出的是一个很总体的评价。 结合ROC曲线的计算方式,我们知道,最终的一个测试误差和选取的分类阈值有关,如果阈值选取的不好,则即便AUC更高也可能得到一个不够好的测试误差。 但是,如果一个模型的AUC越高,表明他的分类能力越强(受阈值的影响越小),我们也有理由相信它的泛化能力越强。

更坦白的说,如果是在比赛中,AUC不一定是最佳的衡量标准,而是应该根据ROC曲线去选取一个最佳的阈值。毕竟,比赛排名是和测试集相关的。 但是真正在生产环境中,我们要求的是更好的泛化能力,因此AUC就显得比较重要了.

3.2 回归问题

3.2.1 MSE/RMSE

MSE,即 Mean Squared Error。其计算公式为:

$$ MSE = \frac{1}{n} \sum_{i=1}^{n}{(\bar{Y_i} - Y_i)^2} $$

RMSE, 即 Root Mean Squared Error。其计算公式为:

$$ RMSE = \sqrt {MSE}$$

Author: Marcnuth

Last Updated: 2017-06-09 Fri 14:29