看过视频网站的小伙伴们有好奇过每次打开app出现的内容究竟是怎么来的呢,为啥自己的和别人的会不一样呢,接下来就开始我们的解密之旅。
当我们注册一个网站会员的时候多半会让我们挑选自己感兴趣的频道,这样系统会根据我们的选择为我们推荐相关的内容了。不过不注册会员好像每次也能看见和自己看过内容相关的推送呢,这就是根据观看历史来推荐了,后台根据ip或相关范围也可以推荐到你相关的内容,最明显的例子就是可能在华南地区打开app和在华北地区打开app你看到的内容会有一些差异了。
我们暂且将推荐系统后端分为实时推荐、离线推荐、统计推荐和相似性推荐。
要推荐,首先得有数据才能计算出推荐啥,所以我们可以最起码的有基础的电影信息表,用户评分表和电影标签表。
统计推荐
当新用户进来时,如果没有选择任何喜好可以直接推荐基于统计推荐的。
统计推荐包括历史热门电影统计、近期热门电影统计、电影平均评分统计和各类别TopN统计推荐。这一部分内容直接根据已有数据写计算任务交给ariflow等定时执行即可。
离线推荐
既然收集了用户对电影的评分,那我们就可以用用户评分表来计算用户推荐矩阵了,这里可以用ALS训练推荐模型。然后用模型得到给每个用户推荐哪些电影,得到形式如
| uid | recs |
|---|---|
| 001 | [(mid,score) ( mid, score )…] |
的结果,将其写道DB中,业务服务读取,在这里可以去重,过滤掉用户已经看过的。至于为什么ALS就能训练出来这个结果,可以参看文章最后。
在ALS训练出来的模型,会有一个prodcutfeatures ,将这两个productFeatures做笛卡尔积后两两取预选相似度,然后再
过滤掉不怎么相似的,比如小于0.5的,就可以得到电影的相似度矩阵了。

2211

被折叠的 条评论
为什么被折叠?



