本文属于「推荐系统」初级读物,适合刚接触或者还没接触过推荐系统的产品同学,不涉及复杂的技术实现原理,主要是从产品经理的角度出发,了解基本的概念和方案,以及在初级阶段需要准备应对的一些「坑」
本文导航
推荐系统是什么——了解推荐系统的分类及介绍
推荐算法——了解推荐算法的基本原理及逻辑
实战踩坑须知——搭建初期需要注意的点
推荐系统是什么?
推荐系统的本质是信息的排序逻辑,即用户在浏览信息时,系统将信息以什么样的顺序展示给用户。这种排序也叫Feed流排序,Feed流排序设计一般常见的分为三种:
Timeline时间排序
重力排序
个性化推荐排序
1、Timeline时间排序
按照信息发布时间倒序排序,如微信朋友圈动态。优点是逻辑极其简单,每个用户、内容都是平等的,平台无法干预。缺点是在信息量非常大的情况下,内容的分发效率极低,用户可能会接触到非常多的无效信息以及错过优质内容。
因此timeline的排序一般只见于如微信朋友圈、QQ动态、部分产品的关注tab等,不适用于开放性平台如头条、抖音等。
2、重力排序
在Timeline的基础上加入了内容质量、热度等维度,进行综合排序。为了让优质内容、热门内容得到更好的曝光,因此在timeline的基础上增加了「热度」的干扰因素,与Time这个因素形成了两个拉力:热度越高的内容会被顶上去,时间越早的内容会被拉下来。最终形成了一个平衡,保证用户能看到当前热门的内容。
重力排序常见于早期PC时代的论坛,如贴吧、天涯、豆瓣等,因此也衍生出如「顶帖」这样的行为。优点是不再单纯的按照时间排序,用户刷新时能看到新的内容,优质的内容会得到更好的曝光;缺点是可能造成霸屏、热门内容不一定符合口味、内容重复出现等体验问题。
3、个性化推荐排序
个性化推荐,即基于每个用户的用户画像,精准的给用户展示感兴趣和可能感兴趣的信息,比如抖音、头条、微博等开放性平台基本都是采用个性化推荐排序。个性化推荐涉及到复杂的产品逻辑、运营配置、技术实现等维度,但是去繁化简的说,核心就是将用户、信息标签化,然后通过算法匹配规则,将信息分发给用户,因此关键点是「标签」「算法匹配规则」。
在信息爆炸时代,个性化推荐是必然的趋势,能极大的提升内容的分发效率,用户能一直获取到对自己有价值的信息,平台也能更精准的进行内容推荐,提升平台用户价值。号称不会把内容推荐交给冷冰冰的机器的微信,都开始在订阅号信息流抛弃了timeline奔向了智能推荐。个性化推荐的缺点也很明显,主要是对用户来说,长期的单一推荐会降低用户本身的认知,因此在个性化推荐中,也需要考虑到如何给用户推荐可能感兴趣的内容,扩大用户的兴趣认知。
个性化推荐算法
上面介绍了几种推荐的分类,其中个性化推荐是最为复杂的,那么其算法究竟是如何实现的呢?
我们可以先了解一下个性化推荐算法的基本模型,涉及到三个角色:用户、内容、推荐算法
举个例子:张三经常去一家书店借书看,好几次之后老板就认识了他,并且知道了张三的看书类型,久而久之,张三再去店里吃饭的时候都不需要自己找书了,提前给老板打个招呼说我要过来看书啦,然后老板就按照张三的习惯,选好了几本书,等张三来看。
这里面张三就是用户,看的书就是内容,老板就是推荐算法。
用户的需求是希望看到自己喜欢的内容——找到喜欢的书
推荐算法的任务是记录下用户的喜好,并在之后主动给用户推荐感兴趣和可能感兴趣的内容——不需要用户每次都找书,到店的时候,老板就已经准备好了
张三每次借书的时候,都会有借书记录:《三体》、《球状闪电》、《流浪地球》...这些记录被老板发现了一些共同点:科幻小说、刘慈欣,老板做了个总结:张三喜欢看科幻小说,喜欢刘慈欣的作品。于是下次来的时候,老板直接从手里拿出两本《全频带阻塞干扰》和《安德的游戏》给张三,完成了推荐的动作。
在上面的例子中,我们会发现有一个元素将这三个角色串联了起来:用户和信息的属性——标签。张三的属性标签是:科幻小说、刘慈欣,两本书也有同样的标签,而老板根据张三的标签筛选出来相同标签的书给张三。
为什么要标签化?而不是直接将用户和信息关联起来进行推荐?因为每一个用户都是一个非常复杂的个体,会有各种各样的喜好、画像、习惯等等,我们无法做到同时满足这些所有的偏好,只能将个体标签化,拆分成无数个精细的标签,然后根据标签去寻找对应的满足需求的信息。
在标签化的系统中,每个用户、信息都是由一个个的标签组成的,当用户需求建立时,推荐系统便开始根据用户的标签画像,到信息库里去搜索有相应标签的内容,再经过筛选之后,返回到前端展示给用户。
在个性化推荐中有两种比较常见的推荐逻辑:
基于标签的匹配度直接推荐
基于内容/用户的协同过滤
1、基于标签的匹配度直接推荐
即根据用户当前的标签画像,直接推荐相应的内容/商品,比如网易云的私人FM、猜你喜欢,会给我推荐我经常听的音乐类型,符合我的口味。
这种推荐方式属于个性化推荐的基本推荐,只考虑用户的标签与内容/商品标签的匹配度,比较适用于品类相对较少、初级阶段的产品。
2、基于内容的协同过滤推荐
即基于用户看过的、消费过的内容,推荐与之相似或相关的内容,相似性即标签相似,相关性即可能原本不相似的内容被用户的主动行为关联上。
原理:商品A被用户1234购买过,商品B也被用户1234购买过,但是A和B并不属于同类商品,此时可以认为商品A和B之间有某种关联性,因此当用户5购买了商品A之后,推荐系统可以将商品B推荐给用户5。
这种方式跟第一种“基于标签的匹配度直接推荐”方式比较相似,都是基于用户与内容/商品之间的匹配度来进行推荐,但是区别的地方在于侧重点不同:
基于标签的推荐更注重用户与内容/商品的标签匹配度,推荐的都是相似的内容
基于内容/商品的协同过滤更注重内容/商品的衍生性,推荐的可能是用户没接触过的内容
举个简单的例子更容易理解:我在JD购买了一台性能超强的游戏台式机,完成订单之后,JD此时会给我推荐电竞外设如电竞鼠标、机械键盘等商品(即使我从来没有搜索浏览过相关商品),而不是继续给我推荐游戏台式机。
3、基于用户的协同过滤推荐
即基于有相似特征的用户,相互推荐两者之间的差异部分,和第二种逻辑类似,只不过参考系变成了用户。
原理:用户A购买了商品12345,用户B购买了商品23456,此时可以认为用户A和B的相似性较高,因此可以给A推荐B买过但是A没买过的商品6,给B推荐A买过但是B没买过的商品1.
协同过滤推荐的特点是能在用户当前的标签画像之下,给用户推荐更多更丰富的信息,能扩大用户的喜好范围,提升价值。但是技术难度、数据支持、各类权重等等非常复杂,而且在实际的推荐策略架构中,一般都是多种逻辑混合进行推荐,需要有专业的算法工程师架构师等进行支持。
以上就是一些推荐系统的基础原理和逻辑,其实还有非常多的推荐方式,比如基于地理位置、好友关系等等,此处不一一阐述,有兴趣的同学可以去查找更详细的资料。
实战踩坑须知
个性化推荐系统搭建初期是一个非常艰难也非常痛苦的过程,因为初级阶段的工作真的真的真的非常重要但是也有非常非常非常多的坑,下面列举几个我经历过的坑以及注意事项:
1、标签规划
初期的标签规划是需要由产品和运营方共同探讨决策的,标签如何分、分几级、分哪些,都会直接影响到后续的推荐效果精不精准,分支末端的标签最重要的是「互斥性」和「全面性」,标签之间最好不要有模糊不清的区分,也不要出现一个内容/商品在标签库中找不到可对应的标签。最粗暴的检验方式是,在确定好标签库之后,根据这个库去给每一篇内容/商品人工的打标签,看是否满足上面的要求。
2、数据支持
标签确定完成之后,就需要进入标签冷启动准备阶段了——将大量的已有内容手动打上对应的标签,然后由大数据模块建立训练集,让推荐系统具备初步的自动标签能力。
3、技术实现
由于推荐算法的技术难度较复杂,如果团队中没有专门的推荐算法工程师支持,就只能产品跟着运营一起慢慢和开发调试、测试效果,这将是一个非常漫长的过程,需要有耐心。由于推荐效果是一个比较主观的概念,比较难以直接量化或者在测试过程中就发现问题,对于小团队来说,大部分的推荐系统都是到线上去测试、完善的(当然是灰度)。
最后推荐一些关于推荐系统设计的书籍,方便更专业更系统的去了解推荐系统
《内容算法:把内容变成价值的效率系统》:从产品业务的角度通俗易懂的了解推荐系统,适合初读物。
《推荐系统实战》:从数据、冷启动、标签、效果测评等多方面介绍了推荐系统,本书更加全面和专业,也比较适合初读物。
《大数据技术原理与应用》:推荐系统本质上是大数据的应用,本书的末尾章节关于大数据的应用中,就有对推荐系统的讲解,前部分偏技术原理,也可以结合一起看。