在模型评估过程中,分类问题、排序问题、回归问题等往往需要使用不同的指标进行评估,在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能。如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。

准确率(Accuracy)的局限性;

Q1:奢侈品广告主希望把广告定向投放给奢侈品用户。公司通过第三方数据管理平台(Data Mnangement Platform, DMP)拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,这可能是什么原因?

A1:先说准确率的定义。准确率是指分类正确的样本占总样本个数的比例,即:

$$Accuracy = \frac{n_{correct}}{n_{total}}$$

其中$n_{correct}$为被正确分类的样本个数,$n_{total}$为总样本的个数。

准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

显然,在上述问题中,奢侈品用户只占公司全体用户的一小部分,虽然模型的整体分类准确率高,但不代表对奢侈品用户的分类准确率也很高。在线上投放过程中,系统只会对模型判定的“奢侈品用户”进行投放,因此,对“奢侈品用户”判定的准确率不够高的问题就被放大了。为解决此问题,可以使用更有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

此问题为开放问题,因为产生这种问题的因素有很多,比如模型过拟合或欠拟合、测试集和训练集的划分是否合理,线下评估与线上测试样本分布存在差异等,但评估指标的选择是最容易被发现,也是最可能影响评估结果的因素。

精确率(Precision)与召回率(Recall)的权衡;

Q2:公司提供视频的模糊搜索功能,搜索排序模型返回的Top5的精确率非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集,这可能是哪个环节出了问题?

A2:首先明确两个概念,精确率和召回率。精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。

在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用TopN返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的TopN的结果就是模型判定的正样本,然后计算前N个位置上的Precision@N和前N个位置上的召回率Recall@N。

Precison值和Recall值是既矛盾又统一的两个指标,为了提高Precison值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。

回到问题,模型返回的Precision@5的结果非常好,也就是说排序模型Top5的返回值质量很高。但在实际应用过程中,用户为了找一些冷门视频,往往会寻找排在较靠后位置的结果,甚至翻页去查找目标视频。但根据题目描述,用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。显然,问题出在召回率上。若相关结果有100个,即使Precision@5达到了100%,Recall@5也只是5%。

在模型评估时,是否应该同时关注Precision值和Recall值?是否应该选取不同的TopN的结果进行观察?是否应该选取更高阶的评估指标来更全面地反映模型在Precision值和Recall值两方面的表现?

答案都是肯定的,为了综合评估一个排序模型的好坏,不仅要看模型在不同TopN下的Precision@N和Recall@N,而且最好绘制出模型的P-R(Precision-Recall)曲线。

P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动而生成的。下图是P-R曲线样例图,其中实线代表模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。

由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。这充分说明之用某个点对应的精确率和召回率是不能全面地衡量模型性能,只有通过P-R曲线的整体表现才能够对模型进行更为全面的评估。

除此之外,F1 score和ROC曲线也能综合地反映一个排序模型的性能。F1 score是精准率和召回率的调和平均值,它定义为:

$$F1 = \frac{2 * precision * recall}{precision * recall}$$

均方根误差(Root Mean Square Error, RMSE)的“意外”;

Q3:作为一家流媒体公司,拥有众多美剧资源,预测每部美剧的流量趋势对于广告投放、用户增长都非常重要。公司希望构建一个回归模型来预测某部美剧的流量趋势,但无论采取哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?

A3:RMSE经常被用来衡量回归模型的好坏,但按照题目的叙述,RMSE这个指标却失效了。RMSE的计算公式为:

$$RMSE = \sqrt{\frac{\sum_{i=1}^{n}{(y_i - \hat{y}_i)^2}}{n}}$$

其中,$y_i$是第i个样本点的真实值,$\hat{y}_i$是第i个样本点的预测值,n是样本点的个数。

一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。

回到问题,模型在95%的时间区间内的预测误差都小于1%,这说明在大部分时间区间内,模型的预测效果都是非常优秀的。然而,RMSE却一直很差,这很可能是由于在其他的5%时间区间内存在非常严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,比如流量特别小的美剧、刚上映的美剧或者刚获奖的美剧,甚至一些相关社交媒体突发事件带来的流量,都可能会造成离群点。

针对这个问题,解决方案有三个角度。第一,如果认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。第二,如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。第三,可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error, MAPE),它定义为:

$$MAPE = \sum_{i=1}^{n}\left|\frac{y_i - \hat{y}_i}{y_i}\right| * \frac{100}{n}$$

相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

每个评估指标都有其价值,但如果只从单一的评估指标出发去评估模型,往往会得出片面甚至错误的结果;只有通过一组互补的指标去评估模型,才能更好地发现并解决模型存在的问题,从而更好地解决实际业务场景中遇到的问题。