当前位置: 首页 > news >正文

网易云音乐为什么这么懂你?

相信大家这几天的朋友圈已经被网易云音乐的年度听歌报告给刷屏了吧!不知道你们2018的年度关键词是什么,我的关键词是“青春”。

 

640?wx_fmt=png

不少人一提到听歌软件第一个想到的就是网易云音乐,肯定是有不少人被这款软件“折服”了的,不仅是因为每次它推荐的歌单几乎次次惊艳,更是因为那一首首动人的音乐下面那一个个更动人的故事… …  

640?wx_fmt=png

那么大家知道网易云音乐每日推荐的歌单是怎么挑选出来的吗?到底是算法还是官方团队与众多音乐达人合作推荐的呢?

  

首先,一个优秀的推荐系统不仅仅是个性化算法这么简单,基础的也好,神奇的也好,一个完整的推荐系统体系就要提及到官方团队推荐、UGC以及热门推荐的协作。

其实不管什么样的推荐算法几乎都是基于一个词——相似度。都需要用户的行为数据,以及歌曲的元数据,比如旋律,Tag等等。实现起来也不算难。在此就不详细介绍。

其实大多数用户一开始听歌肯定会从自己熟悉的歌曲开始,然后一般都会给出非常相关的推荐,比如你听周杰伦的任何歌,那他的其他任何热门歌曲都会成为非常相关。但如果全都给你推荐同一个人的歌曲,那未免有些单调。

640?wx_fmt=png

这个时候就要考虑来做一个多样化过滤了,以限制来自同一个歌手的推荐数量,这样后面更多歌手的就会被推上来。

那现在问题又出来了,假如一个热门歌手,就拿陈奕迅举例。突然出了新专辑,用户们一下子都跑去听新的了,包括周杰伦的粉丝可能也会去凑一下热闹。

那这下用户们看到的推荐里肯定都能看到陈奕迅的歌了,尽管他的歌曲可能和周杰伦的不那么相关。

640?wx_fmt=png

为了解决这个问题,就要在计算相似度的时候把一些过于热门的歌曲给过滤掉,把这些歌曲推后会在一定程度上解决问题。

那说完热门的了,再说说冷门的情况。其实有时候你会发现,某个不知名歌手也会很符合你的胃口,那怎样才能把他的歌曲送到你的推荐里呢?这个时候就可以用归一化(Normalization)技巧进行微调。在此也不做详述。

话说回来,据官方声称推荐算法设定了基于不同用户行为的权重,下载量,收藏,搜索,分享,甚至是点击“不感兴趣”,这些行为都是可以作为推荐参考的。

而除了算法推荐外,人工过滤的作用也是必不可少的,从产品及运营角度确立人工规则,从而筛出不符合条件的选项。有些时候,人工更是能补偿算法的不足。因此除了算法团队,网易云音乐也有编辑团队。

640?wx_fmt=png

他们会在一开始的推荐内容上做一层筛选,找出那些比较优质的内容,其次也会解决算法的一些收敛问题,因为如果纯依靠算法推荐会对一些新内容响应较慢。

最后总结一下就是,协同过滤是基础,但基于内容的复杂算法让网易云音乐更加与众不同,同时人工介入也很重要,一是反馈,二是运营。

相信大家看到这里,对这款软件又有了更进一步的了解了吧?

往期精彩回顾
今天,我23岁了
大数据就业前景分析【附学习资源】
苹果与高通大战,iPhone XS要成绝版?

640?wx_fmt=jpeg

相关文章:

  • 你想去阿里吗?
  • Word 的一些神操作,你都会了吗?
  • 小米为什么要“抛弃”红米?
  • 乐视彻底凉凉了吗?
  • 我就是这样拿到阿里巴巴offer的
  • 多闪:我真没有和微信杠,我只是想“颠覆”微信
  • 出身和运气都好就牛逼了吗?
  • 罗振宇拒发年终奖还发长文,借口十分有趣!
  • 百度又“死”了?
  • 高晓松清华谈5G,这些行业将要被颠覆
  • 最赚钱岗位出炉,AI人才平均月薪3万;上海人才吸引力跌至第四
  • 央视春晚,一副好牌,却被百度打的稀烂!
  • 60 个让程序员崩溃的瞬间,哈哈哈哈哈哈哈哈哈
  • 滴滴亏损100多亿,裁员15%
  • 5个相见恨晚的Linux命令
  • JavaScript 如何正确处理 Unicode 编码问题!
  • eclipse的离线汉化
  • Git的一些常用操作
  • HashMap剖析之内部结构
  • JavaScript创建对象的四种方式
  • JS实现简单的MVC模式开发小游戏
  • KMP算法及优化
  • PHP 小技巧
  • Spring Boot快速入门(一):Hello Spring Boot
  • Spring Cloud Feign的两种使用姿势
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue 动态创建 component
  • Webpack 4 学习01(基础配置)
  • 编写符合Python风格的对象
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 仿天猫超市收藏抛物线动画工具库
  • 使用putty远程连接linux
  • 手机端车牌号码键盘的vue组件
  • 思考 CSS 架构
  • 详解移动APP与web APP的区别
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 在Unity中实现一个简单的消息管理器
  • 责任链模式的两种实现
  • 大数据全解:定义、价值及挑战
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #数学建模# 线性规划问题的Matlab求解
  • $ git push -u origin master 推送到远程库出错
  • (04)odoo视图操作
  • (2)STL算法之元素计数
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)SpringBoot3---尚硅谷总结
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库