今天看了一个Recsys2015讲交互式RS的slide,感觉我们可以借鉴。所以又看了两篇Spotify RS的文章,与slide的内容一起整理如下。
一、产品形态
首先用户通过一位艺术家、专辑、歌曲、播放列表或是风格流派开启一个radio。
接着用户通过thumbs表达自己对歌曲的偏好,同时也是在tune推荐系统。推荐系统会根据thumbs的正负反馈,实时调整推荐结果。
二、整体数据流
Step1:训练各种推荐模型
歌曲和电影的区别:
- 数量级:电影6w;歌曲2000w。
- 歌曲可以被同一用户重复消费。
- song is more niche.
Implicit Matrix Factorization
- 把所有(user, track)数据组成一个矩阵。
- 目标:最小化两个小矩阵内积与binary偏好矩阵的带权RMSE。权重由一个包含了播放行为、上下文和新颖度的函数给出。
其中如果用户u对歌曲i有行为则p_ui=1,否则p_ui=0。
c_ui=1+alpha * r_ui
或者
- 目标:假设用户播放一个歌曲的概率是logistic,然后最大化偏好矩阵的log likelihood。其中同样要对正反馈加权。
通常用ALS来求解。得到两个小矩阵a、b后,用户u对歌曲i的偏好就是:
歌曲i与歌曲j的相似度为:
Spotiy开源了找近似最近邻的工具:https://github.com/spotify/annoy
NLP models on News, Blogs, and Text
Distributed Representations of Words and Phrases and their Compositionality: http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
Deep Learning on Audio
协同过滤模型会把用户和歌曲分别映射到低维的隐空间里。歌曲在隐空间中的位置,相当于反应收听偏好的各种信息的编码。如果两个歌曲在隐空间中距离较近,说明它们可能比较相似。如果一个歌曲与用户的距离较近,它可能就是这个用户的一个好的推荐结果。如果我们能预测一个歌曲在隐空间中的位置,就可以把他推荐给合适的用户,并且不需要它的历史行为数据。
这里是用了CNN把音频信号回归到CF的隐向量。和做图片预测有很多不一样的地方,具体见这个博客:http://benanne.github.io/2014/08/05/spotify-cnns.html
Step2:用thumbs数据组合多种模型
Step3:自适应个性化
给定用户u, Station S,在t时刻选择歌曲i的概率:
其中,
rank(i, S)是歌曲库中的全局排序,
rel(u, i)是根据CF向量得到的用户商品相关性
thumb(u, i)是根据thumb得到的用户商品相关性
div(u, i, t)表示session中艺术家与专辑的多样性
Step4:把thumbs反馈引入组合模型
三、见解
用户角度
- 交互式RS在产品中的布局很重要
- 要把浏览和搜索行为自然的过渡到交互行为
- 交互式RS要尽可能做到轻量级
- 用户偏爱lean-back的体验
- 交互意味着要尽快帮用户找到最优item
- 推荐解释可以建立信任和透明性
- 选择
- 多少输入合适
- 多少返回结果合适
算法角度
- 在交互系统的不同阶段需要平衡流行性,相关性和多样性。
- 实时打分 vs 离线推荐结果计算
引用
InteractiveRecommender Systems, Recsys2015
Hu Y. & Koren Y. & Volinsky C. (2008) Collaborative Filtering for Implicit Feedback Datasets 8th IEEE International Conference on Data Mining
Johnson C. (2014) Logistic Matrix Factorization for Implicit Feedback Data NIPS Workshop on Distributed Matrix Computations