推荐系统是为了解决信息过载问题而产生的,可大幅度提升长尾物品的用户抵达率。这里的音乐推荐系统,可根据用户历史行为信息,为用户个性化推荐音乐。
基于python语言的音乐推荐系统,采用了surprise库、深度学习、spark+mllib等推荐方法。推荐系统由offline+online组成,这里仅展示了离线计算方法。该音乐推荐系统可实现以下推荐策略:
1) 针对用户推荐
每日歌曲推荐(根据口味生成,播放和收藏越多,推荐越准)
2) 针对歌单推荐
根据你喜欢的《XXX》歌单进行推荐
3) 针对歌曲推荐
听某首歌时,找“相似歌曲”
该项目同时也给出了对推荐中的冷启动问题,搭配推荐问题的一些思考。
-
基于surprise的用户协同过滤算法
根据歌单之间的相似度,找到某歌单最相似的前10个歌单
-
歌曲序列建模
歌单类比句子,歌曲类比分好词的句子中的词。然后使用word2vce进行训练,求出歌曲之间的相似度。根据相似度,推荐某首歌的
相似歌曲
-
基于tensorflow实现的SVD模型
无法将全部数据载入模型,所以我们可以采用增量训练的方式,取部分数据进行模型的迭代。这里使用tensorflow实现SVD矩阵分解。
-
基于spark.mllib的ALS模块对用户做个性化推荐
-
冷启动问题(用户听了一首冷门歌或刚发布的歌如何进行
相似歌曲
的推荐呢)1.1) 推荐热门歌曲
1.2) 将歌曲粒度上升到歌手,建立artist2list并用word2vec建模。找到当前歌手的相似歌手,然后推荐相似歌手的热门歌曲。
-
搭配推荐问题
2.1) 将商品粒度上升到分类粒度,然后建立分类序列[上衣, 裤子, 鞋子, ...]然后推荐当前分类的相似分类下的热门商品。
-
用户兴趣预测问题
-
如何对用户做序列建模的推荐?
3.1) 根据用户的收藏、喜欢过的歌,按照时间轴排好,跟定时间衰减因子和歌曲热度因子,然后每首歌可根据song2vec获得一个推荐列表,然后根据推荐列表和衰减因子、热度因子进行加权排序,将topN的歌曲推荐给用户。