上文主要介绍了deep walk原论文是如何从原始语料获得graph,以及如何从graph,随机游走出item序列。继而通过word2vec或得item 向量。从而完成推荐。
本part主要介绍我在落地到短视频推荐时是如何对deep walk进行改进的,并介绍落地到推荐引擎中的离线在线流程。通过上面的介绍,大家发现了,最初版本的deep walk是没有采用user作为graph中的节点,这样会有两个弊端,一:同样数目的点击序列下,得到的最终的游走序列会少。二:没有经过user的过度,得到的游走序列里所提现的扩展度不足。图2是我对deep walk在短视频推荐中引入用户节点后产出游走序列的过程。图2的第一部分是原始日志抽取的用户点击序列。图2中间部分是得到的graph,除了Aabd到Dcd这几个原始点击序列,还有aAB一直是aC这些序列。是因为补充了任何两个有关系的节点到Graph中。图2的最右边部分是从graph中随机游走得到序列,我抽样了一些展示,能发现是user->item->user->item的形式所以保证item出现在最后游走完成的序列中的频次,假如我们在基础版本中设定了item序列长度是x,此时需要设定为2x。大家也看到了引入user节点后,有两个好处,一。我们可以选择embeding使对user或者不对user embeding,不embeding就在最后得到的序列中去掉user即可,这样我们也有了一个获得user embeding的途径。二。我们通过user节点在中间做桥,大大拓展了之前不太可能出现在一个序列的item。我产生这个idea是借鉴了基于图的推荐personal rank算法的私想。我也写过一篇博客介绍过personal rank算法。引用4。得到游走序列之后过一下word2vec得到embeding。完成推荐。
下面介绍一下。落地过程中,离线在线架构。图3是离线流程,从log中获得用户点击序列,基于用户点击序列,或得Graph,随机游走抽取点击序列,得到item embeding,离线计算出item 相似文件取topk。写入kv。图4是在线使用的架构。召回时基于用户的最近点击,从kv得到item sim。merge到召回队列,然后经过rank,推荐给用户。这里打一个小广告:我利用业余时间在慕课网讲录了几个课:免费课链接:https://www.imooc.com/learn/1029,当然如果您想系统的学习一下个性化推荐算法的召回与排序体系,在慕课网有一个付费课程您可以学习。
下面将展示几个item sim相似度计算结果。看下面第一类的这种情况,从目测感上非常相似,但是其实在这种情况下,很多算法都可以达到这种效果,甚至基于title的相似度外加一下tf idf都可以。所以在成熟系统上新增召回,我们的收益点不来自于这一种。因为之前很多已存在线上的算法已经可以达到这个效果。第二种情况,是社会奇闻类,sim结果也是涵盖了社会,奇闻,电影,世界见闻,但是打开下面的视频,发现不违和。这种情况是给我们在base基础上提供收益的。以为他扩展了item的种类,使得用户不自然的就往更多的领域去拓展。第三种情况,看title好像各不相关,是很多电影,但是其实他们都是一种主题的,就是自媒体解读电影类的。现在解读电影类的自媒体超多,往往昵称是xx说电影,xx撩电影,放着一些舒缓的音乐,自媒体作者将剧情娓娓道来。但是要纯粹从item profile的角度需要视频内容以及音频内容理解可能才能归到一起,这种类型的case,借助隐语义就自然的归到一起。也是我们的收益点。
origin:纪晓岚厉害了,和珅办不成的事,纪晓岚一个烟杆儿轻松解决
sim:(1)皇上跟纪晓岚两人又演双簧,皇上话里有话,文武百官听的心惊胆战 (2)皇上罚纪晓岚种树,由和珅监种,两个男人也能一台戏,太有趣了(3)和珅对纪晓岚说: 你还真不能死,你死了我跟谁斗气,我会寂寞的(4)纪晓岚不上朝被皇上当场抓住,不想老纪一张嘴,又把和珅给坑了(5)纪晓岚在家里骂皇上是昏君,结果皇上刚好从门口进来听到了
origin:爷爷扮女装带2岁孙女乘车,的姐误以为是人贩子报警
sim:(1)13岁男孩被送到一家孤立学校,学校里7个人个个有问题!(2)一部引人深思的婚姻电影,看大龄夫妻如何共度难关,结局意想不到!(3)冬季烧烫伤患者增多 防患于未然是关键(4)四川最宜居的城市,环境优美,第一个你能猜到吗?(5)11月各类自然灾害致全国12万人次受灾损失75.4亿(6)中国游客吓坏了!缅甸姑娘很主动,伸手就要脱男游客的裤子
origin:根据真实案件改编,一部泯灭人性的国产犯罪片,看完愤怒的砸桌子.
(1)一部充满人性的电影,血和泪的教训,介绍男友给闺蜜认识要谨慎(2)三分钟看完《下妻物语》两位特殊少女的故事,带着满脸眼泪看完(3)有部 韩国又出了一部真事改编的犯罪片,这回却是关于我们(4)忍无可忍之下的人性,看过影片,思绪久久不能平复! (5)女孩为给姐姐报仇,不惜牺牲自己接近仇家,协助姐夫让其家破人亡
最后说一下在落地时尝试的一些试验,以及我分析的失败的原因:在落地时,除了上述改进,我也想参考淘宝的s3里说到的利用subword来补充覆盖率,但是我假如了诸如cate,source,tag等sideinfo之后,发现让整个结果非常的趋同于线上的基于category以及基于tag的召回,收益也变得比不加side info还小了。
引用4:基于图的推荐算法之Personal PageRank代码实战。https://www.jianshu.com/p/fe2c05933193
本文为原创文章,如需转发请标明出处。