Skip to content

MrBlueWhale/music-recommender-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

音乐推荐系统

推荐系统是为了解决信息过载问题而产生的,可大幅度提升长尾物品的用户抵达率。这里的音乐推荐系统,可根据用户历史行为信息,为用户个性化推荐音乐。

基于python语言的音乐推荐系统,采用了surprise库、深度学习、spark+mllib等推荐方法。推荐系统由offline+online组成,这里仅展示了离线计算方法。该音乐推荐系统可实现以下推荐策略:

1) 针对用户推荐

每日歌曲推荐(根据口味生成,播放和收藏越多,推荐越准)

2) 针对歌单推荐

根据你喜欢的《XXX》歌单进行推荐

3) 针对歌曲推荐

听某首歌时,找“相似歌曲”

该项目同时也给出了对推荐中的冷启动问题,搭配推荐问题的一些思考。

模型简介

  1. 基于surprise的用户协同过滤算法

    根据歌单之间的相似度,找到某歌单最相似的前10个歌单

  2. 歌曲序列建模

    歌单类比句子,歌曲类比分好词的句子中的词。然后使用word2vce进行训练,求出歌曲之间的相似度。根据相似度,推荐某首歌的相似歌曲

  3. 基于tensorflow实现的SVD模型

    无法将全部数据载入模型,所以我们可以采用增量训练的方式,取部分数据进行模型的迭代。这里使用tensorflow实现SVD矩阵分解。

  4. 基于spark.mllib的ALS模块对用户做个性化推荐

拓展

  1. 冷启动问题(用户听了一首冷门歌或刚发布的歌如何进行相似歌曲的推荐呢)

    1.1) 推荐热门歌曲

    1.2) 将歌曲粒度上升到歌手,建立artist2list并用word2vec建模。找到当前歌手的相似歌手,然后推荐相似歌手的热门歌曲。

  2. 搭配推荐问题

    2.1) 将商品粒度上升到分类粒度,然后建立分类序列[上衣, 裤子, 鞋子, ...]然后推荐当前分类的相似分类下的热门商品。

  3. 用户兴趣预测问题

  • 如何对用户做序列建模的推荐?

    3.1) 根据用户的收藏、喜欢过的歌,按照时间轴排好,跟定时间衰减因子和歌曲热度因子,然后每首歌可根据song2vec获得一个推荐列表,然后根据推荐列表和衰减因子、热度因子进行加权排序,将topN的歌曲推荐给用户。

About

音乐推荐系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published