Dimitris Apostolopoulos作者杜伟 淑婷编译

我是怎么走上推荐系统这条(不归)路的……

什么是推荐系统?有哪些类型的推荐系统?怎么做推荐系统?想知道?可以看看这篇小白文~

在这个系列文章中,我将分享掌握推荐系统的经验,以及围绕推荐系统从低级模型到高级模型的实现。

我还会简要提及你构建推荐系统时将会遇到的挑战以及我所用的解决办法。

最后,我会带你们浏览我追踪模型表现和构建其它机器学习模型时的想法、不成功的尝试和验证框架,以得出成功的方法。

但首先……

什么是推荐系统

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

推荐系统是信息过滤系统和人工智能的一部分,旨在预测用户偏好。

我们在哪些地方使用推荐系统

最常见的领域是产品推荐字段过滤和通过用户的偏好来学习,以便将这些知识应用于他人。

我学习推荐系统的初衷

虽然我很享受生活,但我觉得…嗯,太安逸了。所以我决定改变一下这种状态。

然后我决定挑战点什么,你懂的。

比如漫游数据科学世界和征服人工智能什么的。

呵呵,挑战。

就是那种你后悔也为时晚矣的东西。

不过你看,我这不是冒险跳进来,和「海怪」斗争,最后存活下来了吗?也许,你可以听听我——「水手辛巴达」讲讲这个跌宕起伏的故事。

大概是一年前吧,我工作的电子邮件营销和自动化公司(Moosend)给我分配了一个全新的项目。

其理念是创建一个适合且适用于每个电子商务平台的数据驱动推荐引擎。这个通用系统要根据用户和产品的交互产生个性化的产品推荐。

这个项目的挑战之处在于它必须是完全动态的,能够适应各种模式,即季节性购买模式(如圣诞节、光明节、复活节等送礼期间),同时还要实现收益最大化。

如何理解推荐引擎?

每次接到新项目后,我做的第一件事就是了解它的基本信息;它是用来做什么的?什么时候用?系统的结构是什么?它可能具有的多样性和可扩展性?

总共有不同类型的推荐系统,而你选择哪种要取决于你接近客户的策略。

现在是数据的最好时代。过去从来没有像现在这样,这个世界为数据所驱动。大部分最大的电子商务网站依靠数据驱动决策系统来扩大销售。

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

就像我说的,AI 推荐系统有五种不同的类型:

基于内容的引擎:根据相似产品的属性(即每种产品的特性)来识别相似产品。

每个产品都有其属性(例如,手机的属性是屏幕大小、价格、相机、软件等),我们试图找出最相似的属性。

通过这种方式,我们给偏好具有特定属性的手机客户推荐相似的手机。

协同过滤引擎:识别相似客户的偏好,它基于这样一种概念:行为相似的人有相似的兴趣。

在这类系统中,我们用客户的交互来代表他们,预测他们对每个产品产生兴趣的概率,即客户真正欣赏推荐给他们的产品的可能性。

因此,我们可以通过给最相似的客户推荐产品来接近新客户。

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

对两个模型中每个给定的产品进行评分,并对每个结果进行加权;最终的推荐结果来自两个分数的线性组合。

关联规则购物篮分析引擎与先前几种系统略有不同。

有了大量的交互数据集,我们可以找到经常作为序列一起购买的物品的模式;例如,有人在购物车里加了咖啡,但没加糖,我们就会给他推荐糖。

重复购买引擎:预测客户购买特定产品的具体时间或大概时间。

这种算法使用产品周期、购买历史和日期统计来预测未来购买日期。

例如,如果有人买月抛的隐形眼镜,我们可以每隔 30 天为他推荐同样的产品,如果他忘记购买的话。这样,就鼓励客户一直在我们店里买眼镜了。

协同过滤

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

你可以用一两种方法实现协同过滤:基于记忆或基于模型的方法。在两种方法中,我们都用客户的交互行为来代表他们,就像向量格式化矩阵一样。

在基于记忆的方法中,你要测量所有向量(客户)彼此之间的距离,然后根据他们最相似的地方推荐产品。

而在基于模型的方法,即广为人知的矩阵分解模型中,我们要识别数据中的潜在因子。

在统计世界中,潜在因子不是我们直接观察或测量的变量,而是一组在较低维空间中解释(描述)其它变量及其关系而不丢失信息的变量。

而在推荐系统中,潜在因子发现和解码每个客户的模式,以识别他们之间的相似性。

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

我想出来的第一个模型是标准的矩阵分解模型。

在这个案例里,我们在二维稀疏矩阵 R 中用客户的产品交互来代表他们;稀疏矩阵是一种高效计算和高效存储的方式,可以将大量数据存储在一起并准备处理。

矩阵中的行代表客户,列代表像向量一样的产品,然后我们在客户-产品交互单元中填上 1。

而在有产品但没有客户交互的单元格则是空的,如下所示:

下一步是将 R 矩阵分为两部分,一部分针对客户(P),一部分针对具有潜在因子的产品(Q)。然后,我们用 lambda 函数微调这两个矩阵并根据原始 R 矩阵的值测量误差率。当误差率从给定阈值开始下降时,我们中断这个过程。

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

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

性能指标

为了监测模型的性能,我们要测量模型生成的推荐系统的质量。

推荐系统中,我们用 Precision@k 和 Recall@k 测量了系统的性能,这两个指标广泛应用于信息检索场景。

精度被定义为客户已经与之交互(浏览、添加到购物车等)的推荐项目的数量,除以推荐集 k 中的项目数量。

召回是客户已经与之交互的 @k 推荐项目数量,除以客户已经与之交互的项目的总数量(即使在推荐集之外)。

我们还使用了另一个指标:准确率分数,以测量模型的整体性能。我们把准确率分数定义为客户已经与之交互(至少一次交互/集)的推荐集总和,除以客户推荐总数。

在所有模型中,我们在前 5 个(k=5)推荐产品中测量了模型的性能。

模型的优缺点

前方预警:

模型的缺点大于优点。

实现较好的方面是模型和进程非常直接,对那些了解基础知识且具有领域经验的人而言很简单。此外,该模型的实现可以使我们将所有信息放入单个「训练好的」矩阵,为用于生产的推荐做好准备。

那么不好的方面是什么呢?考虑到矩阵稀疏性,当新商店加入推荐引擎时,计算和耗时会呈指数增长。

因此,经过数十个网站后,该系统将消耗大量内存,并且需要花费几天时间进行调整和正常运作。

数据在产生个性化产品推荐时最为重要;举例而言,大量的中小商店没有足够的交互数据来产生自己的个性化推荐。

在观察到令人失望的结果以及想通了研究系统目的之后,我决定改变方向,*专注于如何处理和发布信息*。

如此一来,我可以帮助到数据薄弱的较小商店,同时减小交互矩阵的规模。

在下一篇文章中,我将向大家介绍如何自动融合产品信息以及不同店铺之间的交互。

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

入门推荐系统
4
相关数据
信息检索技术

信息检索(IR)是基于用于查询检索信息的任务。流行的信息检索模型包括布尔模型、向量空间模型、概率模型和语言模型。信息检索最典型和最常见的应用是搜索引擎。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

协同过滤技术

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社区的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

矩阵分解技术

矩阵分解是一种将矩阵简化为其组成部分的方法。这种方法可以简化更复杂的矩阵运算,这些运算可以在分解的矩阵上执行,而不是在原始矩阵本身上执行。它的衍生Non-negative matrix factorization也被用于降维等操作上。

推荐文章
暂无评论
暂无评论~