浅谈机器学习评估中的穿越问题

评估穿越是机器学习系统中一个常见而又隐蔽的问题,会导致对模型做出不准确的评估结果,进而影响对模型的选择和调优。本文以两种最常见的穿越方式为例,介绍一下评估穿越,以及带来的问题和解决方案。


什么是评估穿越?


首先我们来回顾一下ML系统中的评估一般是怎么做的。为了便于描述,我们假设一个训练和评估均为离线进行的场景,但是本文的讨论同样适用于在线的训练和评估。


在拿到样本数据之后,做了必要的清洗和采样之后,我们会将样本分为训练集(train)和测试集(test)(有时还会再分一份作为validation),我们会在训练集上训练出模型,然后在测试集上对模型的效果进行评估,具体来说,我们会计算各种指标出来,例如准确率、召回率、AUC,MAP等等。我们之所以要将样本划分为训练集和测试集,主要目的就是希望在测试集上做评估,而不是在训练集上做评估,防止发生过拟合,进而使得评估结果更加准确。


评估穿越,指的就是由于样本划分不当,导致测试集中的信息“穿越”到了训练集中,导致评估结果会更偏爱过拟合的模型,从而导致评估结果不够准确。这么说比较抽象,下面我们以最常见的两种穿越为例,认识一下穿越究竟是怎么发生的。


时间穿越


机器学习的课本中告诉我们,拿到数据集后,需要将其按照一定比例分割为训练集和测试集,训练集用来训练模型,而测试集用来评测效果。要实现这个目的,最简单的实现方法,就是对于每条样本做一次随机选择,来判断将其放到训练集还是测试集。


但是这种实现方法,会导致一个问题,就是我们称之为“时间穿越”的问题。假设我们的样本数据包含了七月份和八月份的用户行为,按照上面的方法进行划分的话,划分的结果就是训练集和测试集中都可能含有七月和八月的数据,这样的数据在训练时没有问题,但是在预测评估时,会导致数据指标优于实际情况,例如,真的的AUC应该是0.7的话,那么在这样的数据集上评估出的结果就会大于0.7。


为什么呢?大家都知道训练集上训练出来的模型是不能在训练集上进行评估的,因为训练集上的评估结果会更偏好过拟合的模型,导致我们错误评估了模型的泛化能力。这就好比用来练习的试卷不能用来考试,因为这样会导致死记硬背的学生分数更高,而不是学习能力强的学生。类似的,在上面的例子中,由于训练集和测试集中都包含了七月和八月的数据,这就好像考试卷子中虽然没有包含练习试卷的题目,但是包含了非常相似的题目,也会导致我们错误判断一个学生的学习能力。究其根本原因,是因为在实际场景中,数据行为都是在快速变化的,相近时间内的行为存在一定的相似性,时间相差越远行为差异越大。这一点和一个稳定数据分布场景是完全不同的,如果数据分布在时间维度上是相对稳定的,那么时间因素就不是一个那么重要的因素,相互穿越带来的问题就会比较小。


换一个角度来说,我们的模型在训练完成之后,用到线上预测真实数据时,预测的数据不仅是训练模型时没有见到过的,而且在时间上也是一定晚于训练模型时的数据的。那么我们在训练和评估时也要尽量还原这样的场景,否则得到的评测结果就会和真实结果产生偏差。


所以说,要想避免时间维度的穿越,应该在划分训练和测试样本时要将时间维度加以考虑。


会话穿越


以电商网站的推荐为例,用户在浏览一个商品时,某个推荐模块会为他推荐多个商品进行展现,用户可能会点击其中的某几个,其他的则不会点击。为了描述方便,我们将这些一次展现中产生的点击和未点击数据合起来称为一次会话(不同于计算机网络中会话的概念)。


在上面描述的样本划分方法中,一次会话中样本可能有部分被划分到训练集,另外部分会划分到测试集。这样的行为,我们称之为会话穿越。会话穿越的问题在于,由于一个会话对应的是一个用户在一次展现中的行为,所以是存在较高相关性的,穿越会带来类似上面提到的用练习题考试的问题;此外,会话本身是不可分割的,也就是说,在线上使用模型时,不可能让你先看到一次会话的一部分,然后让你预测剩余的部分,因为会话的展现结果是一次性产生的,一旦产生后,模型已经无法干预展现结果。这就好比说模拟考试时老师告诉你说是开卷的,于是你很开心地考了90分,但是到了真实考场上时,考试却是闭卷的,那么你可能只能得到70分。原因就在于你在模拟考试时利用了你在真实考试时无法利用到的信息。


所以在处理涉及到会话的样本时,最好是以会话为单位对样本进行划分,以免出现会话穿越的问题。


穿越的本质


上面我们用两种类型的穿越,向大家介绍了穿越问题,但是这两种穿越,以及我们没有介绍到的其他类型的穿越,里面的核心问题是什么呢?

首先是一个信息泄露的问题。无论是时间穿越,还是会话穿越,其核心问题都在于在训练数据中的信息以不同方式、不同程度泄漏到了测试数据中。我在其他文章中也简单介绍过,机器学习本质上就是信息的游戏,信息的泄露必然会导致评估结果发生偏差。


其次是场景真实性的问题。上面的两种穿越问题中,线下训练测试的场景,都和线上真正预测未知数据的场景有着偏差,从而导致了评估结果的偏差。举个极端的例子,就好比慈溪在颐和园风平浪静的昆明湖训练水兵,然后去波涛汹涌的大海上和敌人打仗,焉有不败之理。


所以大家无论是在处理样本时,还是在处理特征时,需要对信息泄露和场景真实性问题加以注意,这两个问题可能会以各种形态出现在机器学习系统中,稍不留神可能就会被捉弄。


总结


本文用两种最为常见的场景介绍了评估穿越这样一个机器学习系统中常见而又隐蔽的问题,之后通过进一步抽象指出了信息泄露和场景真实性这两个更为泛化的问题,希望能够引起大家的注意。


  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值