数据结构与算法之美
王争
前 Google 工程师
283752 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 81 讲
基础篇 (38讲)
数据结构与算法之美
15
15
1.0x
00:00/00:00
登录|注册

47 | 向量空间:如何实现一个简单的音乐推荐系统?

计算欧几里得距离
量化歌曲特征项
定义歌曲特征项
判断两首歌曲是否相似
欧几里得距离
计算用户之间的相似度
定义口味偏好相似
找到跟你口味偏好相似的用户
算法的强大之处
推荐系统
基于相似歌曲做推荐
基于相似用户做推荐
课后思考
总结引申
算法解析
如何用向量空间实现一个简单的音乐推荐系统?

该思维导图由 AI 生成,仅供参考

很多人都喜爱听歌,以前我们用 MP3 听歌,现在直接通过音乐 App 在线就能听歌。而且,各种音乐 App 的功能越来越强大,不仅可以自己选歌听,还可以根据你听歌的口味偏好,给你推荐可能会喜爱的音乐,而且有时候,推荐的音乐还非常适合你的口味,甚至会惊艳到你!如此智能的一个功能,你知道它是怎么实现的吗?

算法解析

实际上,要解决这个问题,并不需要特别高深的理论。解决思路的核心思想非常简单、直白,用两句话就能总结出来。
找到跟你口味偏好相似的用户,把他们爱听的歌曲推荐给你;
找出跟你喜爱的歌曲特征相似的歌曲,把这些歌曲推荐给你。
接下来,我就分别讲解一下这两种思路的具体实现方法。

1. 基于相似用户做推荐

如何找到跟你口味偏好相似的用户呢?或者说如何定义口味偏好相似呢?实际上,思路也很简单,我们把跟你听类似歌曲的人,看作口味相似的用户。你可以看我下面画的这个图。我用“1”表示“喜爱”,用“0”笼统地表示“不发表意见”。从图中我们可以看出,你跟小明共同喜爱的歌曲最多,有 5 首。于是,我们就可以说,小明跟你的口味非常相似。
我们只需要遍历所有的用户,对比每个用户跟你共同喜爱的歌曲个数,并且设置一个阈值,如果你和某个用户共同喜爱的歌曲个数超过这个阈值,我们就把这个用户看作跟你口味相似的用户,把这个用户喜爱但你还没听过的歌曲,推荐给你。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

音乐推荐系统是音乐App中的重要功能之一,本文介绍了如何利用向量空间实现一个简单的音乐推荐系统。文章首先提出了两种核心思路:基于相似用户和基于相似歌曲的推荐方法。基于相似用户的推荐方法通过计算用户对歌曲的喜爱程度向量的欧几里得距离,找到口味相似的用户,然后推荐这些用户喜爱但当前用户尚未听过的歌曲。而基于相似歌曲的推荐方法则通过计算歌曲特征项向量的欧几里得距离,找到与用户喜爱的歌曲相似的其他歌曲进行推荐。文章还强调了算法的强大之处,利用简单的向量空间的欧几里得距离就能解决复杂的推荐问题。同时,也提到了实践中可能遇到的问题,如冷启动问题和数据积累不足等。总的来说,本文通过简洁清晰的语言,向读者介绍了音乐推荐系统的基本原理和实现方法,为读者提供了对推荐系统的初步了解和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据结构与算法之美》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(71)

  • 最新
  • 精选
  • 刑无刀
    讲得好!对推荐系统感兴趣,可以订阅《推荐系统36式》,哈哈哈哈哈哈哈。

    编辑回复: 给刑无刀老师打call!对这节内容感兴趣可以订阅《推荐系统36式》😄

    2019-02-18
    4
    133
  • 李冲
    快追到课程结束了,从另外一个角度讲一下自己的想法,如有不适还请海涵。 推荐系统加速了系统价值的开发,但领域的价值是有限的,必须不停的挖掘新领域来做大蛋糕。不管是消费用户的钱包,时间,还是情怀,都是有边际效应的。企业前期努力成长,后期做大了在存量市场里为了效益可能会有失偏驳。 话说回来像王争老师这样走心的真少见,为了让用户变得更优秀来做产品值得赞赏。目前我就主动给同事和朋友推荐过王争和丁奇老师的课程,以后看的多了肯定会发现更多值得推荐的老师和课程。 极客时间确实是一股清流,真正有志于而且能够布道的老师可以把自己的理解问题和思考对策的方式授人以渔。希望以后能够碰到更多优秀的老师做出这样的课程,为行业出力。

    作者回复: 感谢认可,今后我还会持续高质量输出,吹个牛逼,希望能为中国的it行业贡献一份力量:)

    2019-09-17
    5
    61
  • 許敲敲
    具体的基于用户相似来推荐的话,如果每个用户喜欢的歌曲数量很大,或者说用户数也很多的情况下,也就是考虑到老师画的表 行列都很多,是不是相当于矩阵的维数很大,这样找到两个向量的距离是有什么trick嘛?或者该用什么算法计算比较好?

    作者回复: 你指出的这点很好,我会晚点再写一下,补充到文章里。

    2019-01-14
    15
    30
  • skull
    老师,看了您的很多算法,我都很喜欢,但是我只是一个java后端研发,感觉学了没有用武之地,但因为已经工作几年了,又不可能再去转做算法工程师,看了喜欢却用不上,这种感觉很扎心啊,有办法让我们这种人把算法使用起来么

    作者回复: 说实话有点难啊,关注我的公号众:小争哥,我抽空写篇文章说说。

    2019-09-29
    10
    6
  • 王楚然
    弱弱的问,向量空间是求相似度的,朴素贝叶斯是分类的,但是分类到一起,是不是可以说相似度高?相似度高的,可不可以归为同一类?这俩方法算是解决同问题的方法吗?如果是有什么对比呢?如果不是为啥不是呢?

    作者回复: 相似度可以归为一类。你如果对这方面感兴趣的话,可以看下机器学习相关的书籍。

    2019-06-21
    3
  • 美美
    同问海量用户,这个向量维度太特么高了,老师有空讲讲么

    作者回复: 课程已经结束了 暂时不会了

    2019-11-17
  • $Jason
    我看到这篇文章还是可以看懂的,但是对于海量的用户,我总不能一个个的计算他们的向量空间吧。那怎么做?

    作者回复: 这个就复杂了 一句两句说不清了 建议看人工智能的书籍

    2019-06-27
  • Geek_a0c415
    老师,后面会讲到向量夹角余弦么?

    作者回复: 不会了

    2019-06-11
  • 王前辈,能不能给讲一下原生的协同过滤算法

    作者回复: 跟我讲的这个差不多吧。

    2019-01-14
  • 李皮皮皮皮皮
    这个计算量估计得用很多机器在特定时间计算吧。比如网易云音乐的每日推荐。那个第二类有个问题,一个人可能喜欢好几种类型的音乐,文中讲得也不是很清楚。

    作者回复: 几种音乐类型?我不是说那种方法不采纳了嘛。你说的不清楚是指哪块呢?如果你想弄清楚,你可以具体说清楚到底哪一个地方没看懂,留言给我,我会回复你的。如果大块不清楚,我还可以重新写下。多谢!

    2019-01-14
收起评论
显示
设置
留言
71
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部