商品推荐系统的类型与原理
电商系统中,它的推荐系统与实现逻辑是怎么样的呢?不同推荐方式背后的运行逻辑是什么呢?本文将为我们揭晓以上问题的答案。
很多事物没有接触其背后真相的时候都觉得它十分神秘,生活中的魔术就是这样的事物。
而我们在没有接触推荐系统的时候,同样觉得它十分神秘、不可思议。比如用户在搜索引擎上搜索一些商品的资料后,去淘宝或者京东时竟然突然发现在推荐的地方出现了用户想要去搜索的商品。
慢慢去了解推荐系统,并思考推荐系统的实现时,我发现它们背后基本逻辑还是十分简单的。
一、推荐系统是什么呢?
今晚有英超的球赛,啤酒和球赛才是最配,怎么能没有啤酒呢,这时你有几个选择?
第一种选择: 你可以去你家楼下7-11,然后你走进店铺转了一圈很快找到了啤酒,然后你对比一下几个品牌和价格,然后拿起你喜欢的品牌在前台进行付款。
第二种选择: 你看离球赛开始时间还有段时间,你可以去家附近的家乐福顺带买点零食,你到了家乐福按照指示牌找到卖酒水的货架,然后不断对比啤酒的品牌和价格,选定之后,你又按照指示牌找到卖零食的货架,然后选择了几袋薯片,然后进行结算。
第三种选择: 你很懒,只想在沙发上面躺尸,这时你可以打开外卖APP在叫做搜索框的物件上面 搜索啤酒,然后你在商品里面挑选各种啤酒,完了之后你根据和你距离的远近进行下单,等待送货上门。
以上描述了用户在不同场景选购啤酒的方式,也是面对商品过载情况下用户怎么对商品进行挑选的场景。
- 在7-11店铺由于店铺不大,店铺成列的SKU大致上千种,用户很容易凭借自己的浏览习惯找到啤酒这个商品。
- 到了家乐福,如果你不是经常去逛超市很难通过浏览方式在数万的SKU种找到啤酒,但是用户可以通过商品类目来找到啤酒。
- 而进入电商类网站,里面的SKU都是千万级别的,用户只能通过搜索来获取到啤酒。
上述例子是针对目的明确的用户的。但是生活中很多用户是目的不明确的,所以才有逛街这个词,逛街和逛超市可能就是因为无聊,为了打发时间才有的行为。
那超市如何使这些人消费呢?
既然你不知道买什么,我就告诉你需要买什么?用各种促销、各种打折、各种堆头推荐商品,同时在你购买商品附近放和这个商品相关的商品。
再比如,以前听音乐是用Walkman,用的是卡带和CD,现在一个手机音乐就涵盖了很多音乐,但问题来了——这么多音乐你要听哪些啊?
如果身边有朋友你可以问你朋友,但是有时候朋友推荐的并不是你喜欢的,而且你不可能时时刻刻都去问朋友吧?
在信息泛化和过载的时代,你需要这样一款懂你的工具,比如你在想听歌的时候,提供你喜欢的音乐,当你想去一个陌生地方的时候为规划好路线,这个工具就叫推荐系统。
推荐系统是信息过滤系统的一个子类,它根据用户的偏好和行为,来向用户呈现他(或她)可能感兴趣的物品。推荐系统会尝试去预测你对一个物品的喜好,以此向你推荐一个你很有可能会喜欢的物品。
推荐系统满足的需求就是在海量信息中帮你过滤你不感兴趣噪声,为你精确锁定你希望得到的有价值的信息。为用户过滤噪声搜索引擎也能提供,帮助用户精确锁定信息。
而搜索引擎于推荐系统的区别在于,搜索引擎是用户主动获取,用户有明确关键词来描述自己想要的。
推荐系统不需要用户有明确需求,而会根据用户标签,历史行为为用户主动推荐内容。
小结一下, 推荐系统是一套信息过滤系统,通过推荐算法将用户和物品联系起来,它能够在信息过载的环境中帮助用户找到感兴趣的信息,也能够推送信息给感兴趣的用户。
二、商品推荐目的
1. 想让用户买什么
正如上面过所说, 很多用户过来就是无聊打发时间,也不知道想要买什么,就是上来看看。这个场景主要表现在新平台的用户只是过来看看上面的商品是否和自己的预期匹配,这个预期首先抛开产品功能上体验,从商品角度来说包括商品的丰富程度,商品价格优惠程度;老平台的用户过来只是为了打发时间,看看平台有没有推荐自己感兴趣的商品。比如各种秒杀活动、团购活动、搜热、分类上热门搜索、猜你喜欢等等。电商常用这些做法来表达自己平台的主张,平台想要用户买什么。
2. 用户可能想买什么
给用户推荐用户真正感兴趣的商品,个性化进行推荐。用户使用的时间越长,推荐的越精准。偏好的推荐本质上是一种排除系统,主要流程包括收集-分析-匹配-推荐。
为什么说用户使用时间越长推荐越精准,通过用户的使用,系统在不断收集用户的行为信息(浏览记录、搜索记录、购买记录、收藏记录、评价记录及用户基本信息),再通过收集到用户行为记录分析用户购买偏好,建立用户画像;匹配相同偏好的用户发现其偏好的商品,匹配相似度高的商品;推荐通过算法将匹配相似度高的商品在前台进行呈现。个性化推荐通过计算商品和用户特征,最终实现“千人千面”的商品推荐方式。
3. 更好的挖掘长尾商品
80/20法则无处不在,尤其是传统零售企业需要考虑商品的流转率,都希望每个商品都被销售一空,因为如果滞销货架的成本会压死零售商。但是互联网的出现在试图打破这个法则,这些长尾商品的总销售额是个不可小觑的数字,甚至超过主流商品。主流商品代表大多数用户的需求,而长尾商品则代表小众用户个性化需求。通过推荐系统发掘用户兴趣,发掘长尾商品创造更高的销售额。
为什么今日头条,抖音都说有毒,不知不觉一刷就是好几个小时,背后的始作俑者就是推荐算法,而这种推荐算法就是更懂你。今日头条和抖音这类平台的崛起让人意识到推荐算法的强大,而最先运营推荐算法的是在电商领域,如果说新闻类推荐不精准用户最多看其他新闻,电商变现链条路径比较短,如果推荐算法不完善流失的可是真金白银。
三、推荐算法数据获取
个性化推荐算法不是凭空产生的需要基于用户的行为进行数据分析设计的,用户行为在个性化统计中有两种方式显性和隐形。
显性反馈行为就是让用户明确表达对物品的观点,比如对音乐的喜欢和不喜欢,对电影的评分,对小视频的点赞等,这些都是设计人员特意让用户表达自己的观点。
与显性相对的就是隐性反馈方式,这种方式不需要用户特地的反馈自己的偏好,而是通过用户行为模型进行采集和分析,比如用户对商品的浏览行为。隐性反馈和显性反馈需要的数据量更好,存储方式分布式存储,对算法模型要求更高。
通过两种反馈方式后,我们可以得出用户给出的反馈结果,而结果分为正向的结果和负向的结果,两个结果就不做详细解释,从字面意思就可以看出来。需要说明的一下隐性反馈一般没有负反馈,隐性反馈都是从日志数据中得到用户行为的结果。
下面我们来对电商推荐系统做一下简单的介绍。
四、常规推荐法
这种方法和线下商超的手法如出一辙,比如banner广告、热销排行榜、商家促销、秒杀、精品推荐等等,都是给予平台运营人员或者买手主观进行推荐,并不会因为用户不同而产生差异,而推荐的条件取决于运营人员经验、商家的赞助(花钱)、销售数据、评价数据、浏览数据、收藏数据等这些因子的影响。
目前电商纷纷转型内容电商和社交电商,通过PGC或者UGC生成内容来吸引消费者的眼球,留住用户时间从达到促销的目的。
内容形式有长图文、视频推荐、直播推荐等多种形式,在内容中嵌入商品购买入口,在浏览时可以直达商品,增加购买转化率。
而社交电商主要是分销形式,一说分销大家都懂,他那是冲着消费去的吗?
常规推荐的问题也很明显,爆款数量毕竟是少数,运营人员推荐的商品用户不一定会买账,这样用户流失率会比较高。这就催生出了第二种推荐方式:个性化推荐法。
五、个性化推荐法
个性化推荐通过采集用户信息,商品信息以及用户行为数据,通过分析和整理后过滤掉的商品数据,利用推荐算法的规则和排序方式给用户进行推荐商品的呈现,从而达到个性化的推荐。而用户对呈现结果的反馈比如点击,浏览时间,收藏,购买,作为依据来不断优化推荐系统。
常见的个性推荐算法主要包括:基于内容个性推荐、利用用户行为的协同过滤、基于人口建模的推荐。在现实情况下,推荐算法不会单一的存在,而是多种推荐方式进行融合,实现个性化推荐的目的- 用户可能想买什么。
1. 基于内容的推荐(CB,Content-Based Recommendation)
CB基于内容相关性构建商品模型推荐,利用内容本身的特征进行推荐。将商品相关的类目、品牌、商品属性、商品标题、商品标签等相似内容推荐给用户。内容的推荐是非常基础的推荐方法,计算的是内容本身的相关程度。
比如用户在淘宝上浏览过男士衬衫,在淘宝的发现好货就会给你推荐各种各样的男士衬衣、男士T恤、男士西装等,在通过你继续访问男士七分袖衬衣,系统又获取到这个产品属性,会继续给你推荐七分袖的亚麻衬衣、七分袖麻料衬衣、五分袖衬衣、男士七分袖T恤等等。这就相当于在商场身边有个贴身的导购,你每试穿一次衣服又为你推荐一系列相关的衣服一样。
CB的基本实现原理
(1)提取商品特征
这个可以根据商品的一些特征比如类目,属性,品牌,标题,标签,商品组合,评分等因子进行提取。
(2)计算用户喜欢的特征
根据用户以前的喜欢的和不喜欢的商品的特征进行计算,得出用户喜欢的特征。用户的特征由相关关键字组成,可以通过TF- IDF模型计算用户行为的关键字,从而得出用户的特征。
(3)相关商品推荐给用户
根据用户喜欢的特征,去商品库进行选择,找出相关性最大的多个商品进行推荐。因为提取出了商品的特征,通过计算得出了用户喜欢的特征,可以通过余弦相似度计算出商品间的相识性给用户进行推荐。简单介绍一下余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度。如图所示,夹角越小,两个向量越类似;夹角越大,两个向量越不同。
(4)最后根据用户反馈的结果更新用户喜欢的特征
用户的喜好是不断变化的,今天可能我关注衬衣,明天我又想看手机,所以系统需要根据用户喜欢的变化更新用户的特征。
CB算法的优点:
- (1)实现起来比较简单,不需要复杂的算法和计算,很快可以实现商品的相关性。
- (2)推荐结果容易被用户感知,用户行为很快被计算出来,从而实现推荐
- (3)结果可解释,很容易找到可解释的相关特征。
- (4)新的商品也可以马上被推荐
CB算法的缺点:
- (1)无个性化,无法挖掘用户的潜在兴趣
- (2)分析特征有限,很难充分提取商品相关性
- (3)无法为新用户产生推荐,在用户行为较少时推荐不精准。
2. 基于协同过滤的推荐
通过基于内容的推荐算法只能基本满足用户的推荐需求,但是要做到平台千人千面还是要有一定的距离。所以我们需要通过算法自动发掘用户行为数据,从用户的行为中推测出用户的兴趣,从而给用户推荐满足他们兴趣的物品。
而基于用户行为分析的推荐算法是个性化推荐系统的重要算法,从而学术界一般将这类算法叫做“协同过滤算法”。协同过滤算法是指通过用户行为分析,不断获取用户互动信息,是用户的推荐列表不断过滤掉自己不感兴趣或者不匹配的商品,让结果不断提升用户的满意度。
简单来说,这种方法不单单只是根据自己的喜爱,而且还引入了“邻居”的喜好来进行推荐。这样推荐更加充分,而且可以深入挖掘用户的潜在的兴趣。
上面说过协同过滤是基于用户行为分析,就需要引入一下参数进行计算:
- 用户标识
- 商品/物品标识
- 用户行为的种类(包括浏览,点赞,收藏,加入购物车,下单等)
- 用户行为的上下文(包括时间、地点等)
- 用户行为的权重(包括浏览时长,购买频次等)
- 用户行为的内容(比如点评的分值,评论的文本内容等)
基于协同推荐业界得到最广泛的算法是基于领域的方法,然而其又细分为了两块——基于用户的协同过滤称为User-based CF 和基于商品的协同过滤称为Item-based CF。下面我们别对这两者进行说明。
(1)基于用户的协同过滤User-based CF
系统通过分析用户和其他用户的特征值,找出相近的特征用户,然后根据特征用户的喜好商品,从中找到一些商品推荐给该用户。
以阅读为例,比如用户A一直看产品经理方面的书籍,这样系统可以找到和他有类似兴趣的用户,然后把这些用户喜欢看的书(同时这些书用户A没有看过的)推荐给用户A。简言之就是计算出两个用户的相似度,然后给A推荐用户B喜欢的东西。
User-based CF基本实现原理
1)找到和目标用户兴趣相似的用户
先将用户行为进行定义分值,比如从浏览,收藏,加入购物车,购买,评分等几个行为进行定义分值,然后根据用户对商品的行为进行打分,通过余弦相似度方法进行计算兴趣相似的用户。
在这里举个栗子吧:
我们先定义一下用户1001-1006个用户,用户对于商品行为类型为下表几种浏览,收藏,下单等,同时我们需要对用户行为赋予不同的权重分,比如收藏为0.5分,整体的行为分值表如下:
然后我们假设用户在不同商品下的用户行为进行统计,得出以下用户对于商品的偏好程度的得分表,其中表格中的数值为用户对商品的感兴趣程度。
我们根据用户余弦相似度进行计算相似的用户。具体公式如下:
我们假设计算 1001和1002 两个用户的相似程度,并将数据带入公式中:
cos(1001,1002)= 23+45+55+51 / √2²+4²+5²+5² * √3²+5²+5²+1² = 0.863
通过计算我们得出1001和1002用户余弦相似度约等于 0.863,相似值得范围从-1到1,1表示用户之间完全相似,0表示用户之间是独立得,-1表示两个用户之间相似度正好相反,在-1到1之间得值表示其相似和相异。而我们刚才得出得指是0.863表示用户之间得相似性非常高。 同理我们可以计算出1001用户和其他用户得相似值。
2)将集合中用户喜欢的且目标用户没有听说过的商品进行推荐
计算出来用户相似度后,在相似度高的用户集合中选择相关商品,将目标用户没有浏览过的商品进行推荐。
还是延续之前那个栗子,我们需要给1001用户推荐没有浏览过的商品,我们将和1001相似值较高的用户进行选择,假设我们设定一个阈值比如0.85,相似度0.85以上用户的喜好商品进行推荐,但是同时涉及到推荐的排序的问题。我们根据以下公式进行计算推荐:
(其中S(u,k)包含和用户u兴趣最接近的k个用户,N(i)对物品i有过行为的用户集合,通过W是用户U和用户V的相似度,R表示用户V对物品兴趣)
我们需要先计算出与1001相似得用户,通过计算得出1002-1006用户的相似值分别是0.863,0.875,0.779,0.812,0.916。这样系统可以将“鼠标”推荐给用户1001.我们需要去阈值在0.85以上的用户,分别是1002,1003,1006,所以可以给用户1001推荐自拍杆和白酒两种商品,我们可以通过上面的公式计算用户对这两者感兴趣程度然后进行排序。
- 自怕杆=0.8631+0.9168=8.191
- 白 酒 =0.863*3=2.589
这样我们可以将自拍杆和白酒的排序,将自拍杆排列在白酒的前面。
(2)基于商品的协同过滤Item-based CF
这种算法是亚马逊最先提出来的,系统通过分析用户标签数据和行为数据,判断出用户喜好商品的类型,然后从这类喜欢共同类型商品的用户中挑选一些类似的商品推荐给该用户。
比如,该算法会因为你购买过“佛珠手串”而给你推荐“茶具”和“檀香”。该算法目前在电商领域使用最多的算法。很多朋友会觉得item CF算法和基于内容的推荐算法很类似,CF算法并不基于商品的属性和类目进行计算相似度,他主要通过分析用户行为来记录内容之间相关性。所以算法不会计算 佛珠手串和茶具,檀香的相似度,而是喜欢佛珠手串的用户也喜欢茶具和檀香,系统就判断手串和茶具、檀香之间有相关性。
Item-based CF基本实现原理
1)计算内容之间的相似度
计算商品间的相似度同样用到的是余弦相似度的计算方法,两个商品产生相似度是因为他们共同被很多用户喜欢,商品相似度越高,说明这两个商品被很多共同喜好的用户所喜欢。
这里同样用到了余弦相似性来求物品的相似度,但是公式略有不同,其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)&N(j)|是同时喜欢物品i和物品j的用户数。
举例说明,首先我们假定有3个用户,分别为A、B、C,用户A购买A,B两个商品,用户B购买了ABC三个商品,用户C只买了商品A。
- 物品A:用户A 用户B 用户C
- 物品B:用户B
- 物品C:用户A 用户B
根据上面公式进行计算,我们先进行物品A、物品B、物品C之间的形似度计算
- 物品A/物品B = 1 / √3*1 = 0.578
- 物品B/物品C = 1 / √2*1 = 0.702
- 物品A/物品C = 2 / √3*2 = 0.816
从以上的结果可以看出来,物品A和物品C之间相似度最高,我们需要推荐商品给用户C时,我们首选将物品C推荐给用户。
2)根据用户的偏好,给用户生成推荐列表。
计算完商品相似度,我们需要把商品推荐给用户。如果用户近期有多个行为记录,我们先计算每条行为记录的相似值,然后可以得出多个推荐列表,我们需要将这些列表做相似值的去重和排序,需要注意的是如果重复记录在单个推荐列表相似值不高,但是多条推荐列表都有涉及我们需要提升其权重。然后根据相似值进行排序展示。
UserCF与ItemCF算法的比较
UseCF:
适合于用户量较小或者小于商品量的场景,如果用户量过大在计算用户间相似度上代价很大。时效性比较强,用户个性化不太明显的领域,当用户新行为产生后不一定导致结果的立刻变化。新用户入驻后产生少量行为后,不能立刻对他进行推荐。UserCF相似表一般都是每隔一段时间进行离线计算的。新商品上线后,有用户对它产生行为将立刻推荐给其他相似度高的用户。缺点是很难解释用户推荐的理由。
ItemCF:
适用于物品数量少于用户量的场景,物品数量很多则计算相似度上运力要求很高。同时适用用户个性化需求比较强、物品丰富的场景。用户一旦有了新的行为一定会导致推荐结果的变化,新用户行为发生变化将立刻向其推荐该物品相似的其他物品。但如果有新商品上线需要离线更新商品的相似度表后,才能进行推荐。
3. 基于人口建模的推荐
基于人口统计学的推荐是比较容易实现的推荐算法。该算法仅使用用户的基本信息,比如年龄、性别等,衡量用户的相似性,将与当前用户相似的其他用户所偏好的物品推荐给当前用户。
- 用户A是名女性,年龄介于20~25岁,偏好物品A;
- 用户B是名男性,年龄介于40~45岁,偏好物品B、物品C;
- 用户C是名女性,年龄介于 20~25岁;
我们已为每位用户建立了profile(用户画像),现在我们要给用户C进行推荐。
基于profile和合适的距离度量计算用户的相似度, 我们发现用户A与用户C最相似,可将用户A偏好的物品A推荐给用户C。
基于人口统计学的推荐特点:
(1)只需要用户基本数据信息就可以进行推荐,不涉及商品的历史偏好数据,没有冷启动的问题。但同时用户某些信息不好获取比如年龄这类隐私的数据。
(2)不依赖商品本身的数据,适合任何领域。因为如此对于用户分类比较粗糙,不适合精度要求高的领域,比如图书,电影和音乐,在初期的电商类平台可以做简单的推荐。
六、基于知识的推荐系统
协同过滤系统需要用户的行为数据作为信息源,向用户推荐商品,而不需要输入其他的附加信息。基于内容的推荐系统主要应用的数据源包括类别和属性信息,还有从商品标题中获取的关键词。
这两种方法的优势在于能以相对较小的代价获取这些数据。但是有些产品领域,用户希望能明确定义他们的需求,而这些明确化的需求的处理并不是协同过滤和基于内容的推荐的系统所擅长的。
基于知识的推荐系统可以帮我们解决上面的问题。它不需要评分数据就可以进行推荐,也不存在冷启动的问题。
基于知识的推荐系统在物品购买频率很低的情况下特别适用。例如房屋、汽车、金融服务甚至是昂贵的奢侈品。在这种情况下,推荐的过程中常常缺乏商品的评价。推荐过程是基于顾客的需求和商品描述之间的相似度,或是对特定用户的需求使用约束来进行的。它允许顾客明确地说出来他们想要什么。好像身边有个专属的顾问,对于买车、买房、金融理财产品他们能够根据用户的需求推荐合适的产品。
基于知识的推荐系统,一般以会话方式进行交互,一般的交互过程如下:
- a. 用户需要按要求一次性或者逐步键入自己的需求
- b. 系统收集到足够多有关用户需求和偏好的信息后,系统匹配推荐一部分产品
- c. 用户可以根据自己的要求修正这些需求
这种方式类似搜索,只是和搜索不同的是不需要键入自己需求,而是系统会提供相应的选项给用户进行选择。这种方式看似比价简单,但是实际上需要考验更加精密的交互模式和专家提供的选项支持,同时也是考验从业在某个领域的深度。
如果产品库里面没有满足用户需求的产品,系统需要智能的给定解决方案,比如主动提供某些的候选结果。
七、写在最后的冷启动
通过上面的介绍相信大家对推荐系统有一定的了解,推荐系统需要有用户的历史行为和兴趣预测用户的行为和行为,因此需要借助大量用户的行为数据来铸件推荐系统。但是很多时候电商系统刚上线没有大量的用户行为数据作为支撑,在这样的情况下怎么样设计个性化推荐系统同时让用户对推荐的结果满意,这就是冷启动的问题。
1. 冷启动主要涉及到3类问题
用户冷启动
当新用户来到电商系统时,因为系统没有他的行为数据,所以无法给他进行个性化推荐。用户冷启动主要解决如何给新用户做个性化推荐的问题。
物品冷启动
当新品上架时,如果更好将商品推荐给它感兴趣的用户。物品冷启动主要解决新品上架推荐的问题。
系统冷启动
系统冷启动主要解决一个新的电商网站设计了个性化推荐系统,让系统上的商品匹配相应的用户,让系统用户体验到个性化的推荐服务。
2. 解决方案
针对上面3个问题,有不同的解决办法,一般来说可以参考一下解决方案:
1)提供非个性化的推荐服务,比如热门推荐,热销排行等,用户根据系统推荐的商品,进行用户的行为,收集到用户行为数据后,切换为个性化推荐。
2)利用基于人口建模的推荐,尽可能多的获取用户的个人信息,根据用户的个人信息,分组进行推荐。比如获取用户的性别,年龄信息后,给用户推荐相应的的商品,当然这个商品的颗粒度很粗,但是从过程中可以获取到用户的行为信息。
3)需要用户的社交网络账号登录,导入用户在社交媒体的喜好,然后根据用户喜欢进行推荐商品。
4)在用户登录时需要用户对一些物品进行反馈,收集用户对这些物品的反馈,推荐与这些物品相似的商品。比如阅读APP常用的了解用户对那些类别的书籍刚兴趣,微博上面注册需要关注某些用户等。
5)对于新新上架的商品,明确商品的类目和属性,根据商品的这些信息匹配找到相类似的物品或者对应有这类喜好的用户。
6)在系统冷启动是,可以引用专家的知识进行标注,从而建立物品的相关度表。
以上和大家简单的聊了聊关于常用的推荐算法,目前推荐算法也在与时俱进,可能我说的都是错的,以后会有更好的推荐方法。作为产品经理对于技术这块个人觉得了解其实现的原理即可。希望本文对大家有所帮助。
本文由 @产品_空 原创发布于人人都是产品经理 ,未经许可,禁止转载。
题图来自 unsplash,基于 CC0 协议
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: