场景
- 分发推歌歌曲
- 分发vip歌曲
- 分发长尾歌曲
架构
歌曲池,歌曲倒排索引,召回,排序,探索,实时监控
召回
协同过滤(itembased)
数据:用户最近180天完整播放且收藏的歌曲 uid: sid1, sid2, sid3
mapreduce 计算歌曲共现数和各个歌曲的总次数
相似度函数: jaccard 相似
输出:歌曲到相似歌曲的映射表
sid1 \t sid2,sid3,sid4
用户画像
首先计算用户画像
输入
- 歌曲类目:风格,语种,城市等级,省份,评论数,发布年代,艺人性别。
- 用户偏好歌曲(收藏或完整播放)
输出:计算用户在不通歌曲类目下的转化情况(不通类目的权重用各类目的方差归一化后)
根据用户画像推荐歌曲
输入:
用户画像
歌曲类目
输出:用户偏好分
基于向量召回
向量获取:word2vec, gcn等
i2i召回:
keys:歌曲,query:用户偏好歌曲(最近收藏或完整播放歌曲)
利用faiss向量引擎进行检索
u2i召回
youtube DNN召回:用户最近播放序列 --> 用户embedding --> softmax 进行分类(几十万label)
DSSM召回:用户embdding塔,歌曲embdding塔 --> cosine loss
如何提高歌曲向量覆盖
CB2CF
歌曲内容特征 --> cf vector cosine loss
音频
歌曲音频特征 --> cf vector cosine loss
排序
LR模型
人工交叉特征
FM模型
二阶自动交叉特征
DIN模型
用户序列attention建模,
LINUCB模型
长尾歌曲探索
偏好因子 + 探索因子