推荐算法可以通过APP表现进行反推,不会100%准确,但应该也八九不离十。

推荐依据

推荐算法不是无根之水,它必须借助用户的数据才可以进行推荐。即使是冷启动,也需要获得你的微博、微信(你的登录方式)或其他已注册用户的热门喜好。

具体的数据包括:

  • 浏览记录
  • 页面停留时间
  • 歌曲播放次数
  • 点击歌曲但未播放记录
  • 点击歌曲且播放完成记录
  • 歌曲、歌单、歌手的收藏记录
  • 歌单播放次数和歌曲所属标签
  • 个人属性(性别,年龄,地理位置等)

……

这样的数据在算法模型里叫做特征,也就是通过这些历史行为数据中的特征,推荐算法可以进行非常精准的个性化推荐。在几年前,网易云音乐其实还没有那么“神”,很多推荐莫名其妙,但是现在的算法相对来说已经非常精准了。

推荐算法

在说歌单的同时,也会给大家看看网易云音乐这个APP里一共有哪些地方用到了推荐算法:

  • 场景一:开屏广告(按用户画像推荐/全量发布)
  • 场景二:私人FM(实时推荐)
  • 场景三:主页推荐-每日推荐、歌单推荐、电台推荐(搜索召回排序、多因素加权)
  • 场景四:云村推荐-云村广场、好友动态(搜索召回排序、多因素加权)
  • 场景五:视频推荐(根据历史行为精准推荐)

场景一:开屏广告(按用户画像推荐/全量发布)

算法:有时候打开的广告会不一样,有时候会重复。全屏广告费用很高,假如不是独占类型的,那这块用到的可能有一些简单的人群匹配或者用户画像。如果是单次广告独占,则有可能是按照广告商的要求投放。18年之前没有这个广告功能,但是网易要恰饭的,能理解。

场景二:私人FM(实时推荐)

私人FM和电音位于个人主页的头部位置,用户点击率非常高。因为二者本质上很相似,这里只谈FM的算法。

私人FM和单曲、歌单推荐的最大区别是,歌单推荐是一次性生成一个歌曲/歌单列表,但FM只推荐下一首,没有“上一首”功能,这意味着推荐算法会更关注你的瞬时兴趣。因为FM只有喜欢、听完、切歌三种反馈,相对来说比歌单推荐要简单很多,但相对的,信息也少了很多。

可以推算,FM用到的具体方式是由“播放、喜欢、切歌”来判断用户对推荐结果的喜好程度。使用的算法应该是相似性召回和基于用户、基于内容的协同过滤三合一,这一点和单曲推荐很相似,甚至两个功能都使用了用一套推荐算法。

FM有个额外的要求是实时推荐,可以将私人FM理解为一个由动态变化的推荐歌曲组成的歌曲序列,这里面应该使用了深度学习算法中的“下一项推荐”模型来生成,用到的可能有Transformer或GRU/RNN模型。

实时推荐的意思是,上一首是“lemon”,如果你听完了,那么下一首可能会给你推荐米津玄师的另一首歌,或者相似的日文歌。如果我在听小英雄的OP,但没听完就切歌了,那么序列中的下一首本来是冰海战纪的ED,此刻可能就会变为一首英文流行歌。

场景三:主页推荐(这块包含的比较多,最主要的是“推荐歌单”功能)

算法反推:页面可以拆开来看

(1)每日推荐(多因素加权)

这里用到的是单曲推荐,具体算法不难想到,从我的每日推荐歌曲来看,基本是:

  • 我听过的歌手的其他单曲
  • 我听过的歌曲所属分类的其他热门歌曲
  • 我听过、收藏过、评论过的歌曲
  • 听过我听过歌曲的人,听过的其他热门歌曲

每个部分都分配有不同权重,权重高的,推荐的位置(排序机制)就会靠前,权重低的则会靠后。比如我的列表里,蓝莲花排名第一,但是我最近并没有听过蓝莲花,也没听过许巍的歌。但是我听过民谣/摇滚标签类的歌曲,并且很容易猜到,听过这个标签的人,基本都会听蓝莲花(热门)。那么我的列表里,第1项和第4项的权重应该是更高的。

现在的算法几乎都是千人千面,所以每个用户都有自己的个性化匹配机制,也就是张三的权重和李四的权重是不同的,这也反映出一种个人喜好。而相对于FM,这里的推荐更关注用户的长期兴趣。由用户最近一个月、一个周的行为数据构成。

上面这4种只是主要推荐方式,在具体应用时,算法团队会有更多机制来筛选这些歌曲并在列表内排序,提高对新用户、不活跃用户的推荐精度,而这里用到的算法有协同过滤,基于内容召回以及相似性召回等。对算法具体原理感兴趣的可以自行搜索,这里不展开讲。

(2)歌单推荐(搜索召回排序)

点进“歌单”按钮,会跳到一个歌单广场,但是我平时不怎么用,这里和主页推荐歌单放在一起讲,因为两个模块的算法应该是一样的。

推荐歌单是网易云音乐的主要流量通道,95%以上的用户每天打开APP会首先看这些推荐歌单。推荐歌单算法,网易云在全球范围内都属于做的很不错,因为歌单这个东西和歌曲不一样,里面有很多首歌组成,并且每首歌的调性有可能相似,也有可能不同,比传统推荐要更难。B站、Youtube都有类似算法,比如通过用户的收藏夹推荐相似的收藏夹。

歌单有个特点就是UGC(用户生成内容),UGC歌单是实时的,即用户有收听歌曲行为后可实时带来推荐变化,比如刷新一下,会推送不一样的歌单给你。

具体的推荐过程大概如下图,大家只需要知道“召回”和“排序”就行。

  • 召回,是从数以百万计的曲库进行初步筛选,选出几百个相对符合用户口味的候选歌曲;
  • 排序,是把这几百个候选歌曲通过深度学习、因子分解机等算法进行精准的个性化排序。

召回的三种主要方式大概解释一下:

  • 协同过滤,基于用户的行为数据,如听过的歌曲或者个人标签找到相似用户或者相似内容;
  • 基于内容,内容标签化,构建完整的用户画像,然后根据内容相似度进行匹配;
  • 基于热门 ,和你相似品味的用户聚合成一个圈,圈里的人喜欢什么,就推给你什么。

这一块涉及技术太多,感兴趣的同学也可以自行搜索。

(3)电台推荐(搜索召回排序)

电台推荐就是以前的FM频道,现在整合了很多栏目。基本的流程和推荐算法其实和上面的歌单推荐一样,只不过歌单变成了电台,推荐的依据也从歌单里的歌曲、评论、收藏、用户,变成了电台的听众、主播、标签等。

场景四:云村推荐

(1)云村广场(搜索召回排序)

网易云音乐以前总是被人说清高、不接地气、评论太文青。现在这个云村广场(为了回答这个问题,我第一次点进去看),就是云音乐开始接地气的证明。点进去,我以为自己打开了抖音+快手。

这里用到的短视频推荐算法应该和快手、抖音一样,使用短视频的属性、标签和用户的口味、标签做匹配,相似性高的或者比较热门的就进行推荐。具体流程也是先召回再排序,可使用的模型较多,这里不好猜。不过短视频时代,最吸引眼球的就是图里这种内容,比什么算法都好使。

(2)好友动态(时间倒序)

这里的动态推荐算法和朋友圈一样,但是比朋友圈简单,就是按你的关注的人的动态,以时间倒序(最新的排在最前面)进行排序。

场景五:视频推荐(根据历史行为精准推荐)

视频是云音乐后来推出的一大功能,应该也是按照短视频推荐的方法来进行精准推荐,不同点在于这些视频主题更加明确,比如第一个就是华晨宇的采访,直接推送给听过华晨宇歌曲、买过华晨宇专辑的用户即可。

问题分析

用云音乐这么久,有一些问题大家肯定也比较困惑,这里做个简单分析:

问题1:马太效应

19年之前网易云的推荐算法存在一个明显的问题:什么热门推什么

比如下面这个歌单,在我的推荐歌单列表中出现过不下100次,我怀疑给每个听过英文歌的用户都推了这个歌单,在座的如果有人听过,麻烦评论区留个“1”,一起验证一下。

这样的问题在于,越是热门的歌单越容易得到曝光,曝光越多也就越热门,而新歌单就很难得到曝光。这个问题在很多APP上都存在,解决方法也比较成熟。

可以看到,从2019年开始,云音乐的算法团队做了改进,把基于热门的召回降低了权重,所以现在这种现象在逐渐减少。(也不排除是我的听歌口味变了)

问题2:重复推荐

现在很多推荐算法存在一个致命问题,就是重复推荐。在云音乐里,当你听过一些歌曲,就使劲推送相似的歌曲,比如我有一次听了小鳄鱼,之后就使劲给我推儿歌,这很容易引起用户的反感。

这其实是推荐算法中著名的EE(Exploitation,Exploration)问题。EE问题中的Exploitation(开发)就是:对用户比较确定的兴趣,当然要尽可能迎合用户口味,而Exploration(探索)就是:光对着用户已知的兴趣使用,用户很快会腻,所以要不断探索用户新的兴趣才行。

如何解决这个问题,我想云音乐一定使用了BANDIT一类的强化学习方法来优化,下面举个例子帮助大家理解:

一个赌徒,要去摇老虎机,走进赌场一看,一排老虎机,外表一模一样,但是每个老虎机吐钱的概率可不一样,他不知道每个老虎机吐钱的概率分布是什么,那么每次该选择哪个老虎机可以做到最大化收益呢?

最好的办法是去试一试,不是盲目地试,而是有策略地快速试一试,这些策略就是Bandit算法。假设我们已经通过一些数据,得到了当前每个老虎机的吐钱的概率,如果想要获得最大的收益,我们会一直摇哪个吐钱概率最高的老虎机,这就是Exploitation。

但是,当前获得的信息并不是老虎机吐钱的真实概率,可能还有更好的老虎机吐钱概率更高,因此还需要进一步探索,这就是Exploration。

最后,云音乐里很多模块的推荐算法其实都非常相似,但因为具体实施的算法团队不同,细节上肯定有所差异,效果也不会完全一样。对于EE问题的解决,以及如何提高用户粘性,想必算法团队也做了很多尝试,所以才有了这几年界面、体验的不断改善。

「网易云音乐」歌单推荐算法相关推荐

  1. [转知乎]网易云音乐的歌单推荐算法是怎样的?

    转载:http://www.zhihu.com/question/26743347 原因:在喜欢网易云音乐的基础上,觉得这些算法分析很有意思. 一.作者:邰原朗,大型程序猿 得票数第一. 这就是ama ...

  2. 网易云音乐的歌单推荐算法是怎样的?

    http://www.zhihu.com/question/26743347 转载于:https://www.cnblogs.com/lsl8966/p/4381418.html

  3. Flutter实战 | 从 0 搭建「网易云音乐」APP(三、每日推荐、推荐歌单)

    本系列可能会伴随大家很长时间,这里我会从0开始搭建一个「网易云音乐」的APP出来. 下面是该APP 功能的思维导图: 前期回顾: •Flutter实战 | 从 0 搭建「网易云音乐」APP(一.创建项 ...

  4. Flutter实战 | 从 0 搭建「网易云音乐」APP(五、播放功能逻辑)

    本系列可能会伴随大家很长时间,这里我会从0开始搭建一个「网易云音乐」的APP出来. 下面是该APP 功能的思维导图: 前期回顾: 1.Flutter实战 | 从 0 搭建「网易云音乐」APP(一.创建 ...

  5. 网易云音乐导出歌单-速食版

    文 | 轩辕御龙 来源:Python 技术「ID: pythonall」 动机是啥 随着之前版权大战的落幕,网易云音乐坐拥最忠实的一批用户,但是却在版权上缺失了一大块,带给用户很不好的使用体验.于是很 ...

  6. 网易云音乐api歌单数据获取

    网易云音乐api歌单数据获取 网易作为IT大厂,数据可以说 藏的很严实,普通按个f12以为能搞到点东西,结果,看不到要的歌单信息,这可是愁死我了啊. 后来看了看知乎,一帮怪才集中的地方果然迸发了思维的 ...

  7. 如何将网易云音乐的歌单同步到spotify

    为什么要用Spotify? 1.网易云的弊端 1).网易云大量用户涌入,鱼龙混杂,有目共睹. 2).成也评论,败也评论.带上社交属性的音乐还是音乐吗? 3).我不喜欢网易云的一系列行为. 2.Spot ...

  8. Python Scrapy 多线程爬取网易云音乐热门歌单信息(手把手教学)

    下面我将向大家介绍使用 Scrapy 爬虫获取 网易云音乐 的热门歌单信息. 这里是网易云音乐的歌单页面,可以看到歌单信息非常得结构化,是非常适合爬虫来爬取的. URL:全部歌单 - 歌单 - 网易云 ...

  9. python爬取网易云音乐排行榜歌单热评(完整版)

    完整版的爬取网易云音乐的排行榜单,和推荐榜单,热评 直接上代码,代码写的很清楚 为了防止被封我们先做个随机获取User_Agent """随机获取请求头"&qu ...

最新文章

  1. 机器学习中的算法(4.2):SVM----针对线性可分问题理解
  2. 验证和训练loss和acc多种情况分析
  3. 5G UE — UE 的位置信息
  4. 第6章:Kubernetes网络
  5. android 图片缓存工具类,Android工具类系列-Glide图片缓存与圆角
  6. 超全超详细AC-DC电源模块测试教程!
  7. html 脚本 gdi,基于gdi的简单画图
  8. java处理获取到的Elasticsearch数据
  9. 普通索引和唯一索引,应该怎么选择?
  10. 免费下载思科 642-382考试题库
  11. STM32固件库编程入门
  12. VMware Esxi 下载地址
  13. android设置ip地址连接网络打印机,如何使用IP地址的方式连接网络打印机
  14. import * as 用法导入模块变量
  15. execl 多线程 linux,MyExcel 3.7.0 发布,屏蔽多线程处理细节
  16. 裸金属服务器内容讲解以及介绍
  17. Android studio的下载和安装
  18. 为Dynamics 365 USD设置打开调试面板的自定义快捷键
  19. 团队项目用户验收评审
  20. c++语言小游戏源码,跪求小游戏c++代码

热门文章

  1. linux 开头是减号的文件名 如何进行文件操作 删除复制移动
  2. 2022年茶艺师(中级)考试题模拟考试题库及答案
  3. 服务——Service
  4. 布隆过滤器与布谷鸟过滤器
  5. 电脑微信关闭自动保存_微信自动保存图片怎么关闭
  6. 「L2TP」- Layer 2 Tunneling Protocol @20210210
  7. vue+element 获取中文首字母,转换成大写
  8. C/C++ 实验设备管理系统
  9. 属性的遍历:for...in 循环
  10. c++类与对象(一)