首先拉到上帝视角谈谈信息检索(Information Retireval)。信息检索是上网的一大基础需求,大到整个互联网的信息,小到应用里某个功能页面的信息,都在信息检索的范畴内。用户总是希望更高效地找到需要的信息,帮助用户快速找到需要的信息通常是做好一个产品的第一步。首先我们聊聊一般线上用户是怎么发现需要的信息的呢?
一、什么是推荐系统?
1.1用户如何在发现信息
互联网上发现信息的方式大致有这么七种,我把用户发现内容的主动性和内容的热门程度分成两个坐标轴如下图所示,圆圈大小代表现在的流行程度:
从用户发现信息的方式我们可以发现,用户在不同场景下为了更高效率地发现自己想要的信息,采用的方法也不尽相同。在用户没有明确目标的场景下,“个性化推荐”是经行业验证,效率最高的一种形式,我们平常说的推荐系统就是上面谈到的“个性化推荐”。
1.2什么是推荐系统?
下面我面聊一下维基百科对推荐系统的定义
推荐系统是通过预估用户对物品(信息)的喜好来向用户建议合适的信息的技术.
Recommender systems or recommendation systems (sometimes replacing "system" with a synonym such as platform or engine) are a subclass of information filteringsystem that seek to predict the 'rating' or 'preference' that a user would give to an item.
从定义本身出发,我们可以看到推荐系统里涉及到的三个主要元素:用户、(合适的)场景和信息。用户不同、场景不同就构成和无数的信息推荐的组合,这就是我们经常听到的“千人千面”。了解完推荐系统我们就想知道为什么需要推荐系统,它能给推荐系统的用户和提供方分别带来什么?
二、为什么需要推荐系统?
随着移动互联网占据用户的碎片时间越来越多,人们被动接受信息的场景越加广泛。与此同时互联网上的信息量也呈现出爆炸式的增长。选择太多也是烦恼,用户很容易迷失在无穷无尽的信息中。针对有海量内容的内容型的产品,推荐系统能给用户和平台带来什么?
2.1用户角度
从用户角度看,推荐系统帮助用户在没有明确信息消费目标的场景下,更方便快捷地获取感兴趣的信息。相比于其它类型的信息发现形式,推荐系统更好地满足了用户消费信息的需求,因此用户也更愿意使用基于推荐系统的产品。
2.2平台角度
提升用户粘性:在推荐系统的调教下,用户使用越多,推荐的内容越符合自己的兴趣,因此用户变得更懒,逐渐放弃思考,只等着推荐系统去给他们投食,慢慢的越吃越胖(换句话说用户的替换成本提高),就离不开了。
提升用户内容消费量:用户能更轻松获取到自己想要的内容,相应的也会消费更多的内容,而更多内容消费往往意味着更高的收入。
提升用户时长:同上。
2.3从行业角度
亚马逊上35% 的购买来自推荐系统,麦肯锡数据。
2016年双十一,得益于个性化推荐,阿里巴巴平台取得了20%的增长。
Youtube上70%的用户时长都是推荐系统贡献的。
Netflix 75% 的播放都来自推荐系统,推荐系统帮助Netflix 每年节省10亿美元。
因此在内容平台上利用推荐系统分发内容给用户和平台双方都带来显而易见的好处。我们确定要做推荐系统,那么推荐系统的目标是什么呢?
三、内容推荐系统的目标是什么?
我们从哪些角度来衡量一个推荐系统的效果呢?(参考:项量,《推荐系统实践》,我根据自己的经验增减衡量的维度并对衡量维度从上到下排序)
上面说到推荐系统的9个评价维度,我们通常用某些数据指标去“逼近”对应的维度目标(如表中效果评估列所示)。基本方式就是:设置推荐的目标->用数据指标来逼近目标->用算法策略来优化指标。我们应该怎么做来优化上诉的指标,以提升推荐系统的体验呢?下面我们进入到工作原理的环节。
四、推荐系统工作原理
推荐系统的本质就是匹配“用户的兴趣”和“内容的特征”
换句话说我们会整理出用户特征(画像)和内容特征(画像),然后通过一些关联方式把两者关联起来,这样我们就能在特定的场景下给用户推荐可能感兴趣的内容(就是某些关联方式下表现好的内容)。
4.1关联用户和内容的方式
那么怎么把用户和内容关联起来呢?回答这个问题之前大家可以思考:“为什么会看到这篇文章?”我们通过一问一答的方式来介绍用户与内容的关联,关联的方法主要有下面四种:
(1)基于内容
问:为什么会看到这篇文章?
答:我对文章的标题、内容感兴趣,这篇文章的信息对我有用(之前看过类似的文章,或者同一个创作者的文章)。
基于内容的推荐是最直观也最容易的,用户喜欢哪些类型的内容,我给给他们推荐哪些类型的内容。这类联系算法的基础是我们对内容本身有了解,能识别每条内容的具体属性。好比说我想给用户推荐体育类的内容,但是我不知道哪些内容是关于体育的,也是白费。
基于主题/频道:给用户推荐用户感兴趣的主题下的优质内容;
基于标签/关键字:给用户推荐用户感兴趣的关键词下的优质内容;
创作者/内容源头:给用户推荐用户感兴趣的作者的优质内容;
基于其它深度的隐语义:机器通过聚类等手段能够计算出一些人无法直观描述,但是有意义的分类,然后给用户推荐这些隐分类下的优质内容。
(2)基于协同
问:为什么会看到这篇文章?
答:与我兴趣相同的用户也看了这篇文章(根据相似用户的行为)。
协同过滤简单来说是利用兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的内容。
基于物品的协同:亚马逊著名的”买过该商品的用户还买了”-““Customer Who Bought This Item Also Bought”就是通过基于物品的协同做的。
基于用户的协同:基于用户的协同本质上是根据用户的行为找到相似的用户然后根据其它用户的喜好进行推荐。
基于向量:把用户和物品映射成空间上的向量,然后计算相似。
(3)基于网络结构
问:为什么会看到这篇文章?
答:我的朋友再看,影响到我了。
基于网络结构就是把用户和内容的内容相关性和操作记录构成网络拓扑结果。
基于社交网络:微信的看一看就是单行基于社交网络的推荐,主打朋友推荐的内容;
基于结构网络:看过相似的文章的用户有存在相关性,越相似的用户之间的连接度越大,基于这样的设计构建出网络,然后进行相似用户的内容推荐。
(4)基于场景
问:为什么会看到这篇文章?
答:这篇文章在这个时间、地点比其它的更好。
基于场景就是根据用户当时的使用场景进行推荐。
基于时间:推荐当前时刻的优质内容;
基于地点:推荐当前所处位置的优质内容;
基于热门:推荐当前平台上表现好的内容。
总而言之,为了能更大限度的提升推荐效果,我们需要更深入更广泛地挖掘用户和内容之间的联系,全方位地提升推荐的效果。
五、打开黑盒,一次推荐请求经历了什么?
接下来我们打开黑盒,深入了解一下用户打开推荐流后都发生了什么?
(1)推荐请求信息-带上用户信息请求推荐服务
请求带上用户设备请求信息:用户ID,地理位置,IP,注册时间,设备信息,版本信息等;
获取用户画像:性别,年龄,喜欢的内容类别,喜欢的关键词,喜欢的作者,用户手机上安装的它app等信息。
(2)召回-根据用户画像和场景从内容库中找到用户可能感兴趣的内容
召回就是上诉的关联用户和内容的方式,目的是去穷尽“用户对内容感兴趣的原因”尽可能广泛地把用户可能感兴趣的内容挖掘出来。
(3)过滤-根据用户的操作历史过滤用户很可能不感兴趣的内容
过滤阶段会过滤用户历史看到过的内容;
过滤掉用户主动做过负反馈的内容;
过滤掉用户看过的相似内容;
(4)预估排序-对召回的内容使用更多维的角度进行排序
简单科普一下排序模型:一个排序模型就是一个方程,我们输入用户和一堆文章,这个方程就会返回基于用户兴趣排序的列表:
模型的训练过程就是我们用很多样本(数据)去告诉算法,什么样的用户喜欢什么样的内容。有了这样的模型之后我们就能预测用户对其它哪些内容感兴趣了。
一个排序模型一般只针对一个指标去优化,一般第一步都是进行点击率的预估:用户最可能点击哪些内容。
其它排序目标:文章前面我们提到了推荐算法的目标,点击率只是其中一部分关键指标,我们还经常关注时长,点赞,评论,阅读完成等其它指标,以求全方位地提升推荐效果。这样基于每个目标我们都会单独计算一个模型,然后把不同目标得到的结果进行加权组合。
[attachimg]7970100[/attachimg
(5)策略重排-对于排序后出现的不理想的情况或者一些强制性需求进行重排
绝大多数的重排规则都会牺牲部分推荐指标而换取其它推荐目标的提升,因为这些规则都打压了高点击高停留的文章,或是强制展现了低点击低停留的文章。部分规则是为了保护作者端的利益,例如文章来源规则;部分规则是为了提高权威度,例如打压低俗等;部分规则是为了提高多样性等次级目标,例如同类内容不连续3个出现、同样排版的内容不同时三个出现,防止刷屏。
加权降权:给一些平台鼓励的内容进行加权,比如排序分数乘以1.3倍,这样这些内容出现的概率高,可以提高平台的权威度也可以跟优质作者更好地合作;反之给一些平台不鼓励的内容进行降权,比如得分乘以0.8,这样这些内容出现的概率就低,也能提高平台的权威度。
窗口限制:限制某类内容出现的频率,比如标题党内容每次10条最多出现3条;比如限制优质内容每5条至少出现1条。这样的策略能提高推荐的权威性和多样性。
固定位置限制:某些内容强制出现在某个位置,或者某些内容要连着出,某些内容要隔着出等等,这类策略能够满足一些政策性需求和一些特殊活动的需求。
最后排序的结果返回给客户端就是我们在手机上看到的结果了。
推荐系统的弊端-加速信息茧房
信息茧房是指人们的信息领域会习惯性地被自己的兴趣所引导,从而将自己的生活桎梏于像蚕茧一般的“茧房”中的现象。简单的说就是用户只能看到自己想看的内容而其它一些重要的内容都被用户忽略了。推荐系统会加重这样的情况,最终大家都会变成每天阅读大量内容,却又无比的孤独和闭塞。
六、非技术人员与推荐系统
在了解了推荐系统的基本工作原理后,我们引申思考一下,作为一个非技术人员,能够怎么提高推荐系统的效果呢?前面说到了推荐系统的9个评价目标,我们分别针对这些目标设定了相应的指标来逼近这些目标,但是很多时候这些指标都是有疏漏的,无法全面地描绘用户体验。因此我们需要去发现推荐系统中的问题,发掘其中的机会。关于运营在推荐系统中的工作可以参考本专辑的另一篇文章:《推荐系统下的运营怎么前进?“爹爹”框架指导方向》
6.1发现问题
让机器自己发现推荐的问题是很难的,需要长期使用,把自己带入到用户的角色,反复琢磨才能挖掘出问题。我们把推荐的9个目标当作发现问题的参考可以得到,常见问题如下:
推荐的不准确,不是用户感兴趣的内容;
内容匮乏,找不到感兴趣的品类里优质的内容;
推荐出来的低俗标题党内容占比偏大;
推荐内容时效性不够强,内容偏旧;
推荐的内容品类过于单一,主题相同,看起来千篇一律;
优质内容得不到有效曝光,内容生态没有建立起来;
推荐算法不能快速地识别用户的兴趣,导致用户流失;
其它。
推荐相关调优后台
推荐系统是一个庞大复杂的系统,难以保证不出现问题,因此也需要对应的后台方便追踪问题,主要涉及的后台如下:
用户相关后台
用户画像后台:展现详尽的用户画像,包含用户信息,标签、权重等,主要看推荐的内容和用户的兴趣是否相符;
用户行为历史:展现用户对内容的展现,点击历史,对应的召回策略。主要对比用户的具体行为和我们推荐的效果;
负反馈后台:主要看用户点过“不喜欢”、“举报”的内容,我们有没有再推荐类似的内容。
内容相关后台
内容画像后台:展现详尽的内容画像,曝光所属的分类,标签权重等,主要看画像的准确性。
内容表现后台:主要查看内容随着时间的点击展现和其它互动的变化;
召回查询:主要看召回策略的合理性;
创作者后台:查看创作者的历史发文表现。
6.2发现机会
不同的场景往往对应不同的推荐目标,因此也需要不同的推荐策略,作为产品运营人员就需要深入发掘这些推荐场景对应的用户需求,然后才能做出更好的推荐效果。常见的场景差异如下:
在信息流的首页用户更希望能看到全面,权威时效性强的内容;
在内容详情页,用户可能更想看到与当前内容相关的内容;
在发现性的入口,用户可能更想看到热门,新鲜的内容;
推荐内容和推荐商品又有区别;
推荐短内容和推荐长内容又有区别;
推荐观看和推荐关注又有区别;
其它。
七、写在最后
本文从推荐系统是什么开始,讲解了为什么做推荐系统?推荐系统的目标是什么?然后怎么搭建一套能够满足目标的推荐系统。最后讨论了非技术人员怎么优化推荐系统。时至今日,推荐系统已经成为内容型产品几乎必备的基础功能,用户预期用内容型的产品就是有个性化推荐,如果没有体验上就会相对竞品差。因此我们必须迎头赶上,然而推荐效果的优化是无止尽的,需要我们不断地努力,添砖加瓦。 |