让你上瘾的网易云音乐推荐算法,用Word2vec就可以实现
大数据文摘作品
作者:Ramzi Karam
编译:Chloe 朝夕 修竹 Aileen
上个周被网易云音乐的听歌报告刷屏,文摘菌这才发现,朋友圈不乏年度听歌成千上万的音乐重度患者。这群人可能中的不是音乐的毒,而是这套个性化音乐推荐算法真的太懂你。
这也又引起了一波对推荐算法的讨论。本文作者发现了一个有7亿多条歌曲的数据集,利用Word2vec,用这个训练集来训练机器学习模型,优化我们的音乐推荐结果。
中东和北非地区最大的音乐流媒体平台Anghami每个月产生7亿多条歌曲数据流。这也意味着所有这些流媒体产生的大量数据对我们来讲是一个宝贵的训练集,我们可以用这个训练集来训练机器学习模型使其更好地理解用户品味,并优化我们的音乐推荐结果。
在本文中,我们将介绍一个从大量流数据中提取歌曲嵌入信息的神经网络方法,以及如何用这一模型生成相关推荐。
每个点代表一首歌曲。点间距离越近,歌曲越相似
什么是推荐系统?
推荐系统分为两大类:
基于内容的推荐系统:着眼于需要推荐物品的属性。对音乐来说,属性包括歌曲流派、每分钟节拍数等等。
协同过滤系统:依据用户历史数据来推荐其他相似用户曾经接触过的物品。这类系统不关注内容本身的属性,而是基于有很多共同喜爱的歌曲和艺术家的人们通常喜欢相同风格的音乐这一原则进行推荐的。
当有足够多数据支撑时,协同过滤系统在推荐相关物品方面效果非常好。协同过滤的基本思想是,如果用户1喜欢艺术家A和B,用户2喜欢艺术家A、B、C,那么用户1可能也会喜欢艺术家C。
观察所有用户对全球歌曲的偏好,对用户-商品评分矩阵应用经典协同过滤方法(如矩阵分解),就可以得到关于不同歌曲组别是如何相关联的信息。因此如果一组用户拥有很多共同喜欢的歌曲,我们可以推断这些用户音乐品味很相似,并且他们听得每首歌曲之间也很相似。
这种涉及多用户的全球共现现象(global co-occurrence)告诉我们歌曲间是如何联系起来的。然而它没有告诉我们的是,歌曲是如何在时间上局部共存的。它们也许会告诉我们喜欢歌曲A的用户可能也会喜欢歌曲B,但是,这些用户之前有没有在同一个歌单或电台听过这些歌呢?因此查看用户在什么环境播放这些歌比仅仅只查看用户听过哪些歌的推荐效果会更好。换句话说,他们在同一时间段前后还听了什么歌?