购物网站的商品推荐算法有哪些?

作者:Razzit

链接:https://www.zhihu.com/question/19967564/answer/25015492

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

历史上,关联规则是最先被想到的推荐方法,啤酒和尿布的例子大家应该耳熟,不过某次去中科大参加龙星课程,据老师讲,当时IBM那帮人做关联规则苦于没有数据集,于是杜撰了一个数据集,结果跑出了啤酒和尿布这一奇葩,最后竟然大家都相信了。

关联规则最重要的就是发现共现关系(挖掘频繁项目集),经典算法有Apriori算法、FP-GROWTH算法。关联规则的应用场景是大量的用户购买了A之后还会接着购买了B和C,于是一旦发现用户购买了A,系统就会给用户推荐B和C。这个应用场景放在购物上是非常合适的,因为我们购物往往是根据当前的需求,也就是说用户购物的兴趣点是随着时间在变化的。关联规则可以给用户推荐完全不相似的物品,比如购买了数码相机,系统会推荐SD卡、数码相机电池等,在推荐系统领域专业的术语叫做推荐结果的多样性。

计算复杂度是关联规则挖掘最严重的缺点,随着频繁项目集大小的增加,挖掘的代价越来越高,尤其在数据集比较大的情况下,这就促使人们去寻找更加高效的方法。

协同过滤方法是一大类方法的统称,包括近邻方法,降维方法等等,所谓协同过滤简单来讲就是要给用户推荐和其相似的用户购买过的物品。

大家很熟悉的基于物品的相同过滤方法就属于近邻方法,基于物品的相同过滤首先由Amazon(电子商务领域运用推荐系统的代表,据其某位前科学家在博客中披露,2006年,推荐系统对Amazon营业额的贡献在35%左右)提出来,其基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户,举个例子,物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A。和基于物品的协同过滤方法相对应的是基于用户的协同过滤方法,其基本思想是如果用户A喜欢物品a,用户B喜欢物品a、b、c,用户C喜欢a和c,那么认为用户A与用户B和C相似,因为他们都喜欢a,而喜欢a的用户同时也喜欢c,所以把c推荐给用户A。该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。

除了近邻模型,降维模型也应用的非常普遍,具体的模型如Netflix比赛中Simon使用的由矩阵奇异值分解改造而来的隐因子模型(
Netflix Update: Try This at Home),受限玻尔兹曼机模型等等,降维模型的共同特点就是要将数据使用更加抽象的低维特征表示,从而能够避免原始数据大量的干扰信息。

谈到降维模型,不得不说最近很火的深度学习,深度学习可以自动学习数据的抽象特征,本人的硕士论文题目就是基于深度学习的个性化推荐系统,这里就不多少说了。

暂时就写这么多了,有时间补充上基于内容推荐、混合推荐、基于上下文推荐等。   作者:曾庆英

链接:https://www.zhihu.com/question/19967564/answer/33534574

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

注:以下内容非原创,为本人2年前整理自网上多种来源,但来源当时未标记,

时过境迁,也许推荐引擎不再是当初的模样。

——————我-是-分-隔-线,我是辛勤的搬运工,我是变态的整理侠——————————

与购物网站内部的搜索对应,购物网站一般还会有推荐引擎。因为在很多情况下,用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果。最早将推荐引擎投入大规模使用的是亚马逊,它采用了一种关联推荐机制:当用户购买了一本书之后,页面上会出现这样一个框:你可能对这几本书也有兴趣。

根据推荐引擎是否为不同的用户推荐不同的数据可分为基于大众行为的推荐引擎(千人一面)和个性化推荐引擎(类似千人千面),题主说的应该主要是个性化的推荐引擎

a1. 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。

a2.个性化推荐引擎,对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。

一、推荐引擎的工作原理

《购物网站的商品推荐算法有哪些?》
《购物网站的商品推荐算法有哪些?》

一般情况下,推荐引擎所需要的数据源包括:

  • 要推荐物品或内容的元数据,例如关键字,基因描述等;

  • 系统用户的基本信息,例如性别,年龄等

  • 用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。

——其实这些用户的偏好信息可以分为两类:

显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论(UGC内容);

隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式的反应了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息等等(行为内容)。

显式的用户反馈能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价,而隐式的用户行为,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,例如在电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。

二、个性化推荐引擎的分类

主要根据不同的数据源发现数据相关性的方法可以分为以下几种:

1. 基于人口统计学的推荐(Demographic-based Recommendation)

根据系统用户的基本信息发现用户的相关程度区分【基于人的背景上的相似度】

好处是适合新用户、不依赖物品本身数据

缺点是粗糙且涉及一些敏感个人信息。

 

《购物网站的商品推荐算法有哪些?》
《购物网站的商品推荐算法有哪些?》
如:甲乙都是大学生,甲爱金庸的武侠,那么把金庸的武侠也推荐给乙

 

2. 基于内容的推荐(Content-based Recommendation)

根据推荐物品或内容的元数据,发现物品或者内容的相关性,【有点爱屋及乌的意思】

这是在推荐引擎出现之初应用最为广泛的推荐机制,核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。

【根据物品的相关性和用户的喜好记录推荐相似物品】

《购物网站的商品推荐算法有哪些?》
《购物网站的商品推荐算法有哪些?》

即如甲喜欢金庸的武侠,而古龙的书和金庸的武侠像,那么把古龙的书也推荐给甲

这种基于内容的推荐机制的好处在于它能很好的建模用户的口味,能提供更加精确的推荐。也很适用于新产品。

但它也存在以下几个问题:

·需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度(关键词和标签Tag被认为是描述物品元数据的一种简单有效的方法)——需设定物品的关键词和标签化

·分析仅仅依赖于物品本身的特征,没有考虑人对物品的态度

·因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题,

虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐,图书的社交站点,有些站点还请专业的人员对物品进行基因编码。

3.基于协同过滤的推荐(Collaborative Filtering-based Recommendation)【有点志趣相投的意思】

根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐,这种被称为基于协同过滤的推荐。

可以分为三个子类:基于用户的推荐、基于商品的推荐和基于模型的推荐。

3.1基于用户的协同过滤推荐(User-based Recommendation)

基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- 邻居”的算法;然后,基于这K 个邻居的历史偏好信息,为当前用户进行推荐。【基于个体偏好而非背景上的人的相似度】

《购物网站的商品推荐算法有哪些?》
《购物网站的商品推荐算法有哪些?》

甲乙爱好相似(“邻居”),且甲喜欢AB,乙喜欢ABC,那么把C推荐给A(C可能和AB毫无关系)。

——与基于人口统计学的推荐的区别:基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。

3.2基于商品的协同过滤推荐(Item-based Recommendation,又称基于项目的)

基于商品的协同过滤推荐的基本原理也是类似的,只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。【基于全体偏好发现物的相似度,再根据个体偏好推荐】

——与基于内容的推荐的区别:基于内容的推荐仅根据物的相似度,不考虑个体偏好。

《购物网站的商品推荐算法有哪些?》
《购物网站的商品推荐算法有哪些?》

即如:发现金庸和古龙的武侠比较相似,甲喜欢金庸和古龙的武侠,而乙喜欢金庸的武侠,那么把古龙的武侠也推荐给乙(甲乙可能毫无关系)

——与机遇用户的协同过滤推荐的对比:其实基于商品的协同过滤推荐机制是Amazon 在基于用户的机制上改良的一种策略,因为在大部分的Web 站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于商品的机制比基于用户的实时性更好一些。但如在一些新闻推荐系统则相反。

3.3基于模型的协同过滤推荐(Model-based Recommendation)

基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。【降维建模,有点高大上的AI向】

基于用户和基于商品的协同过滤推荐有一个大问题:它们太死了,就是说,它们能发现都喜欢同一样东西的人,但却忽略了爱好非常相似的潜在用户组合。比如说你喜欢莫奈的睡莲。那么,在这个法国印象派大师画的 250 幅睡莲中,你最喜欢哪一幅?在一群喜欢莫奈的人当中,完全可能每个人喜欢的睡莲都不相同,而基本的算法就有可能识别不出这些人都有着共同的爱好。【基于属性的表象而非内涵?】

此时需要降维(Dimensionality Reduction)的方法。我们来看看你爱吃的东西,以及如何把它跟其他一百万人爱吃的东西做比较。你可以把这些信息用一个巨型矩阵表示出来,每一条竖线代表一样食物,每个人爱吃什么东西就自然形成了一行。在你的这一行上面或许会显示你给了烤牛排 5 颗星、红烧小排 4 星半、烤鸡翅 2 颗星、冻豆腐卷 1 颗星、奶酪烤蘑菇 5 颗星、盐水毛豆 4 颗星,等等。

然而,使用这个矩阵的推荐算法并不关心你给哪种食物评了多少颗星。它想要了解的是你一般而言的喜好,这样它可以将这个信息应用到更丰富多样的食物上。比如说,基于你上面给出的信息,算法可能会认为你喜欢牛肉、咸的东西和烤制菜品,不喜欢鸡肉和任何油炸的东西,不喜欢也不讨厌蔬菜,依此类推【降维找到本质!】。你爱吃的食物所拥有的特点或者说维度,它的数量和符合你要求的食物的数量比起来要小得多——至多可能 50 或 100。通过查对这些维度,推荐算法可以迅速决定你是否会喜欢一种新的食物(比方说盐焗排骨),方法就是把这种食物的各项维度(咸的、牛肉做的、不是鸡肉、不是炒的、不是蔬菜、不是烤的)同你的资料进行比对。这种更为一般性的呈现使得推荐算法能准确的发现有着相似但不同喜好的用户。而且,它大幅压缩了矩阵的规模,使算法变得更加高效。

不过,你爱吃的食物的维度该上哪儿去找呢?肯定不是去问厨师。推荐系统会使用一种称为奇异值分解的数学方法来计算维度,这种方法涉及到创建两个保存原始数据的巨型矩阵,这也是这种方法的主要缺点。创建矩阵所需要的时间会随着客户和产品数量的增多而飞速增长——创建一个拥有 2.5 亿名客户和 1000 万种产品的矩阵,需要花上创建一个 25 万名客户和 1 万种产品的矩阵 10 亿倍那么多的时间。而且这一过程还需要经常重复。一旦收到新的评分,矩阵就已经过时;在像亚马逊这样的公司,每一秒钟都会收到新的评论。幸运的是,就算略微过时,矩阵仍然能以一个挺不错的水平运作。研究人员们也已经在设计新的算法,为奇异值分解提供可用的近似值并显著缩短计算时间。

基于协同过滤的推荐应用最广泛,而它也存在以下几个问题:

  1. 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。

  2. 推荐的效果依赖于用户历史偏好数据的多少和准确性。

  3. 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。

  4. 对于一些特殊品味的用户不能给予很好的推荐。

  5. 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

三、
个性化推荐引擎的应用

其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果。

3.1 Amazon

Amazon 作为推荐引擎的鼻祖,其推荐的核心是通过数据挖掘算法和比较用户的消费偏好与其他用户进行对比,借以预测用户可能感兴趣的商品。Amazon 采用的是分区的混合的机制,并将不同的推荐结果分不同的区显示给用户。

    • 今日推荐(Today’s Recommendation For You): 通常是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。

  • 新产品的推荐(New For You): 采用了基于内容的推荐机制(Content-based Recommendation),将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题。

  • 捆绑销售(Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析,找到经常被一起或同一个人购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。

  • 别人购买/ 浏览的商品(Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于项目的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。

另外,Amazon 很多推荐是基于用户的profile 计算出来的,用户的profile 中记录了用户在Amazon 上的行为,包括看了那些物品,买了那些物品,收藏夹和wish list 里的物品等等,当然Amazon 里还集成了评分等其他的用户反馈的方式,它们都是profile 的一部分,同时,Amazon 提供了让用户自主管理自己profile 的功能,通过这种方式用户可以更明确的告诉推荐引擎他的品味和意图是什么。

3.2 豆瓣

豆瓣的推荐是通过“豆瓣猜”,官方介绍——”你的个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准。”

这一点让我们可以清晰明了的知道,豆瓣必然是基于社会化的协同过滤的推荐,这样用户越多,用户的反馈越多,那么推荐的效果会越来越准确。

相对于Amazon 的用户行为模型,豆瓣电影的模型更加简单,就是“看过”和“想看”,这也让他们的推荐更加专注于用户的品味,毕竟买东西和看电影的动机还是有很大不同的。

另外,豆瓣也有基于物品本身的推荐,当你查看一些电影的详细信息的时候,他会给你推荐出“喜欢这个电影的人也喜欢的电影”,这是一个基于协同过滤的应用。

    原文作者:a-du
    原文地址: https://www.cnblogs.com/a-du/p/9037839.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞