您的位置:首页 > 其它

Hulu机器学习问题与解答系列 | 二十一:分类、排序、回归模型的评估

2018-02-27 21:32 465 查看
本期问题的解答结合了具体的Hulu业务案例,可以说是很有趣又好懂了。快快学起来吧!

今天的内容是

【分类、排序、回归模型的评估】

场景描述

在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不同的评估指标进行评估。但在诸多的评估指标中,大部分指标只能片面的反映模型一部分的能力,如果不能合理的综合运用评估指标,不仅不能发现模型本身的问题,甚至会得出错误的结论。下面以hulu的业务为背景,假想了几个模型评估的场景,看看大家能否管中窥豹,发现指标选择或者模型本身的问题。

问题描述

准确率(Accuracy)的局限

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

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

知识点:

准确率(Accuracy) 精确率(Precision)

召回率(Recall) 均方根误差(Root Mean Square Error, RMSE)

解答与分析

1. 准确率(Accuracy)的局限

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

难度:1星

在解答该问题之前,我们先明确一下分类准确率(Accuracy)的定义——准确率是指分类正确的样本个数,占总样本个数的比例。



其中ncorrect为被正确分类的样本个数,ntotal为总样本的个数。

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

明确这一点,我们这道题也就迎刃而解了。因为奢侈品用户显然只占hulu全体用户的一小部分,模型的整体分类准确率高,不代表着对奢侈品用户的分类准确率高。在线上投放过程中,我们只会对模型判定的“奢侈品用户“进行投放,因此对“奢侈品用户”判定的准确率不够高的问题被放大了。为解决这个问题,使用平均准确率(每个类别下的样本准确率的算术平均)来进行模型评估是更为有效的指标。

事实上,这道题是一道比较开放的试题,需要面试者根据问题的现象去一步步地排查问题。标准答案不限于指标选择的问题,即使评估指标选择对了,仍会存在模型过拟合或欠拟合,测试集和训练集划分,线下评估与线上测试样本分布存在差异等等一系列的问题。但评估指标选择的问题是最容易被发现也是最可能影响评估结果的因素。

2. 精确率(precision)与召回率(recall)的权衡

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

难度:1星

要回答这个问题,我们需要首先明确两个概念,精确率(precision)和召回率(recall)。

精确率(precision):分类正确的正样本个数占分类器判定为正样本的样本个数的比例。

召回率(recall):分类正确的正样本个数占真正的正样本个数的比例。

在排序模型中,由于没有一个准确的阈值把结果判定为正负样本,所以往往使用Top N返回结果的Precision和Recall值来衡量排序模型的性能。即我们认为排序模型返回的Top N的结果就是模型判定的正样本,计算Precision@N,和Recall@N。

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

回到问题中来,问题给出Precision@5的结果非常好,也就是说排序模型Top 5的返回值的质量是很高的,但在实际使用过程中,用户为了找一些冷门的视频,往往会寻找排在较靠后的结果,甚至翻页去查找目标视频,但根据题目,用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户,显然,问题出在召回率上,如果相关结果有100个的话,即使Precision@5达到了100%,Recall@5也仅仅是5%。在评价Precision的时候,我们是否应该同时看Recall的指标?进一步,是否应该选取不同的Top N进行观察?再进一步,是否应该选取更高阶的评估指标能够更全面的反映模型在Precision和Recall两方面的表现?

答案显然都是肯定的,为了综合评估一个排序模型的好坏,我们不仅要看模型在不同top N下的Precision@N和Recall@N,而且最好能据此画出Precision-Recall曲线,这里我们简单介绍一下P-R曲线的绘制方法。

P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的某一个点代表着在某一个正样本阈值(大于该阈值模型预测为正样本,小于该阈值预测为负样本)下所对应的召回率和精确率。而整条P-R曲线是通过从最高到最低滑动正样本阈值生成的。如下图图b所示,其中实线代表模型insts模型的P-R曲线,虚线代表insts2模型的P-R曲线。横轴接近0的点代表着正样本阈值最大时模型的精确率和召回率。如图可见,在召回率接近0时,insts模型的精确率是0.9,而insts2模型的精确率是1。说明insts2模型得分前几位的样本全部是真正的正样本,而insts模型即使是得分最高的几个样本也存在预测错误的情况。而随着召回率的增加,精确率整体上有所下降,在召回率为1时,insts模型的精确率反而超过了insts2模型,这充分说明了我们只用一个点的精确率和召回率结果是不能全面衡量模型性能的,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。



(图片来自 Fawcett, Tom. "An introduction to ROC analysis." Pattern recognition letters27.8 (2006): 861-874.)

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



ROC曲线我们在前面的文章中做过详细的介绍,感兴趣的同学可以翻一下公众号的历史文章。

3. 平方根误差的“意外”

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

难度:1星

大家知道,RMSE(Root Mean Square Error,均方根误差)是经常用来衡量一个回归模型好坏的。但按照题目的叙述,RMSE这个指标却失效了。我们首先看一下RMSE的计算方式:



其中,yi是第i个样本点的真实值,

是第i个样本点的预测值,n是样本点的个数。

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

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

那么有什么解决方法呢?这里有三个角度,第一个角度是如果我们认定这些离群点是“噪声点”的话,我们就需要在数据预处理的阶段就把这些噪声点过滤掉;第二个角度,如果我们不认为这些离群点是噪声点的话,我们其实是需要进一步提高模型的预测能力,将离群点产生的机制建模进去。关于流量预估模型如何改进这个问题是一个宏大的话题,我们就不展开讨论了;第三个角度,我们希望找一个更合适评估该模型的指标,关于这个问题,其实是存在比RMSE鲁棒性更好的指标的,比如MAPE(Mean Absolute Percent Error平均绝对百分比误差),定义如下:



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

总结与扩展

本篇文章,我们基于三个假想的hulu的应用场景,主要说明了评估指标选择的重要性。每个评估指标都有其价值,但是如果只从单一的评估指标出发去评价模型,往往会得出片面甚至错误的结论。只有通过一组互补的评价指标去验证试验结果,我们才能够更好的发现并解决模型存在的问题,从而更好的解决实际业务场景的问题。

下一题预告

【特征工程—数值型特征】

场景描述

特征工程是指结合问题寻找有效的特征并进行处理成适合模型的输入形式。机器学习中有句经典的话叫做“Garbage in, garbage out”,意思是如果输入的数据是垃圾,那么得到的结果也是垃圾。可以看出模型成败的关键并不仅仅取决于模型的选取,还取决于我们是否有根据特定的问题找到了行之有效的输入。常用的数据可以分为结构化数据和非结构化数据,其中:结构化数据可以看成关系型数据库的一张表,每列都有清晰的定义,包含了数值型、类别型两种基本类型;非结构化数据主要包括文本数据和图像数据,所有信息都是混在一起的,并没有清晰的类别定义,并且每条数据的大小都是不一样的。

问题描述

1. 为什么需要对数值类型的特征做归一化?

2. 应该怎样处理类别型特征?

3. 怎样处理高维组合特征?

4. 怎样有效地找到组合特征?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: