作者:Dimitris Apostolopoulos
编译:ronghuaiyang
在本系列文章中,我将与你分享掌握推荐系统的经验,以及从基本模型到推荐系统相关的高级模型的实现。
个性化客户体验推荐系统
我会简要介绍你在构建这样一个系统时将遇到的与推荐系统相关的挑战,以及我为克服这些挑战所做的工作。
最后,我将向你介绍一些想法、不成功的尝试,以及我用来跟踪模型性能的验证框架,还有我构建的其他机器学习模型,希望能得到成功的方式。
但首先,…
推荐系统可以说是大数据最常见的应用,通过为你的网站推荐内容,来提高个人的用户体验。
推荐系统是信息过滤系统和人工智能的一部分,目的是预测人们对过多选择的偏好。
最常见的使用领域是产品推荐过滤,并通过客户的偏好进行学习,以便将这些知识应用到其他人身上。
大约一年前,我所在的电子邮件营销和自动化公司把我分配到一个全新的项目。
这个项目的概念是创建一个数据驱动的推荐引擎,可以适用于每个电子商务商店。这个通用系统必须从他们自己的客户产品交互(我们已经有了)中生成个性化的产品推荐。
这方面的挑战是,它必须是“完全动态的”,并能够适应各种模式,即季节性的购买模式(例如在圣诞节、光明节、复活节等送礼期间),但也要收入最大化。
理解推荐引擎
每次我得到一个新项目,我做的第一件事就是试着去了解基本知识,什么时候用,用来干什么,系统的结构,多样性,以及它可能具有的可扩展性 。
有不同类型的推荐系统(RecSys),你选择什么取决于你想遵循什么样的策略来接近你的客户。
在过去,世界从来没有被数据驱动过。但现在,大多数大型电子商务网站都依赖数据驱动的决策系统来扩大销售。
个性化的产品推荐是人工智能给电子商务的礼物,因为它们可以帮助你提高点击率(CTR)和销售率。
就像我说的,有5种不同类型的人工智能推荐系统:
协同过滤
为了刷新你的记忆,这种类型的推荐引擎试图通过使用用户的产品交互(购买、产品视图和添加到购物车产品)来识别具有类似兴趣的用户。
你可以使用以下两种方法之一实现协同过滤,基于内存的或基于模型的。在这两种方法中,我们用客户的交互表示客户,就像用向量表示矩阵一样。
在基于内存的模型中,度量所有向量(客户)之间的距离,并推荐最相似的产品。
在模型方法中,即众所周知的矩阵分解模型中,我们识别数据中的潜在因素。
在统计学中,潜在因素并不是我们直接观察或测量的变量,而是一组在不丢失信息的情况下,在较低维度空间中解释(描述)其他变量及其关系的变量。
在我们的例子中,潜在因素为每个客户查找和解码模式,以便识别它们之间的相似性。
我提出的第一个模型是标准矩阵分解模型
在这个特殊的例子中,我们用一个名为R的二维稀疏矩阵来表示客户的产品交互,稀疏矩阵是一种众所周知的高效计算和高效存储的方法来存储大量的数据在一起,并准备好处理。
矩阵的行表示你的客户,列表示像向量一样的产品,然后我们用值1填充customer-product interaction单元格。
可以想象,没有与客户交互的产品所在的单元格仍然是空的:
下一步是将R矩阵分解为两个矩阵,一个用于客户(P),一个用于产品(Q)及其潜在因素。然后,我们使用lambda函数对两个矩阵进行调优,并通过原始R矩阵的值来度量错误率。当错误率下降到给定的阈值时,我们中断这个过程。
为了格式化R-hat矩阵,我们计算P和Q的点积。在线性代数中,点积是矩阵乘法的结果。
最后一步是推荐一组产品,按特定客户的最高购买概率排序。
为了监控模型的性能,我们必须对模型生成的推荐的质量进行度量。
在推荐系统中,我们使用Precision@k和Recall@k来度量引擎的性能,这两种引擎在信息检索场景中得到了广泛的应用。
Precision定义为与客户交互的推荐商品数量(:查看、添加到购物车等),除以推荐集k中的商品数量。
Recall是与客户交互的推荐集k中的推荐项数,除以与客户交互的总的项数,即使在推荐集之外也是如此。
此外,我们还为我们的系统使用了一个称为Accuracy分数的度量,以便测量总体性能。我们将Accuracy分数定义为与客户进行交互的推荐集的和(最少1个交互/集),除以客户推荐的总数。
在所有模型中,我们对前5名(k=5)的推荐产品度量模型的性能。
这个模型的缺点多于优点。
在实现方面的好处是,对于能够理解基本知识并在该领域有一些经验的人来说,模型和流程非常简单。此外,该模型的实现允许我们将所有信息放入一个单独的“训练过的”矩阵中,以便在生产中提供推荐。
现在,关于缺点。当把新商店加入推荐引擎时,考虑到矩阵的稀疏性,计算量和花费在它们上的时间呈指数增长。
因此,经过几十个站点之后,系统将消耗大量内存,并且将花费数天时间进行调优并正常工作。
在进行个性化产品推荐时,最重要的是数据,例如,大量的中小型商店没有足够的交互数据来产生他们自己的个性化推荐。
看到令人失望的结果,我决定改变我的课程,专注于如何处理和分发信息
因此,我可以帮助较小的、数据较弱的商店,并减小交互矩阵的大小。
在下一篇文章中,我将介绍如何自动合并产品信息和不同商店之间的交互。
英文原文:https://medium.com/moosend-engineering-data-science/the-road-to-recommender-systems-d6bb79bd169d
请长按或扫描二维码关注本公众号