如何构建一个推荐系统的验证框架

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Dimitris Apostolopoulos

编译:ronghuaiyang

导读

如何验证一个推荐系统的实际性能,是一个非常重要的内容,今天给大家聊聊这个话题。

大家好,欢迎来到我的另一个任务,建立一个推荐系统,解决所有的问题,带来最佳的结果!

如何构建一个推荐系统的验证框架

今天,我将向你展示我是如何指导我的团队完成构建验证框架的过程的。

现在,推荐系统中最棘手的一个问题是度量推荐的质量,我们所看到的验证框架中使用机器学习技术并不适用于我们的用例中,可悲的是,只有部分适用。

在这篇文章中,我将介绍一种替代的方法来评估推荐引擎,并构建一个验证框架来测试我们的模型。

这个探索的目的是提供另一种可选方法来评估推荐引擎和构建验证框架,所有这些都有利于测试模型

推荐系统的度量技术

评价推荐系统有两种方式:在线方式和离线方式。

我不会告诉你哪一个是正确的,但我会描述它们是如何工作的。在那之后,由你来决定:

1. 推荐系统的在线度量

为了完成这个计划,你需要将算法部署到产品跟踪它生成的所有推荐,并通过与客户交互验证那些推荐

这样的度量可能代表了算法的实际性能,看起来是一个不错的、可靠的选择,但是,它是耗时的。在线评估工作需要:

  • 终身客户价值(CLTV)

  • 点击率(CTR)

  • 投资回报(ROI)

  • 购买

另一件您应该记住的事情是,每次修改算法时,都必须重新部署等待评估结果。另外,你需要应用 A/B 测试原则,并确保你获得了所有正确的数据

运行需要时间,这是正常的,特别是如果你的目标是那些长期指标

2. 离线评估推荐系统

离线评估可以分为两类:隐式和解释反馈。

隐式反馈将帮助你通过与产品的交互来评估结果:点击、浏览、添加到购物车、购买等。

明确的反馈要求你度量系统的不同的组件:来自客户的分数,或者可能是支持票

在这两种情况下,需要将数据集分成训练集和验证集。这个划分意味着使用一个度量标准或一组度量标准来度量性能。

离线评估度量

有许多评估指标可用于离线评估。最常用的是RMSE、归一化折损累积增益([email protected])、[email protected][email protected]F1 分数

  • RMSE

为了计算这个指标,你需要有评级。RMSE 的值范围从 0 到 1,RMSE 越越好

均方误差是在我们的算法生成的**预测评级(p)实际评级(a) **之间计算的。

这是计算方法:

如何构建一个推荐系统的验证框架

第二个度量上场:

由于它可以检索出来的信息,使之成为了最著名的度量之一。它考虑了推荐的顺序,在度量 web 搜索和推荐引擎的质量方面非常有用。

根据实际结果预测结果列表的相关性(rel)对结果进行评估,其值范围为 0 到 1。当然,最好的值是 1。

如何构建一个推荐系统的验证框架

下面按业务的顺序,为了对来自同列表的结果进行归一化,我们把DCG除以ideal DCG (IDCG):

如何构建一个推荐系统的验证框架

如何构建一个推荐系统的验证框架

我在之前的文章中已经分析了准确性,[email protected][email protected]

  • F1 分数

这个分数度量的是测试的准确性。F1 的分数是(p)和(r)的加权平均值,同样,值在 0 到 1之间,1 表示的完美的精度和召回率

下面是计算的式子:

如何构建一个推荐系统的验证框架

所有都在模拟环境中进行

当然,如果要在线评估我们的推荐系统,我们没有太多的时间,远远不够进行改进和测试尽可能多的场景。

我们决定做离线

然而,标准的离线评估不能满足这个要求。

Moosend的数据库是一个无限的数据来源,我们需要一个非常可靠的计划来避免出现问题。

唯一的办法就是创建一个模拟环境。该模拟环境将测量模型的性能,并在此基础上跟踪我们执行的改进。

我们需要先训练我们的推荐引擎。为此,我们利用了 3 个月的交互数据。

当训练结束时,我们进入第二阶段:“推荐日”

29 天后,我们创建了一个不同的时间段的**“验证集”**。

这段时间是我们的等待时间,为了检查客户是否会与推荐的产品进行交互。

过程是这样的:

如何构建一个推荐系统的验证框架

如何构建一个推荐系统的验证框架

我们从一开始就重复了这个过程,以便在第二天生成产品推荐。

假设你需要在 12 月 1 日推荐产品。你的训练数据应该是 9 月 1 日至 11 月 30 日。

然后,你等待。更具体地说,等到 12 月 30 日,确保客户会与推荐的产品进行交互。

这是在真实环境下模拟模型内部工作的方法,同时,在不同的时间段评估它的性能,因为你已经获得了数据。

但是什么指标被用来评估模拟环境呢?用这个!

如何构建一个推荐系统的验证框架

推荐系统的分割技巧

假设有一个家伙,他只和一个产品交互。缺乏信息将把我们的推荐引擎带到一个危险的境地,我们想寻找相似的客户,但最终找到的是与我们的原始客户无关的客户。

你可以看到,有没有足够的数据来确定和其他客户有什么相似之处。

我们需要度量我们的模型的性能,根据“训练部分”的数据提供的信息,我和我的组员根据产品交互将客户分成了三个不同的类别。

我们创建了“”客户 ,常规”客户和“贵宾“的类别。

新客户是指只有 1-4 个产品交互的客户。老客户是指和 5-10 个产品交互的客户。VIP客户均为产品交互 10 次以上的客户。

如何构建一个推荐系统的验证框架

请继续关注!

这个旅程使我们能够通过结合模拟环境分割来测量模型在一段时间内的执行情况。

以各种方式描述模型,并可以提供关于我们的模型的完整报告取决于我们对每个客户的信息。

如何构建一个推荐系统的验证框架

END

英文原文:https://medium.com/moosend-engineering-data-science/building-a-validation-framework-for-recommender-systems-a-quest-ec173a24b56f

如何构建一个推荐系统的验证框架

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧如何构建一个推荐系统的验证框架