推荐系统之路

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


作者:Dimitris Apostolopoulos

编译:ronghuaiyang

导读

在本系列文章中,我将与你分享掌握推荐系统的经验,以及从基本模型到推荐系统相关的高级模型的实现。


在本系列文章中,我将与你分享掌握推荐系统的经验,以及从基本模型到推荐系统相关的高级模型的实现。

640?wx_fmt=png

个性化客户体验推荐系统


我会简要介绍你在构建这样一个系统时将遇到的与推荐系统相关的挑战,以及我为克服这些挑战所做的工作。

最后,我将向你介绍一些想法、不成功的尝试,以及我用来跟踪模型性能的验证框架,还有我构建的其他机器学习模型,希望能得到成功的方式。

但首先,…

什么是推荐系统?

推荐系统可以说是大数据最常见的应用,通过为你的网站推荐内容,来提高个人的用户体验

推荐系统是信息过滤系统和人工智能的一部分,目的是预测人们对过多选择的偏好。

我们在哪里会使用推荐系统?

最常见的使用领域是产品推荐过滤,并通过客户的偏好进行学习,以便将这些知识应用到其他人身上。

背后的故事

大约一年前,我所在的电子邮件营销和自动化公司把我分配到一个全新的项目。

这个项目的概念是创建一个数据驱动的推荐引擎,可以适用于每个电子商务商店。这个通用系统必须从他们自己的客户产品交互(我们已经有了)中生成个性化的产品推荐。

这方面的挑战是,它必须是“完全动态的”,并能够适应各种模式,即季节性的购买模式(例如在圣诞节、光明节、复活节等送礼期间),但也要收入最大化

理解推荐引擎

每次我得到一个新项目,我做的第一件事就是试着去了解基本知识,什么时候用用来干什么,系统的结构多样性,以及它可能具有的可扩展性

640?wx_fmt=png

有不同类型的推荐系统(RecSys),你选择什么取决于你想遵循什么样的策略来接近你的客户。

在过去,世界从来没有被数据驱动过。但现在,大多数大型电子商务网站都依赖数据驱动的决策系统来扩大销售。

个性化的产品推荐是人工智能给电子商务的礼物,因为它们可以帮助你提高点击率(CTR)和销售率

就像我说的,有5种不同类型的人工智能推荐系统:

  • 基于内容的引擎根据其属性(即每个产品的特征)识别相似的产品。

    我们用每个产品的属性来表示每个产品(例如,一个手机的属性是屏幕大小、价格、相机、软件等),并试图找到最相似的。

    通过这种方式,我们向那些对特定特征的手机感兴趣的人推荐类似的“手机”

  • 协同过滤引擎识别相似客户的偏好,基于具有相似行为的人共享相似兴趣这个想法。

    在这些系统中,我们用每一个客户的互动来代表每一个客户,通过这种方式,我们预测他们对每一个产品感兴趣的概率,也就是说,客户实际喜欢我们推荐给他们的产品的可能性。

    这样,我们可以向新客户推荐和他最相似的人喜欢的产品。

  • 混合系统是基于内容和协同过滤系统的结合。

    用两种模型分别产品进行打分,并分别给与权重。最终的推荐结果将由这两个分数的线性组合得出。

  • 关联规则市场篮子分析引擎与前面的引擎略有不同。

    拥有一个大的交互数据集,我们可以为经常一起购买的商品找到模式并作为一个序列,例如,如果有人在他的购物车中添加了咖啡,但没有添加糖,我们推荐添加糖。

  • 重复购买引擎预测客户购买特定产品的具体时间或近似时间

    该算法使用产品持续时间、购买历史和日期统计数据来预测未来的日期。

    例如,如果有人每月购买一次隐形眼镜,我们建议他们每30天购买一次同样的产品,以防他们忘记购买。这样,我们鼓励他们继续与我们的商店购物。

协同过滤

为了刷新你的记忆,这种类型的推荐引擎试图通过使用用户的产品交互(购买、产品视图和添加到购物车产品)来识别具有类似兴趣的用户。

640?wx_fmt=png

你可以使用以下两种方法之一实现协同过滤,基于内存的或基于模型的。在这两种方法中,我们用客户的交互表示客户,就像用向量表示矩阵一样

在基于内存的模型中,度量所有向量(客户)之间的距离,并推荐最相似的产品。

在模型方法中,即众所周知的矩阵分解模型中,我们识别数据中的潜在因素

在统计学中,潜在因素并不是我们直接观察或测量的变量,而是一组在不丢失信息的情况下,在较低维度空间中解释(描述)其他变量及其关系的变量。

在我们的例子中,潜在因素为每个客户查找和解码模式,以便识别它们之间的相似性。

推荐系统模型#1(我的第一次)

我提出的第一个模型是标准矩阵分解模型

在这个特殊的例子中,我们用一个名为R的二维稀疏矩阵来表示客户的产品交互,稀疏矩阵是一种众所周知的高效计算和高效存储的方法来存储大量的数据在一起,并准备好处理。

矩阵行表示你的客户,列表示像向量一样的产品,然后我们用值1填充customer-product interaction单元格。

可以想象,没有与客户交互的产品所在的单元格仍然是空的:

640?wx_fmt=png

640?wx_fmt=png

下一步是将R矩阵分解为两个矩阵,一个用于客户(P),一个用于产品(Q)及其潜在因素。然后,我们使用lambda函数对两个矩阵进行调优,并通过原始R矩阵的值来度量错误率。当错误率下降到给定的阈值时,我们中断这个过程。

640?wx_fmt=png

为了格式化R-hat矩阵,我们计算P和Q的点积。在线性代数中,点积是矩阵乘法的结果。

最后一步是推荐一组产品,按特定客户的最高购买概率排序。

640?wx_fmt=png

性能度量

为了监控模型的性能,我们必须对模型生成的推荐的质量进行度量。

在推荐系统中,我们使用Precision@k和Recall@k来度量引擎的性能,这两种引擎在信息检索场景中得到了广泛的应用。

Precision定义为与客户交互的推荐商品数量(:查看、添加到购物车等),除以推荐集k中的商品数量。

640?wx_fmt=png

Recall是与客户交互的推荐集k中的推荐项数,除以与客户交互的总的项数,即使在推荐集之外也是如此。

640?wx_fmt=png

此外,我们还为我们的系统使用了一个称为Accuracy分数的度量,以便测量总体性能。我们将Accuracy分数定义为与客户进行交互的推荐集的和(最少1个交互/集),除以客户推荐的总数。

640?wx_fmt=png

在所有模型中,我们对前5名(k=5)的推荐产品度量模型的性能

640?wx_fmt=png

优点和缺点

这个模型的缺点多于优点。

在实现方面的好处是,对于能够理解基本知识并在该领域有一些经验的人来说,模型和流程非常简单。此外,该模型的实现允许我们将所有信息放入一个单独的“训练过的”矩阵中,以便在生产中提供推荐。

现在,关于缺点。当把新商店加入推荐引擎时,考虑到矩阵的稀疏性,计算量和花费在它们上的时间呈指数增长。

因此,经过几十个站点之后,系统将消耗大量内存,并且将花费数天时间进行调优并正常工作

在进行个性化产品推荐时,最重要的是数据,例如,大量的中小型商店没有足够的交互数据来产生他们自己的个性化推荐。

640?wx_fmt=png

看到令人失望的结果,我决定改变我的课程,专注于如何处理和分发信息

因此,我可以帮助较小的、数据较弱的商店,并减小交互矩阵的大小。

在下一篇文章中,我将介绍如何自动合并产品信息和不同商店之间的交互。


640?wx_fmt=png— END—

英文原文:https://medium.com/moosend-engineering-data-science/the-road-to-recommender-systems-d6bb79bd169d

更多机器学习,深度学习的相关内容,请关注作者的网易云课堂:

●通俗易懂的深度学习-机器学习

●通俗的TensorFlow

640?wx_fmt=jpeg

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


喜欢的话,请给我个好看吧640?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值