纸上谈兵01丨推荐系统入门
Posted 喃喃己语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纸上谈兵01丨推荐系统入门相关的知识,希望对你有一定的参考价值。
“
最近看了一本个性化推荐入门书《推荐系统实践》,学了点皮毛,做个当前阶段的总结,可能理解有偏差。书是12年出版的,也许相对于现在的推荐系统内容有点落后。”
推荐系统是信息过载时代的产物,虽然不能消灭马太效应,但至少让长尾物品得以被发现。
对于生产者,能让目标受众有更大的机会看到自身作品,带来传播和受益。
对于消费者,感兴趣的点有限,以前在无穷的信息量之间找到感兴趣的内容靠的是依据分类主动寻找或者利用搜索引擎,现在可以被动直接获取系统根据历史行为和特定属性推荐的信息。
对于平台,撮合消费者与生产者,将优质的内容匹配到合适的用户面前,发掘长尾,提升整个平台的用户活跃和内容活跃。
最常见的推荐系统当属TopN推荐系统,即给定一个用户,给他生成一个长度为N的个性化推荐列表,使得该列表尽量满足用户的兴趣与需求。常见的有豆瓣推荐图书、各大视频软件(B站、抖音等)的推荐视频列表、公众号文章列表、网易云音乐每日推荐列表、资讯类软件推荐资讯列表等等。
推荐系统运作的主要前提是基于用户行为数据,通常行为包括浏览、点击、搜索、收藏、分享,对于电商网站来说特征行为还有购买、加购、评价、咨询等等,对于音乐网站来说特征行为还有加入歌单、听歌时长、听歌次数等等,对于视频网站来说特征行为还有观看时长进度、弹幕、评论、点赞、投币等等
特征可以简单抽象为主要包括用户喜欢的物品、相似兴趣的用户、用户喜欢的物品的具体特征,从用户的行为和属性提取。特征向量由特征及特征权重组成,权重的影响因素包括行为的种类(如购买行为比浏览更能反映出用户兴趣)、产生行为时间(近期行为比较早之前的行为重要)、行为次数、物品的热门程度(对热门物品产生行为可能只是跟风或者因为热门物品出现次数太多)等
在得到用户的特征向量后,根据特征-物品相关表得到初始的物品推荐列表。因为根据不同的推荐算法生成的相关表不同,所以实际中会将不同的相关表按照配置权重相加得出加权后的相关表。这一模块是和具体的推荐算法(如协同过滤、隐语义模型、基于内容、标签推荐、基于好友的社会化推荐等)密切相关的
如过滤掉已经产生过行为的物品,感觉网易云的过滤系统就不是很智能,经常给我推荐我听过好多遍但不收藏的歌;
过滤掉候选物品之外的物品:候选物品可能包括系统想要推荐的新物品、商业上需要宣传的物品、用户自主筛选条件中的物品
为提升满意度,需要保证推荐结果的新颖性、多样性,所以需对推荐结果按照不同权重排序
在一个推荐系统中要同时满足同时计算多种推荐算法、将不同算法的推荐结果混合输出、完成系统分配的任务(如商业宣传、新物品的推广)、混合推荐不同物品类型、不同页面推荐结果有不同的侧重点、根据用户行为实时动态调整所有用户的推荐策略等等条件比较困难,所以一般一个推荐系统都是由多个上述的推荐引擎组成,每个推荐引擎基于某种推荐策略生成推荐列表后,过滤、排序、返回结果,同时可根据用户反馈灵活调整每个推荐引擎的权重。
推荐系统是为目的服务的,在不同的发展阶段,关注的重点不一样,对应的推荐策略重点也是有差异的。
初期成长阶段,留存比较重要,用户来了没留下,会损失较多推广费用。让用户对产品产生兴趣依赖,推荐内容可能偏向于新颖性、多样性、惊喜度、实时性,让用户能看到更多可能。
成熟发展阶段,日活用户逐渐见顶,增加用户停留时长是新的方向,对推荐系统的准确率、召回率、覆盖率有了更高的要求。
商业化阶段,广告、电商是目前主要营收来源,推荐内容的广告点击转化率、购买转化率成了关注重点。
以抖音为例,从抖音推出的一系列防沉迷但非常克制的措施来看,在用户停留时长这一点上无疑做的还是比较成功的。既需要响应防沉迷的号召,又不能影响到产品的发展,也许是99%的产品永远都体会不到的快乐烦恼。
提高用户停留时长,仅仅靠运营维持的热门视频来维持兴趣已经不够,重点变为找到用户的潜在兴趣并根据兴趣推荐内容以及猜测用户感兴趣的内容。一个新用户进入系统,哪些推荐策略在起作用?
当用户没有历史行为和兴趣时,如何进行个性化推荐并且让用户满意,即冷启动的问题。
冷启动分两种情况,一种刚注册的用户或刚打开app的用户,另一种是之前用过一段时间后太久没打开app的用户,冷启动策略都差不多。说明根据行为生成特征向量的时候,产生行为的时间是个重要因素,时间过去太久,系统不会再计算用户之前的喜好或者是将权重降的很低。
冷启动时,没有行为数据,无法预测兴趣,如何做个性化推荐?一般是推荐热门视频,收集到一定反馈数据之后再切换为个性化推荐。
对于这些热门视频,也不仅仅是按照热度排行直接推荐,它需要具有代表性和区分性,不能老少皆宜。抖音上很多正能量、戳泪点或者体现祖国繁荣昌盛的视频能获得较高点赞和评论数据,但比较难从这些视频中区分用户的个性化兴趣。
同时这些视频要具有多样性,因为用户兴趣可能性较多,所以需要足够多的类型视频来覆盖用户的主流兴趣,用户才更有可能作出反馈。
看多了之后有个感触,
抖音的核心竞争力不是算法而是内容,这些内容放在任意一个平台都能玩活,内容类型上囊括了人性的欲望和弱点,像是一个将人性体现得淋漓尽致的娱乐场。一个个的视频不断刺激分泌多巴胺使人精神上感到虚无的快乐而停不下来,即使能受到刺激的阈值慢慢提高,但还是会有源源不断的能挑战阈值的内容出现。
当然,也不乏一些学习类视频,软件使用技巧、吉他弹奏技巧、人生哲学道理等一些碎片化的精神食粮,但往往点赞量和评论数并不高。
另一种冷启动策略是,抖音提供了第三方登录,利用微博、头条平台上的社交行为数据获得用户的初步视频偏好推荐视频或利用其他平台的好友关系,给用户推荐好友在抖音上喜欢的视频。也可能利用在头条的行为数据得出的用户兴趣喜好来直接推荐视频,毕竟是自家产品数据,已经有了现成的用户画像。
那如果一直不登录呢?一直不登录就一直没有关注、点赞、评论数据,只能基于设备号记录用户对视频的观看时长、观看频次、搜索数据、点击过的内容来进行推荐。因为行为特征少了,推荐系统不能完全准确知道用户喜好,所以推荐结果会更加丰富,显得没有十分精准,但好处就是避免掉入了个性化推荐或多或少都有会的信息茧房,人们喜新厌旧的特性使得单一类型内容看多了也会腻。
使用了一段时间后,收集到一定的用户数据后,书中介绍的推荐方式可以大致分为下面几类:
用户互相合作,通过和软件内容的互动给予系统反馈,进而帮助别人筛选信息,使自己的推荐列表也越来越满足自己的需求。
基于用户的协同过滤算法(UserCF),这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。比如我经常点赞一些冷门吉他视频,那么系统可能会给我推荐同样经常点赞评论这些吉他视频中和我相似度较高的用户喜欢的其他我没有看过的吉他视频,这一算法主要包括两个步骤:
(1) 找到和目标用户兴趣相似的用户集合。利用用户共同有过正反馈的物品计算余弦相似度,余弦值越接近1,代表越相似,从而找到最相似的n个用户。
(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
该算法有一些缺点,随着用户量的增长,计算用户兴趣相似度的复杂度也会以用户数增长的平方关系增长。
基于物品的协同过滤算法(ItemCF),这种算法给用户推荐和他之前喜欢的物品相似的物品。但是ItemCF算法并不利用物品的内容属性(标题、视频风格类型、剧情简介等)计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。
这种算法容易挖掘视频之间的关联性,我们有时候会惊讶于随缘可以刷到类似两人偶遇互相看对眼然后在抖音大海捞针寻人的视频内容的两个当事人视角,又或是同一视频内容的上下集,主要就是因为同一批人给这些视频同时点了赞。基于物品的协同过滤算法主要分为两步:
(1) 计算物品之间的相似度。简单来说,就是喜欢A物品的用户中有多少比例的用户也喜欢B物品,比例越高,代表两者越相似。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表,和用户历史感兴趣的物品越相似的物品,在推荐列表中排名越高。
ItemCF可以利用用户的历史行为给推荐结果提供推荐解释。比如常见的“根据看过的XX视频推荐”、“根据收藏的XX歌曲推荐”等等。
而新物品加入时,因为没有该物品的用户行为数据,ItemCF算法初始无法推荐该新物品,计算物品的相似度可以通过物品之间内容属性。将物品的内容通过向量空间模型表示为一个关键词向量,然后同样是利用余弦相似度计算相似性。当然,如果推荐系统在初期既没有用户行为数据,也没有充足的物品内容信息,只能通过人工对特征进行标注的方式积累数据了。
对于某个用户,得到他的兴趣分类,然后从该分类中找到他可能喜欢的物品。这种推荐方式很好理解,一个人喜欢看猫猫狗狗的可爱视频,系统得出用户喜欢宠物这一兴趣分类,然后在宠物类型的视频中找更多的内容来推荐给用户。基于兴趣分类的方法大概需要解决3个问题:
(1) 如何给物品进行分类?人工分类存在一些问题,比如不能确定具有多个属性特征的物品该归到哪类、细分领域的归属、分类的维度、某物品在该分类下的权重。
(2) 如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度?
(3) 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?
将用户行为表示为二分图,给用户u推荐物品的任务就可以转化为度量用户顶点和与顶点没有边直接相连的物品节点在图上的相关性,相关性越高的物品在推荐列表中的权重就越高。
如下图中,用户A和物品c、e没有边相连,但是用户A和物品c有一条长度为3的路径相连,用户A和物品e有两条长度为3的路径相连。那么,顶点A与e之间的相关性要高于顶点A与c,因而物品e在用户A的推荐列表中应该排在物品c之前。
好友推荐可以增加推荐的信任度、解决冷启动问题(通过微博登录其他网站可以获取好友列表数据),但不一定保证精确度,因为好友关系并不是完全基于共同兴趣产生的。社交网络包括单向关注的社交网络(抖音、B站、Twitter、微博)、双向确认的社交网络(Facebook、人人网)、社区(豆瓣小组、贴吧),第一种推荐列表中的推荐权重可能与关注意愿或是喜欢程度有关,如果经常观看、评论、点赞一个你关注的人的动态,那他的动态在推荐列表中自然会靠前,后两种的动态列表以时间线排列居多。
本文只是简单的对推荐系统的价值、典型构成模块、几种常见的推荐算法做了简单介绍,也是基于对个性化推荐系统第一步的了解做出的总结,还缺少基于用户正负反馈的兴趣偏好修正、如何验证算法的有效性和效果等内容,以及推荐系统在实际使用中的如何结合运作、可能会遇到的问题的处理等等,任重而道远。
以上是关于纸上谈兵01丨推荐系统入门的主要内容,如果未能解决你的问题,请参考以下文章
超详细丨推荐系统架构与算法流程详解
企业级丨推荐系统架构体系
推荐系统丨YouTube召回模型设计
超详细丨完整的推荐系统架构设计
ZZ从入门到高阶,你需要刷哪些书?丨高中物理竞赛辅导书推荐
赠书丨从零开始构建企业级推荐系统