随着人们日益提高的生活水平,对于商品的要求也都趋于个性化,个性化的推荐系统也就顺势而生。这篇文章作者详细拆解了推荐系统的运作方式以及用户的“潜意识”,感兴趣的小伙伴一起来看看吧~
随着人们日益提高的生活水平,对于商品的要求也都趋于个性化。每个人对于商品的喜好都有着自己的习惯,而抓住习惯并养成也是电商平台推广宣传的有效手段,就这样推荐系统应运而生。
推荐顾名思义按照用户的喜好和行为推荐可以满足用户诉求和需要的商品以求达到用户购买的目的。广义上来讲所有主动推送给用户的商品信息都可以视作推荐的范畴,而这里面具有商业变现能力的商品推荐又叫做广告。广告的管理一般会由单独的广告系统负责,下文讲述的推荐主要指除广告以外的商品推荐内容。
一、推荐的基础信息
推荐系统从根本上是为了解决营销选品决策的问题,所有就需要有一些指标来衡量和评估效果为后续的推荐策略参数调整和方式进行优化提过依据。常见的推荐系统的指标和搜索的比较类似包括准确率、召回率以及新颖度等。
准确率(Precision):表示召回的商品中推荐正确的商品占整体召回商品的百分比。召回率(Recall):表示召回的商品占整体商品的百分比。新颖度:表示推荐长尾区间的商品情况,如果推荐商品都是热门商品,即新颖度很低,反之则新颖度较高。CTR:点击率,也是广告系统的衡量指标之一。CVR:转化率,指从用户点击推荐商品到完成购买的转化率。公式为CVR=(转化量/点击量)*100%
我们接下来看下推荐系统在电商平台用户端都有哪些常见展现形式,如下图:
推荐的使用一般多放在售前环节通过浏览时的推荐提高用户的购买率,少部分页会放在购买完成后提示用户增加二次消费的几率。电商是全天候的售卖平台,但在实际消费的时候用户会有不同的购买场景。不同的购买场景对于推荐的要求也是有差异的。
时间维度:包括节假期、促销周期等,对于020甚至还需要更细分的时间划分,比如早中晚、加班等。不同的时间维度用户对于购买的诉求不一样,推荐给用户的商品也不应该完全相同。地点维度:地点维度更多会影响到发货的周期,本地仓库/商家是否有货确定是否可以早一点送到用户的手里。
推荐系统要达到场景推荐差异化的情况就要根据不同情况的获取不同的数据进行分析处理。推荐系统的底层数据源和搜索一样都是来自于各个业务系统的,推荐系统本身并不会产生业务数据。推荐系统主要是分析人与物之间的关系,所以数据都是围绕这两个点进行延伸。
人指的就是用户本身的信息。包括用户自身的基础信息比如用户名、联系方式、地址、收藏。还有消费信息比如订单信息、会员信息等。这些信息可以对于用户在系统中的实体进行初步的构建,以便推荐系统可以通过这些信息分析出人的“特性“。
而物品也就是商品信息。商品数据主要是商品的基础信息、促销信息。初次之外对于埋点的数据也需要进行统计,结合上述内容一起分析。埋点信息包括访问数据,点击数据等。
很多时候一些新的用户和新上架商品并没有历史的数据可以追溯,这样就无法提取特征,也就是我们常说的“冷启动“。冷启动的问题也会影响到使用哪种推荐策略,因为不同的推荐策略可能对于数据量的要求也不一样。
某一些策略则依赖于大量的数据进行分析,这个时候没有处理冷启动的问题就无法积累数据。为了应对冷启动的问题人们也找到了一些方法,根本思路就是通过变形或者转化来获取特殊的数据源来解决无数据的问题。
第一种方式提供相对稳定的数据筛选结果,最为常见的例子就是热销排行榜。这种方式是假定所有用户属于一个整体的集合,在这个集合下最关注的商品就是热销品。
考虑到人群的从众心理在新用户前期通过推荐热销商品其实是一种相对稳妥的方式,实际证明新用户在冷启动阶段对于热销品有更大的购买动力,而老用户则也会更多考虑长尾推荐。在数据收集到一定程度后再将推荐数据转化为更为精细的个性化推荐内容。很多平台的发现页面就是通过这种方式去处理早期数据不全的情况。
第二种则是利用用户前期注册时留下的信息进行判断。目前很多平台都会在初始阶段让用户填写一些个人信息和兴趣爱好,这种手段在音乐或阅读类平台用的会比较多。
通过用户填写的信息来初步构建特征进行商品推荐的匹配。除了用户本身在平台填写的信息外,目前绝大多数都会使用第三方登录,比如微信、支付宝等。通过第三方登录在用户授权的情况下也可以导入部分用户行为数据辅助分析用户特征。
但这种推荐由于信息的匮乏会造成颗粒度很粗,导致可能很大一部分用户看到的商品是完全一样,但实际上他们本身的群体还是有一定区别的。
此外也可以结合上面两种情况来获取信息。比如提供一些特定分类如热销品的商品让用户进行选择喜好,根据用户的选择匹配相似的商品数据。这样对于冷启动时可以更好的提供相对精准的推荐数据。
不过这个方法对于前期提供选择的商品集合有一定的要求,不能过分的从单一的分类中获取商品,平台要提供更品类丰富的选项以便后续分析时候可以更加准确。
上面讲到的是新用户冷启动的数据获取方案,除了用户的冷启动还有商品的冷启动。对于上新的商品我们缺乏对于商品购买人群的数据特征,就需要通过冷启动获取关联数据如下图。获取数据的思路和用户基本类似,最基础的方式就是提供特殊标签如新品。通过标签提高权重已达到展示推荐的目的。
此外由于商品的信息是由内部运营人员进行录入,所以我们可以通过人为的方式获取到更多商品的基础信息。推荐系统可以通过关键词或者标签Tag的方式获取商品的关键信息,计算新品与老品之间的相似度来进行推荐。
同时我们也可以通过获取第三方的数据来判断用户情况,如手机安装时获取已安装应用情况判断性别、年龄、爱好等信息。总结下来冷启动主要是通过三个方向获取数据:引导用户自填、运营人工分类、第三方获取。
二、推荐策略的“演变”
判断用户喜欢的商品进行推荐就是建立人、商品的关系。所有上述提到的元数据都需要根据推荐策略进行关联。推荐的策略发展至今已经由简单的概率分析延伸为现在比较流行的深度学习。我们讲到推荐的核心就是建立人与商品的关系,关系靠近的则是认为他们相关度更高,关系较远则认为相关度更低。
在人与商品的关系中还包含人与人、商品与商品的关系,由此构建出一个关系图谱。比如我们常说的用户画像就是设定人与人关系的基础数据。按照人和商品我们可以建立一个二维的坐标。
根据坐标远近来判断相关度进而产生推荐的商品信息。由于推荐系统比一般的电商业务系统对于算法的要求要高,所以这里我们更多从产品维度来介绍下推荐策略和算法的一些情况。如果大家想深入了解一些算法可以自行研究。
上面说到推荐策略即是判断人、商品之间的各种关系,关系越近则认为匹配度越高。那如何去判断关系的远近呢?对于这个核心的问题推荐系统也一直在进行发展演变,人们随着技术的提升思路也变的越来越智能化。
在没有系统推荐的时候,推荐系统更多是承载人工配置商品的过程。通过人工设定固定商品进行推荐,目前在一些不具备推荐算法能力的平台依然会使用此类方法。这样的方式固然可以实现推荐商品,但效率和效果却无法让人恭维,于是就出现了基于内容的推荐策略。
基于内容推荐的思路是将所有的商品、内容、人等基础实体进行标签标记。系统通过标记不同的商品属性特征进行分类,当用户进行购买时系统通过购买的商品进行判断具备相同属性或者相似属性的商品集合,再通过消重、过滤等规则完成最终的推荐列表。
基于内容推荐实际上是来判断商品与商品的固定关系,我们以一个实例看下策略的处理方式。假定平台上有一个图书商品库(包括商品A、B、C三个商品),我们基于图书的相关信息为所有图书制定标签特征,包括但不限于图书名称关键词、图书作者、图书分类、图书定价、图书关键字等。通过标签整理我们看到三个商品的特征集为:
如果用户购买商品B,则购买完成以后可以推荐商品A给用户,因为商品A和商品B具备相同或相似的属性(包括书名关键词、作者、分类)。而商品C则和商品B相差较远所以不进行推荐。
这里面的判断规则一般是通过加权的方式来判断多个属性最终是否和购买商品的特征相似和相同,其中加权以及消重等规则和搜索使用的方法类似。特别说明下推荐策略做加权同样需要考虑词频的因素,一般使用的概念是TF-IDF(termfrequency–inverse document frequency)。
TF为词频即关键词在当前文本中出现的次数,这里包括所有特征属性。IDF为逆文本频率指数,指在所有文本属性中出现次数的倒数。计算方式是TF X IDF,这项指标表示我们认为在当前文本中出现的高频词是高权重的,但如果该关键词在所有文档出现频率也高则认为该词不具备特殊意义故而权重是很低的。
如上表中的经济词汇如果只在当前文本特征中出现次数较高,则是属于高权重。如果在所有语料文本中都出现很多次,则认为他不应该是代表特定意义只是一个通用的词汇,权重应该降低。
基于内容过滤规则比较简单,初期搭建时可以快速实现推荐功能的自动化节省人力。但问题也是明显的,首先需要通过对所有的商品构建特征标签工作量巨大,同时由于推荐策略的颗粒度和构建特征的多少有直接关系,所以会造成颗粒度过于粗糙推荐商品不准确的问题。如果平台本身不具备太多推荐算法的能力,可以通过人工配置加基于内容推荐的方式获取推荐的基本自动化能力。
基于固定的内容无法获取更加精准的推荐商品,那么我们可以换个角度来看待这个问题。我们把从商品与商品的固定关系转变成参考人和商品、商品和商品之间的变化关系来进行推荐策略的构建,也即是说基于用户的行为来判断商品的关系。
用户的行为具有复杂多变的特性,但不代表没有规律可循。常见基于用户行为的策略主要分为几种:关联规则和协同过滤。
关联规则是指通过收集每个用户一段的购买数据,可以得出买过商品A的所有用户以及这些用户同时买了哪些其他商品,然后将这些商品合并就得出了一个同时被购买商品列表的排序。基于商品列表进行消重、去除低关联商品等行为最终实现推荐商品列表输出。关联规则的核心策略就是诊断关联度进行处理,关联度有两个常用指标:支持度和置信度
支持度(Support):买过商品A,同时买过商品B的人数 / 总的人数置信度(Confidence):买过商品A,同时买过商品B的人数 / 买过商品A的人数
计算公式关联度=support * confidence。下面我们举一个例子看下算法是如何运行的。Alice购买了商品item1,这个时候我们想计算item5是否应该推荐。根据公式我们来计算下支持度和置信度。支持度support=2/4,置信度confidence=2/2,需要说明的是计算时要刨除alice本人。这样我们可以得到support=0.5,confidence=1,所以item5对于item1的关联度就是0.5*1=0.5。
从上面的例子我们可以看到通过关联度可以推荐到购买时被人们最常用的组合是哪些。对于一些品类单一的商品结构是非常适用的,策略的逻辑本身并不复杂对于技术要求也不会特别高。但从计算量上来看,需要对所有的商品进行遍历计算才能获取所有的指标。对于离线的数据挖掘成本来说有些过于的大了。
显而易见关联规则作为主要的算法是有些不符合的,那我们就需要寻找一个效率更高、成本更低的算法来作为主要的推荐算法,协同过滤就是目前主流的推荐算法。协同过滤主要原理是运用群体的协同智慧,志在通过一个群体的喜好判断来确定单体的特征和情况。这个群体既可以是用户群体,也可以是商品群体。
协同过滤有几个基本的假设:
用户会对物品给出评价(隐性或显性)用户偏好一定时间内不会发生变化
协同过滤的处理主要包括两个部分:评测和群体搜索。我们来看下协同过滤的处理流程。如下图:
获取所有的用户数据信息,用户信息包括用户自行填写的内容、评价、消费记录等信息。对于新用户的情况可以通过上文讲到的冷启动的方式获取数据。同时要对用户的数据进行一些基本的预处理。
主要的预处理为降噪和归一化。降噪主要是剔除一些异常数据,比如用户的误操作、未支付订单等。而归一化的目的是为了保证所有的用户信息在进行推荐计算的时候不会受到极值的影响出现过大偏差。
比如订单的数量就远大于收藏的数量,需要将这样的信息通过处理变为一个相对合理的区间范围,一般会将归一化的数据分布变为[0,1]区间内。常用的归一化方法也有很多,比如对数归一、指数归一等。归一化的概念和地图的比例尺有些相似,目的是在保证相对关系的情况下将所有样本缩放到一定范围内以便进行计算。
数据处理完毕后推荐系统就会根据信息对用户或商品进行评估打分。这里面主要是基于已知的用户或者商品集合的信息判断与当前用户或商品的相似度。推荐算法基于不同的相似度得到每个集合的分值,根据计算的分值判断与当前用户或商品的临近群体。通过将临近群体和当前商品或用户进行比对完成推荐结果的输出。
关于相似度的计算也是推荐算法的核心,相似度主要是指当前群体和已知群体之间的临近程度。关于临近算法也是随着技术逐步发展起来的。这里面我们以kNN算法为例看下临近算法的原理。
kNN(全称 k-NearestNeighbor K临近算法)意思是k个最近的邻居,指是每个样本都可以用它最接近的k个邻居来代表。策略的思路是通过指定一个数量范围K,判断最相似的K个商品内具备的共有特征,则认为查询的商品或用户的本身也具有这个特征。简单的说就是认为你跟你附近K个最近的群体具有相同特征。
由下图我们可以看到首先我们会将所有的样本数据与当前需要比对的样本进行距离测算,根据测算距离生成一个由近及远的列表。在所有样本比对完毕后将当前列表选取K个样本并判断当前样本中多数项的属性特征,将该属性特征赋予被比对的商品完成推荐结果输出。我们通过图来看下临近算法运行的原理。
当范围K选取的是C1值时,则认为当前比对样本的特征应该是圆形,因为在范围内圆形占多数项。而当我们把范围K的值调整为C2时,我们发现比对样的特征变为了正方形。所以kNN的临近算法会因为K的范围选取产生结果的巨大变化。如下图
而目前的主流协同过滤虽然还是使用计算相似度来进行推荐,但策略上已经发生了变化。按维度分包括基于用户维度和基于商品维度。基于用户维度(User-Based: Row similarity )是指以用户为参照物判断和当前用户相似的用户群体的喜好,从而得到相似用户群体中包含且当前用户未曾购买的商品进行推荐。
如果我们把用户和商品关系列一个矩阵,则按用户维度也可以看做是行相似性。下表可以看到用户A购买时,我们通过查询比对发现用户A和用户C是相似群体,所以根据用户C的特征推荐商品D给用户A。
基于商品维度(Item-Based:Colunm similarity)也叫做基于项目维度,通常指除人以外的实体。项目在电商平台则代表商品维度,而新闻、音乐类平台则代表其他的实体。与基于用户维度不同的地方,基于项目维度是以商品(下文将项目统一称作商品)为参照物判断找到和当前物品偏好相似的物品,然后根据用户历史的拍好情况推荐相似品。
我们还用上述的这个关系矩阵来看基于商品维度的处理方式。购买商品A的用户和商品D的人群很相似,所以当用户购买A时,我们可以推荐商品D给用户。所以基于商品维度又叫做列相似性。
两种维度的算法都各有优缺点,衡量使用的标准主要是选取参照物叫少的维度。例如电商平台相对于庞大的用户群体来说商品相对固定,商品之间的关系变化也较少,所以使用以商品为参照物可以大大减少计算的量级和复杂度。而新闻类则相反,用户相对内容更为稳定,则使用用户为参照处理起来更为便捷。
同时基于商品维度的算法相对于基于用户维度的算法,结果集更为稳定,但丰富性相对较低。所以如何取舍要依赖于平台对于推荐的实际业务要求。更多的时候可以使用混合算法,即按照一定的配比从多种算法上获取商品进行去重、加权、排序。
一般来说在使用协同过滤算法时候有几个技巧:
低频的物品可以做过滤,减少杂质对于整体计算的影响降低高频热门物品的权重,避免出现大量推荐重复显示高频商品的问题。打分的分值可以根据时间的递进进行衰减,即越靠近现在越高
这里简单介绍几种算法的公式,具体的算法细节可以自行百度。产品层面知悉就可以了。
Cosine-basedSimilarity(Cosine相似度):常用于计算文档数据相似度。
Pearson Correlation Similarity (皮尔逊相关度):计算两个定距变量的相似度。
AdjustedCosine Similarity (校正Cosine相似度):修正了余弦相似度算法对于绝对数值不敏感的部分。
三、推荐系统架构
推荐系统按照处理流程的划分也有若干层。从效果来看业务特征加特殊特征的精细度决定效果的最终上限。结构如下图
特征层:负责沉淀所有特征内容。样本层:提供样本选取和训练。模型层:提供模型算法。召回层:负责召回数据。排序层:提供打分、排序、去重等功能