本文是一个云村九级用户,根据多年的使用体验,对网易云音乐个性化推荐系统(私人FM,每日歌曲推荐,推荐歌单)运作模式的猜测分析。

很早以前刚开始使用网易云音乐的时候,我就对其个性化推荐系统有过一些猜测,当时以为只是基于协同过滤算法做出的推荐。但是在最近阅读了一本有关数据挖掘的书籍,看到了不少数据分析实例后,我有了一些不一样的看法。先说基础的推荐算法。

1.基础算法

1.1协同过滤算法(Collaborative Filtering)

一个构建个性化推荐系统的经典算法,起源于1992,被Xerox公司用于个性化定制邮件系统。其核心思想十分简洁,分为以下两点。

  • 基于用户的协同过滤

已知用户A喜欢的产品用户B都喜欢,又知道用户A喜欢产品C,推出用户B也喜欢产品C。

  • 基于产品的协同过滤

已知喜欢产品X的用户都喜欢产品Y,又知道用户Z喜欢X,推出用户Z也喜欢产品Y。

以上两种协同过滤的思想都在于通过相似性来过滤产品,完成个性化推荐。网易云音乐属于典型的用户数目多于歌曲数的音乐软件,因此应当使用的是基于用户的协同过滤算法,下面以此为例,分析个性化推荐的可能实现过程。

先对每首歌的喜欢程度进行简单的量化

比如:单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-1 , 不感兴趣=-5 。

根据上面的这些操作,可以得到每个用户对每首歌的打分情况。

这里我们选取一个较为简单的相关度计算公式——余弦相似度,其计算公式为:

这里的AB分别指每个用户给每首歌的打分情况,由此可以知道,AE,BE,CE,DE两两用户之间的相似度(听歌品味的接近程度)。然后将相似度作为权重,求出用户E对《浮夸》这首歌的分数情况。以此类推,我们就可以知道用户E对曲库里所有歌曲的分数,将这些分数进行排名。

实际运用中,相似度太低的用户可以舍去,不计入权重,用户对歌曲分数的缺失值也可以使用平均值来代替,看起来操作并不复杂。但是,如果使用单一的协同过滤算法会产生巨大的缺点,冷启动问题和算法模式中固有的问题:

冷启动问题主要指新入库歌曲,在没有用户的听取记录下,无法进行有效推荐,而如果只依靠单一的资源倾斜如广告位强推发布的新专辑,不仅效率低下,还难以照顾小众音乐爱好者。

算法固有问题主要指较大的计算量(需要为每个用户对曲库的所有歌曲进行排序)以及较稀疏的数据(大部分用户的听歌量都不大)

这里势必要结合另一个推荐算法——因子分析法

1.2因子分析法(Factor Analysis)

目的是将多个变量映射到较少的变量上去,映射函数的依据就是各个变量的相关程度。

这里,我们先对歌曲进行映射,由歌曲的节奏、节拍、速度、力度、旋律、音区、音调、旋律、歌手、发布时间等元数据(metadata),进行因子分析,将相关的多个变量映射为一个变量,这一步需要数据分析师来找出每个因子的实际含义,为每个因子命名,并结合元数据的可信度,异常值和适当的旋转方法。其中后者(被映射的变量)可以用不同的tag表示,例如:伤感,小清新,电音,怀旧等等。

接下来,选择用数字表达对不同歌曲对不同tag的包含程度。比如:《平凡之路》包含伤感的成分是0.5,小清新的成分是0.6,电音的成分是0.6,怀旧的成分是0.3等。

由此将曲库内的所有歌曲分别映射成一个包含不同tag的二维矩阵。

同理,根据不同用户的元数据,将较多的变量映射为同样的tag变量,也一样可以形成个性化的二维矩阵。这里有一点需要注意的是,用户的元数据来源主要应该是其操作行为,依照前文所举例:“单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-1 , 不感兴趣=-5 。”依此对用户的操作行为赋予适当的权值并反映在矩阵中。

利用这两个矩阵,我们就可以知道每个用户对每首歌的具体喜欢程度。举例:

用户A对《平凡之路》的喜欢程度=
用户A对伤感的偏好×《平凡之路》包含伤感的成分
+用户A对小清新的偏好×《平凡之路》包含小清新的成分
+用户A对思念的偏好×《平凡之路》包含伤感的成分
+用户A对怀旧的偏好×《平凡之路》包含伤感的成分
……

很容易看出因子分析法恰当的补足了,协同过滤的新入库歌曲没办法得到有效推荐的问题。这样,协同过滤和因子分析法这两种推荐算法相结合,可以基本解决用户对歌曲评分以及喜好问题。

2.排序

前面的算法排序后得到的只能是初始值,真正在个性化推荐系统中的应该加入不同的变化性,例如;

2.1随机性&归一性

用户在使用的过程中,如果只按初始算法排序,很可能出现推荐榜单某个歌手或者某个类别的歌曲,显然,这种单一类歌曲不是我们想看到的,这里就需要对初始榜单上歌曲的顺序进行调整,这样随机算法是必不可少的。同时,也需要对较为相似的歌曲进行统一归类,根据初始榜单按一定比例重排不同类型的歌曲,完善个性化推荐的多样性。

2.2实时性&新颖性

考虑到听歌品味的改变,用户越早以前对歌曲的有效操作,对其现在的排序影响效果应越小,当然,挑选部分歌曲适时的重新加入推荐系统,引起用户的怀旧感也不失为一个好选择。

再则,保证歌单的按时更新,如每日歌曲推荐榜单,无论前一天是否对其进行过有效操作,第二天也要对推荐结果有所改变。或者如私人FM,也可以根据相应时间穿插符合情景的歌曲。

2.3小众性&兴奋性

回顾网易云音乐的建立过程,其瞄准的目标用户群一开始就是小众音乐爱好者,因此可以过滤部分热门歌曲,对小众音乐参与排序赋予一定的权值加成。

再则,一个好的产品就是应该超出用户期望的,对于歌曲个性推荐的这个过程,我更偏向于:如果猜对了用户会兴奋,猜错了用户也不会太沮丧。大胆的在排行榜单上引入小众音乐,让用户“发现”新歌声,推荐甚至连用户自己没想到过却真正感兴趣的歌曲。

总而言之,推荐算法是基础,后续的排序则是改进,两者结合确定的综合值,才是良好的个性化推荐排名。

3.冷启动问题

3.1新用户的冷启动

  • 基于用户信息的推荐

社交账号的辅助登陆,好友通讯录的导入,个人资料的完善等等操作可以得到一个较为基础的用户画像,进行初步的推荐过程。

  • 尽快让用户表达兴趣

选择自己感兴趣的标签(tag),根据标签属性来推荐。大概来说,满足覆盖口味广、稍微热门的歌曲都可以有效的提高新用户的满意度。

3.2新歌曲的冷启动

  • 归一替换

根据上文的因子分析法,对新入库的歌曲先进行因子分析,然后利用归一性去替代各项成分都接近的旧歌曲,依此进入第一批用户的个性化推荐榜单中。

  • 资源位倾斜

诸如开屏广告位、首页横幅位、新歌速递榜等资源位,都可以有效的增强新歌曲或新专辑的曝光率

4.榜单

一个好的推荐系统,必然是由官方第三方用户自身共同维护参与协作的。

  • 官方构建的各种趋势榜单,分类有按国家,流派,歌手。
  • 第三方机构或者运营者,构建出按品味分类的专业榜单,如“空灵女声”、“极致的电子舞曲”,“适合延时摄影的BGM”等各种推荐。
  • 用户自身则可以点击,收藏,自建榜单。

多样的榜单系统,无论是在开始的冷启动问题上,还是维持用户粘度上,都起到了至关重要的作用。由此,形成了一个以官方个性化推荐系统为主,榜单协作为辅的音乐生态圈。而健康的社区氛围和评论环境,更好的推进了UGC的发展,进入良性循环。

网易云音乐的个性化推荐算法简析相关推荐

  1. 揭秘网易云音乐的个性化推荐算法【黑科技】

    在"精准推荐者得民心"的今天,推荐系统已成为各大互联网公司的标配.但由于现实中很多数据是非欧氏空间生成的(例如,社交网络.信息网络等),一些复杂场景下的业务需求很难通过协同过滤等基 ...

  2. [案例]网易云音乐的个性化推荐

    用过虾米.酷狗.QQ音乐.网易云音乐,个人感受网易云音乐在音乐推荐这块做的真心不错,特别是以"人"为角度的推荐,没有像虾米.酷狗推的那么乱.虾米还可以,但更多的是以歌搜歌的形式.刚 ...

  3. 网易云音乐分析之推荐算法

    本篇文章我们从网易云音乐的推荐功能出发,结合我的实习工作,聊一聊互联网的常用推荐策略. 首先来回顾一下云音乐的推荐功能. 网易云音乐推荐 音乐推荐是创始人丁磊先生愿景最直接的体现,也是网易云音乐的主推 ...

  4. 推荐|网易云音乐分析之推荐算法

    作者:狮子田 全文共 3793 字 9 图,阅读需要 8 分钟 ---- / BEGIN / ---- 本篇文章我们从网易云音乐的推荐功能出发,结合我的实习工作,聊一聊互联网的常用推荐策略. 首先来回 ...

  5. 网易云音乐每日歌曲推荐的原理是什么?

    (路人甲:此篇文章是我同步发在知乎的一篇回答,文章中有链接打不开可以点击阅读原文) 用过网易云音乐的都知道网易云的每日推荐功能,有时候每日推荐真真确确的能推荐给我们很惊喜的歌,那么这么神奇的每日推荐的 ...

  6. 海外 网易云音乐无法正常使用 极简

    参考:https://www.youtube.com/watch?v=1o7RhM_O9-E&t=198s 步骤: 1.下载Google Chrome插件,NetEaseMusicWorld+ ...

  7. 软件的创新:分析网易云音乐的成功创新

    软件界是一个非常活跃的领域,时刻都有新的软件加入或退出.开发一个新的软件,要想使自己的产品与其他产品有所区别,就必须要有创新之处. 为了分析创新对于软件的意义,我分析了一个比较热门的软件,网易云音乐, ...

  8. 从联通沃指数看网易云音乐的流量收割路径

    联通大数据近日发布了10月的沃指数,从活跃用户数和户均月耗流量两个维度对移动应用进行了排行. 与其他数据不同的是,沃指数以中国联通3亿出账用户作为样本数据,能够更直观且准确地反映移动应用的发展情况和竞 ...

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

    "网易云音乐"里有一项类似于淘宝"我的喜好"的"日推"功能,根据你经常听的歌曲类型,每日推送给你类似的音乐,几乎次次惊艳,而且大多都没听过, ...

最新文章

  1. list,set,map,数组间的相互转换
  2. C++友元函数访问私有成员
  3. 如何提升github的clone速度(简单粗暴,亲测有效)
  4. myisam和innodb
  5. 数字图像处理,读懂频域处理的“傅里叶变换”
  6. 以服务器时间为基准显示到某一时间的倒计时
  7. 如何格式化电脑_如何将c盘格式化,垃圾文件太多,不知道怎么办
  8. springboot开启gzip压缩(springboot 1.3以上适用)
  9. js获取前一天/后一天
  10. python调用flask接口实例化_常用业务接口界面化 in python flask
  11. Address already in use: bind 端口被占用的解决办法
  12. 36. Valid Sudoku/37. Sudoku Solver - 数独问题-- backtracking 经典
  13. conda An unexpected error has occurred
  14. LayIM v2.x 正式开源,Web 即时通讯前端解决方案
  15. python随机密码生成代码大全_Python实现随机密码生成器
  16. 虚拟服务器 被劫持,服务器DNS被劫持,服务器dns被劫持怎么解决?
  17. BI可视化分析之Pentaho
  18. 后台怎么接收处理从url 客户端传来的json数据格式
  19. 软考 - 软件设计师 - 下午-案例分析 做题技巧与考点整理
  20. App自动化元素查看工具

热门文章

  1. 计算机专业朋友圈文案,2020毕业朋友圈文案 毕业分别时发朋友圈的句子
  2. php session 编译,编译安装PHP使用session_start()时报错解决办法
  3. html2canvas ios出问题,html2canvas 在 IOS 微信中绘图白屏黑屏问题
  4. c语言大一期中考试含答案,大一C语言期末考试选择复习题.docx
  5. 开心测试卷答案软件六下外研版,外研版(一起)英语六年级下册 Module 4 模块测试卷(含答案).doc...
  6. 条码条形码常用术语及解释
  7. numpy的concatenate()、hstack()、vstack()、stack()函数分析
  8. Java对图片懒加载_[Java教程]JQuery实现图片懒加载_星空网
  9. 论文导读: Stock Movement Prediction from Tweets and Historical Prices
  10. 一段男孩与女孩的对话