向量空间 Vector Space -- 推荐系统
文章目录
- 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 -- 推荐系统相关推荐
- 向量空间 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 . ...
- nlp论文——《Efficient Estimation of Word Representations in Vector Space》(向量空间中词表示的有效估计)
目录 <Efficient Estimation of Word Representations in Vector Space> 第一课时:论文导读 (1)语言模型 (2)词向量简介-- ...
- 大数据入门10:向量空间模型(Vector Space Model)
文章目录 向量空间模型(Vector Space Model) 0. 概述 1. TF(Term frequency ,TF) 2. IDF(Inverse document frequency,ID ...
- 向量空间模型算法( Vector Space Model )
概念介绍 向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功 地应用于文本检索系统. VSM概念简单,把对文本内容的处理简化为向量空间中的向量 ...
- 自然语言处理(NLP)-1.3 向量空间模型(Vector Space Models)
1.向量空间模型(Vector Space Models) 1.1 基本概念 定义:向量空间模型将单词或文本用向量表示,通过上下文来获取其语义信息 功能:识别两文本/两类文档间的相似度和独立性 例: ...
- NLP --- 文本分类(向量空间模型(Vector Space Model)VSM)
本节主要介绍文本分类中的一种算法即向量空间模型,这个算法很经典,包含文本预处理.特征选择.特征权值计算.分类算法.这是VSM的几个主要步骤,在宗老师的书里都有详细的讲解,这里也会进行深入的讲解,浅显易 ...
- 数学基础 - 线性空间(Vector Space)
线性空间(Vector Space) 定义(Definition) 设V是一个非空集合,P是一个域: 加法: ∀α,β∈V ∀ α , β ∈ V \forall \; \alpha,\beta \i ...
- 论文翻译解读:Efficient estimation of word representations in vector space【Word2Vec】
文章目录 简要信息 重点内容概括 Efficient estimation of word representations in vector space 摘要 1 介绍 1.1 论文目标 1.2 以 ...
- 【论文解读 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 ...
最新文章
- python生成一段时间
- vector大小为1,如果直接输出它-2,为何不是-1?
- python中表示红色的表达式_python-SymPy中表达式的抽象表示
- 2017辽宁冬令营-4.蚂蚁
- Redis的安装和部署
- 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
- 关于equals和hashcode方法
- linux(CentOS)下安装mongodb
- html app从上向下弹框,移动端从底部向上过渡弹出弹框
- mysql事件循环执行,Node.js MySQL连接,查询顺序和事件循环
- r语言提取列名_玩转数据处理120题之P1-P20(R语言tidyverse版本)
- ios项目中使用gcd的场景_iOS中超级超级详细介绍GCD
- sql2008 评估期过期解决办法
- 零售销售数据分析案例实战
- HTTP协议与内容压缩(HTTP协议详解)
- cf方框透视易语言代码怎么写_如何用 C++ 写一个可编程软件渲染器?
- 简单的方法破解百度网盘上带密码的学习视频资源
- POI实现一个通用的Excel读取模板
- 用Comparator接口进行排序 --java
- Windows系统中文版切换英文版教程