2017年8月13日
目前我正在写一系列“电商的推荐系统”相关的文章。主要包括基于物品相似度的推荐、基于用户相似度的推荐、推荐系统冷启动的问题、推荐系统的时效性问题、给用户重复推荐已购买的物品的问题等等内容。对这一方面内容感兴趣的请关注我。
一、亚马逊和淘宝的"猜你喜欢"
上一次讲到亚马逊的"购买此商品的顾客也同时购买"的功能是怎么实现的[1]。
其中值得注意的是,"购买此商品的顾客也同时购买"所推荐的商品列表,与用户过去的浏览记录、购买记录等行为是没有关系的,任何一个买家到这一商品的页面,看到的推荐列表内容都是相同的。
与此不同的是,亚马逊首页的"您最近查看的商品和相关推荐",还有淘宝首页的"猜你喜欢",都是跟用户的行为记录有关的推荐。这两个列表(以下都称为"猜您喜欢")都是跟用户行为有关的,如果用户没有登录、并且有浏览记录,该怎么处理呢?这是一个产品问题啦,有兴趣的同学可以开一个隐身窗口,到亚马逊和淘宝,看一下他们的做法。
二、"猜你喜欢"的原理:基于物品的协同过滤
亚马逊已经说了,他是根据我最近查看的商品来做推荐的。根据亚马逊申请的专利[2],以及亚马逊署名的行业报告[3],可以看出,亚马逊的商品推荐,是基于商品和商品之间的相似度的。通俗的理解,比如顾客浏览了《智能时代》、《人工智能》这两本书,亚马逊知道,一般购买了《智能时代》的人还会购买《人工智能时代》、《新知·人工智能精华篇》,一般购买了《人工智能》这本书的人还会购买《AI是未来的电》,那么亚马逊就会推荐这三本书给我。这个道理很直觉,就像一个饱读诗书的人,有人问他推荐读什么书比较好,他可能会先了解这个人读过什么书、喜欢什么书,然后再推荐与此类似的书给他。
这里就涉及到一个"协同过滤"的概念,亚马逊做出的推荐,是基于他众多顾客的行为的,这就像是这么多的顾客同心协力,共同创造出这个推荐的列表。又因为亚马逊的推荐,主要考虑的是,你查看的商品"类似"的商品,这就是"基于商品"或者通用的说是"基于物品"(item)的推荐。于是,这种推荐方法被称为"基于物品的协同过滤"(item based collaborative filtering)。
三、问题定义与两种思路
下面我们来理一理思路,搞清楚我们到底在做什么。我们(电商平台)现在有10000名用户的购物记录,然后现在有1名新用户浏览了某10个商品,我们要根据其他用户的购物记录和这名用户浏览商品,来给他推荐新商品。怎么做呢?
我们这里可以有两个思路。
第一,我们可以从相似的人入手,我们称呼这名用户为A,我们找出和A相似的用户B,然后推荐B喜欢的商品给A。比如A看的书大量都是大数据开发相关的,我们有一个用户B读的书跟A重合度很高,我们把B喜欢的其他书也推荐给A。
第二,我们可以从相似的物入手,比如A购买了10个商品,我们寻找和A买过的商品类似的商品,然后推荐给A。比如A读了伊隆马斯克的传记《硅谷钢铁侠》,我们知道《硅谷钢铁侠》是一本关于硅谷创业者的书,那么类似的,《乔布斯传》也是关于硅谷创业者的书,所以可以把《乔布斯》传推荐给A。
前者类似于找自己的师兄师姐给我们推荐书籍,后者类似于在书店里自己喜欢的某一类书架中找书。
四、"猜你喜欢"的技术原理
根据亚马逊申请的专利[1],以及亚马逊发布的一个行业报告[3],亚马逊用的是基于物品的协同过滤,也就是上面说的第二种方式。为什么亚马逊要用这种方式呢?后面的文章具体比较两种协同过滤算法,现在可以直观的理解的是,基于物品的系统过滤容易给用户解释理由("因为你浏览过xxx商品")、冷启动容易(用户有一个购买记录就可以推荐相似商品了)。
下面要具体讲基于物品的协同过滤算法了。
算法如上图所示。举例说明,A购买了H、I两种商品。商城还有J、K、L、M、N五种商品,我们要判断用户A对JKLMN的喜好程度。
A对J的喜好程度 = (A对H的喜好程度*H与J的相似度)+ (A对I的喜好程度*I与J的相似度)。
对于KLMN都是同样的算法。然后对JKLMN进行排序,就可以推荐排序前两名的给用户A了。推荐列表就是这么生成。
这里X与Y的相似度,正是我们上一篇文章所讲的内容,有兴趣的可以把上一篇文章[1]读一下。
参考阅读:
[1] 《"购买此商品的顾客也同时购买"的原理是什么? 》http://www.jianshu.com/p/0232150c230e
[2] 《Personalized recommendations of items represented within a database》
(亚马逊推荐系统的专利) https://www.google.com/patents/US7113917#v=onepage&q&f=false
[3] 《Amazon.com Recommendations Item to Item Colaborative Filtering》 (亚马逊推荐系统的行业报告) http://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf
How does the Amazon recommendation system work? https://kunuk.wordpress.com/2012/03/04/how-does-the-amazon-recommendation-system-work-analyze-the-algorithm-and-make-a-prototype-that-visualizes-the-algorithm/
[4]《非常好的协同过滤文章》 http://www.cnblogs.com/wentingtu/archive/2011/12/16/2289926.html