图文推荐系统之数据冷启小结

前言

		问渠哪得清如许,为有源头活水来---朱熹
                                                 数据冷启,即是新闻推荐系统的源头活水。

新闻推荐必须面对的入场问题

  简单讲一下新闻推荐里面不怎么被提到的重要环节:数据冷启。在某些童鞋的认知里,一个新闻推荐系统,最重要并且最出彩的部分肯定是排序模块,推荐就等于Rank;其实不然,一个完备的推荐系统,是包括方方面面的,简单划分模块如下:
【推荐的模块】数据抓取==》数据冷启==》召回==》粗排==》精排==》展示策略

新闻推荐系统不同于商品/广告推荐系统,具有自己的特色。
1)新闻时刻在产生。
每时每刻,新闻都在源源不断地产生的,当你看到这段文字的时候,可能又有个新闻爆出来,或者某个地方发生了一件事情被新闻报道。在商品或者广告推荐系统里,也有新物品或者广告在产生,但是没有新闻流这样频繁和规模庞大。
2)新闻重在新。
  新闻的受众,更乐于接收没看过的新闻,而非已看过的旧闻。在信息熵里面,确定的消息都是没有信息量的,只有未知的才是有信息量的。对用户而言,没看过的才是对他来说有信息量的。如果某条新闻没有很快进入推荐流,则会严重影响用户体验,现在的信息化时代,讲究地是信息的快速传播。
  举个例子,在实际场景中,一条事件新闻发生了,用户或许可以接受1个小时的延迟,但万万是无法接受半天时间的延迟的。如果延迟过长,用户会产生这样的疑问=>为啥我的其他小伙伴们,在另外渠道都已经能看到某个明星出轨的消息了,而我在这款新闻流产品里还没刷到任何相关信息?久而久之,就会吐槽做的什么鸡毛玩意,我要卸掉换个更好的。
3)数据依赖重,入场是关键。
  没有数据,信息流推荐产品玩转不动;没有新的新闻进来,全是旧闻旧颜,看多了腻,最终无内容可推。咋整?新的数据赶紧滴呀,抓紧时间入场,抓紧时间见到用户,在兼顾效率的同时,还要兼顾效果。

总之,数据被抓取到或者以UGC的形式产生,然后,这些规模看着还挺大量的新闻要快速有效地进入整个推荐流。
  于是,怎么入场,就成了整个推荐系统首要解决的问题。解决地漂漂亮亮,数据很快就入场,很快大规模被以更柔和且精准的方式推荐给用户,获得最大的推荐受益和体验。解决地不那么漂亮,数据也能磕磕绊绊地入场,也可以被大规模投放,就是初始几步没走好,后面难免有各种坑等着。
  而数据的入场效率和效果,构成了数据冷启的整个目标,根据不同环境,我们要区分性地对待这一推荐系统必须要解决的问题。

简单粗暴有时更救命止渴

  有时候,系统已经跑起来了,如夸父追日般风驰电掣地向前推进着,整个系统的后续环节都依赖数据,有需要积累行为的,有需要积累特征的,有需要海量数据规模支撑的。数据冷启这个时候压力山大呀!还管啥试投姿势好看呀,先把每天到手的几百万或者几千万的数据,怼到系统里再说。甭管黑猫白猫,能够投放出去数据就是好的冷启姿势。这个时候,投放效果是其次的,投放效率更为重要。简单总结下有用的数据入场姿势。
1)热点运营
  顾名思义,就是人工运营挑选爆点新闻,做专门投放,不管是将爆点置顶还是push。该方法特点,能解决掉最热的爆点新闻,缺点就是可用新闻量太少。
2)全局随机试投
  推荐系统连接了用户和数据,决定了用户接受到什么样的数据,也决定了数据能见到什么样的数据。如果我们什么都不做,直接做随机试投怎么样呢?事实证明,在精细试投不允许的情况下,也是可行的,总不能啥都不干吧。随机试投,听上去好像很弱鸡的样子,也很不高端的样子。让我来给他用数学理论来解释下,大概就高级了哈哈。
  我们在中学数学里,应该就学过蒙特卡洛估值的方法,比如下图,估计1/4圆的面积,或者更复杂图形的面积。背后的思路是:采样越多,越近似最优解。在最近的围棋智能对抗中,AlphaGo就用到了蒙特卡洛搜索法来找最优解,是典型的以蛮力实现智慧的方法。

  思考的角度,决定了如何处理试投的结果。我们如果认为是将数据随机投放到了用户上,则得到了用户的特点分布;如果认为是将用户随机投放到了数据上,则得到了数据的特点分布。现在,通过随机试投,我们对用户的分布和数据的分布都有了。那么就可以挑选出全局较优的数据了,也可以挑选出全局较优的人群了。
3)统计赤膊上阵
  系统有啥统计用户画像之类的东西,借鉴过来搞啊。比如,总得有个基于用户点击历史的关键词之类的用户画像,此时它就成了很好地载体,可以作为连接数据和用户的中间媒介。虽然是个统计的画像,但是不耽误使用哈~最简单的使用方式是,统计每个新闻在每个关键词下面的后验CTR,然后分别取头部,作为每个关键词的候选新闻集;线上每有一个用户来访问时,先获取他的关键词画像,然后根据点击频率来取对应的候选新闻集合。
4)rank的粗糙处理
  在召回的结果中,已经存在了新数据集合,但是Rank模块极有可能不会将这些数据排序到前面。Rank是追求数据指标的,给用户更合适的数据来获得更好的系统指标是Rank的目标;而召回更多的是在不同维度来描述用户,针对性地召回数据。在Rank的目标里,新数据是很吃亏的,完全没有或者只有稀疏且不置信的行为统计,压根搞不过那些已经投放了相当量的数据哇~咋整,懒人有懒招,反正试投要保证一定的投放量,那就直接固定下来,每屏的返回里面必须有一条新数据。
  从上面虽然粗暴但是不失简洁的搞法中,我们可以大体了解到,数据冷启是个全局的任务,不仅仅是有个试投就完事大吉了,而是涉及整个推荐系统的每个环节。哪个环节搞不定,都不会很好地进行到下一步。让我们在这里简单总结下数据冷启,在每个环节都要干的事情。
:冷启涉及的各个环节,及其需要达成的状态】

更漂亮优雅的入场姿势

  生活要有张有弛,不能总是疾风暴雨,对待用户要像春天的清风一样温柔,不能像夏天的烈日般太过热情。要时刻记得,我们是基于用户行为的大数据推荐算法系统,是比用户爹妈还了解他们内心世界的推荐系统,总是能够根据用户的需求,分配给他们最爱的新闻内容。很喜欢一个图,如下,解释了用户和新闻之间的联系纽带。

1)召回
  针对性地召回新数据,是首先要处理好的环节,新数据上的行为毕竟不多,所以只能借助用户的其他信息。
1.1)用户 ⟶ \longrightarrow 数据
  这里,一方面可以挖掘用户的相关信息,另一个就是借助新闻的描述信息。
  根据对URL和不同URL级信息的重视程度,可以将<user, url>分成不同的模型类型。

typeoptimizemeans
⟨ u s e r , u r l ⟩ \langle user, url \rangle user,url a r g m a x θ ∏ P ( V u s e r ⋅ V u r l ) \underset{\theta}{argmax} \prod P(V_{user}·V_{url}) θargmaxP(VuserVurl)单纯使用用户和URL来学习用户间在点击新闻上的关系
⟨ u s e r , m e a n ( t a g s ) ⟩ \langle user, mean(tags) \rangle user,mean(tags) a r g m a x θ ∏ P ( V u s e r ⋅ V t a g s m e a n ) \underset{\theta}{argmax} \prod P(V_{user}·V_{tags}^{mean}) θargmaxP(VuserVtagsmean)URL用标签或者关键词表示,学习用户和标签的关系
⟨ u s e r , u r l + m e a n ( t a g s ) ⟩ \langle user, url + mean(tags) \rangle user,url+mean(tags) a r g m a x θ ∏ P ( V u s e r ⋅ [ V u r l + V t a g s m e a n ] ) \underset{\theta}{argmax} \prod P(V_{user}·[V_{url}+V_{tags}^{mean}]) θargmaxP(Vuser[Vurl+Vtagsmean])同时考虑URL和tag信息,但是tag的总体与URL平级
⟨ u s e r , m e a n ( u r l + t a g s ) ⟩ \langle user, mean(url+tags) \rangle user,mean(url+tags) a r g m a x θ ∏ P ( V u s e r ⋅ [ V u r l + V t a g s ] m e a n ) \underset{\theta}{argmax} \prod P(V_{user}·[V_{url}+V_{tags}]^{mean}) θargmaxP(Vuser[Vurl+Vtags]mean)将每个Tag与URL作为同级处理

  在新数据的召唤逻辑里,d)这种形式是效果较好,并且数据不容易那么集中在头部。
1.2)数据 ⟶ \longrightarrow 数据
  将用户点击过的新闻与当前待试投的新闻联系起来。不管是用纯粹的行为学习到的url-emb,还是word2vec,或者是title2vec,亦或者bert的词向量表示的向量,都可以作为Item-Item相似计算。
1.3)用户 ⟶ \longrightarrow 桥梁 ⟶ \longrightarrow 数据
  甭管啥中间层,只要能借助地,都可以作为中间桥梁,管你是统计的用户点击行为描述,还是隐藏空间表述,还是主题模型的主题,搞起来不要停,简直就是姿势不要太多。
2)RANK
  暂无。有野路子搞,但是会损伤系统指标,哈哈。在这里最大的难点是新数据的行为少,在排序时天然比积累了更多行为的旧数据处于劣势。
3)策略
  并不是排序的顺序,就是展示的顺序,还有各种各样的展示策略。因此,也需要搞个时间策略,使得Rank排序到候选集内的数据,能够在展示时更靠前,而不是由于策略导致新数据压根不往上冒。
单独提一句,监控项目及评估指标的设定很重要。

探索

  +. 在阿里的DIEN模型上作简化,在历史点击上加以Attention。
  +. 对新数据做上采样,也会大大增加新数据召回比例,并且效果奇佳。
  +. 主题模型,对后验统计依赖更重,相比较而言不太适合新数据的投放。
  +. 多目标下的对抗生成式推荐策略,增加时间策略的生成。

后记

此文更侧重术,而非道~所谓数据引入并无定式,大胆探索

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值