文章目录

  • 1. 算法解析
  • 2. 基于相似用户做推荐
  • 3. 基于相似歌曲做推荐
  • 4. 总结

音乐App的功能越来越强大,不仅可以自己选歌听,还可以根据你听歌的口味偏好, 给你推荐可能会喜爱的音乐,有时候,推荐的还非常适合你的口味。

1. 算法解析

用两句话总结:

  • 找到跟你口味相似的用户,把他们爱听的歌曲推荐给你
  • 找出跟你喜爱的歌曲特征相似的歌曲,把这些歌曲推荐给你

2. 基于相似用户做推荐

把跟你听类似歌曲的人,看做口味相似的用户。用“1”表示“喜爱”,用“0”笼统地表示“不发表意见”。从图中看出,你and小明共同喜爱的歌曲最多,有5首。可以说,小明跟你的口味非常相似。

遍历所有的用户,对比每个用户跟你共同喜爱的歌曲数,并且设置一个阈值,某用户共同喜爱歌曲数超过这个值,把这个用户看作跟你口味相似,把这个用户喜爱但你还没听过的歌曲,推荐给你。

如何知道用户喜爱哪首歌曲呢?可以通过用户的行为,来定义这个喜爱程度。给每个行为定义一个得分,得分越高表示喜爱程度越高。

刚刚那个例子,把每个人对每首歌曲的喜爱程度表示出来。图中,某个人对某首歌曲是否喜爱,我们不再用“1”或“0”表示,而是对应一个分值。

欧几里得距离(Euclidean distance)是用来计算两个向量之间的距离的。
K维空间中的某个位置,我们可以写作(X1,X2,X3,……Xk)。这种表示方法就是向量(vector)。

把每个用户对所有歌曲喜爱程度,都用一个向量表示。计算出两个向量之间的欧几里得距离,作为两个用户的口味相似程度的度量。

3. 基于相似歌曲做推荐

如果用户是一个新用户,还没有收集到足够多的行为数据,该如何推荐呢?

基于相似歌曲的推荐方法,就是说,如果某首歌曲跟你喜爱的歌曲相似,我们就把它推荐给你。

对歌曲定义一些特征项,比如伤感、愉快、摇滚、民谣,柔和、高亢等等。每个歌曲的每个特征打一个分数,这样每个歌曲就对应一个特征向量。基于这个特征向量,计算歌曲之间的欧几里得距离。欧几里得距离越小,表示两个歌曲的相似程度越大。

上面方案,需要一个前提,找到足够多,并且能够全面代表歌曲特点的特征项,除此之外,还要人工给每首歌标注每个特征项的得分。对于收录了海量歌曲的音乐App来说,这是一个非常大的工程。此外,人工标注有很大的主观性。

换一种思路。对于两首歌,如果喜欢听的人群都是差不多的,那侧面就可以反映出,这两首歌比较相似。如图所示,每个用户对歌曲有不同的喜爱程度,我们依旧通过上一个解决方案中定义得分的标准,来定义喜爱程度。

这个图跟基于相似用户推荐中的图几乎一样。只不过这里把歌曲和用户主次颠倒了一下。

  • 基于相似用户的推荐方法中,针对每个用户,我们将对各个歌曲的喜爱程度作为向量。
  • 基于相似歌曲的推荐思路中,针对每个歌曲,我们将每个用户的打分作为向量。

有了每个歌曲的向量表示,通过计算向量之间的欧几里得距离,来表示歌曲之间的相似度。欧几里得距离越小,两个歌曲越相似。

然后,在用户已经听过的歌曲中,找出他喜爱程度较高的歌曲。然后,找出跟这些歌曲相似度很高的其他歌曲,推荐给他。

4. 总结

上面问题是推荐系统(Recommendation System)里最典型的一类问题。这部分内容,可见算法的强大之处,利用简单的向量空间的欧几里得距离,就能解决如此复杂的问题。

上面只说了基本的理论,实践中遇到的问题还有很多,比如冷启动问题,产品初期积累的数据不多,不足以做推荐等等。这些更加深奥的,在实践中慢慢探索吧。

向量空间 Vector Space -- 推荐系统相关推荐

  1. 向量空间 vector space

    向量空间表示为 R1,R2,R3,R4,...,Rn\bf{R}^1, \bf{R}^2, \bf{R}^3, \bf{R}^4, ..., \bf{R}^nR1,R2,R3,R4,...,Rn . ...

  2. nlp论文——《Efficient Estimation of Word Representations in Vector Space》(向量空间中词表示的有效估计)

    目录 <Efficient Estimation of Word Representations in Vector Space> 第一课时:论文导读 (1)语言模型 (2)词向量简介-- ...

  3. 大数据入门10:向量空间模型(Vector Space Model)

    文章目录 向量空间模型(Vector Space Model) 0. 概述 1. TF(Term frequency ,TF) 2. IDF(Inverse document frequency,ID ...

  4. 向量空间模型算法( Vector Space Model )

    概念介绍 向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功 地应用于文本检索系统. VSM概念简单,把对文本内容的处理简化为向量空间中的向量 ...

  5. 自然语言处理(NLP)-1.3 向量空间模型(Vector Space Models)

    1.向量空间模型(Vector Space Models) 1.1 基本概念 定义:向量空间模型将单词或文本用向量表示,通过上下文来获取其语义信息 功能:识别两文本/两类文档间的相似度和独立性 例: ...

  6. NLP --- 文本分类(向量空间模型(Vector Space Model)VSM)

    本节主要介绍文本分类中的一种算法即向量空间模型,这个算法很经典,包含文本预处理.特征选择.特征权值计算.分类算法.这是VSM的几个主要步骤,在宗老师的书里都有详细的讲解,这里也会进行深入的讲解,浅显易 ...

  7. 数学基础 - 线性空间(Vector Space)

    线性空间(Vector Space) 定义(Definition) 设V是一个非空集合,P是一个域: 加法: ∀α,β∈V ∀ α , β ∈ V \forall \; \alpha,\beta \i ...

  8. 论文翻译解读:Efficient estimation of word representations in vector space【Word2Vec】

    文章目录 简要信息 重点内容概括 Efficient estimation of word representations in vector space 摘要 1 介绍 1.1 论文目标 1.2 以 ...

  9. 【论文解读 ICLR 2020 | Jure Leskovec组】Query2box: Reasoning over KGs in Vector Space using Box Embedding

    论文题目:Query2box: Reasoning over Knowledge Graphs in Vector Space using Box Embeddings 论文来源:ICLR 2020 ...

最新文章

  1. python生成一段时间
  2. vector大小为1,如果直接输出它-2,为何不是-1?
  3. python中表示红色的表达式_python-SymPy中表达式的抽象表示
  4. 2017辽宁冬令营-4.蚂蚁
  5. Redis的安装和部署
  6. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
  7. 关于equals和hashcode方法
  8. linux(CentOS)下安装mongodb
  9. html app从上向下弹框,移动端从底部向上过渡弹出弹框
  10. mysql事件循环执行,Node.js MySQL连接,查询顺序和事件循环
  11. r语言提取列名_玩转数据处理120题之P1-P20(R语言tidyverse版本)
  12. ios项目中使用gcd的场景_iOS中超级超级详细介绍GCD
  13. sql2008 评估期过期解决办法
  14. 零售销售数据分析案例实战
  15. HTTP协议与内容压缩(HTTP协议详解)
  16. cf方框透视易语言代码怎么写_如何用 C++ 写一个可编程软件渲染器?
  17. 简单的方法破解百度网盘上带密码的学习视频资源
  18. POI实现一个通用的Excel读取模板
  19. 用Comparator接口进行排序 --java
  20. Windows系统中文版切换英文版教程

热门文章

  1. 【0802 | Day 7】Python进阶(一)
  2. 51Nod 1530 稳定方块
  3. 上Google Adsense个人的一点体验
  4. bzoj1053: [HAOI2007]反素数ant
  5. PHP上传文件大小限制的问题(转)
  6. CentOS6.0 yum php mcrypt 扩展安装问题
  7. 简单的C语言程序合集
  8. 聊聊身边的嵌入式,英语学习利器点读笔
  9. linux下shell编程课程设计,Linux下shell编程实例
  10. 大数据——sqoop操作mysql和hive导出导入数据