晴天

【算法】网易云音乐日推算法浅析

荒凉一梦 提交于 2019-12-01 13:25:37
“网易云音乐”里有一项类似于淘宝“我的喜好”的“日推”功能,根据你经常听的歌曲类型,每日推送给你类似的音乐,几乎次次惊艳,而且大多都没听过,或者好久以前听过早就忘记了名字,或者之前不知道在哪听过 只是知道其中一部分旋律,根本不知道名字,等等。 参考了在北京实习时一个同事的分享以及在“知乎”上大神们的介绍,本文暂不考虑算法实现,仅仅从算法本身来学习一番,对IT世界里一些脑洞大开的想法做以分享。 如图,是日推算法的两种实现思路: 一、“潜在因子”算法 这种算法是在NetFlix(没错,就是用大数据捧火《纸牌屋》的那家公司)的推荐算法竞赛中获奖的算法,具体用在日推上的套路是这样: 1、思路 每个用户(user)都有自己的偏好,比如A喜欢带有小清新的、吉他伴奏的、李健等 元素 (其实就是标签),如果一首歌(item)带有这些 元素 ,那么就将这首歌推荐给该用户,也就是用元素去连接用户和音乐。 2、实现: 每个人对不同的元素偏好不同,而每首歌包含的元素也不一样。模拟这样两个矩阵: (1)用户-潜在因子矩阵Q: 表示不同的用户对于不用元素的偏好程度,1代表很喜欢,0代表不喜欢。比如下面这样: (2)潜在因子-音乐矩阵P 表示每种音乐含有各种元素的成分,比如下表中,音乐A是一个偏小清新的音乐,含有小清新这个Latent Factor的成分是0.9,重口味的成分是0.1,优雅的成分是0.2……