推荐系统算法原理:向量空间和欧几里得距离的应用

概述

现在我们使用的一些APP都有智能推荐功能,例如抖音能够根据你的口味推荐符合你口味的短视频,网易云音乐每天会有大约三十首歌曲推荐给你,其中的私人FM功能则可以无限推荐符合你口味的歌曲,各种购物APP中,也会根据你浏览过的商品推荐你可能需要的商品。

那么以上这些精准推荐是如何做到的呢?它底层的算法原理是什么呢?

简单的推荐系统底层的基础原理是线性代数中的向量空间,以及欧几里得距离

向量空间

向量(vector),也被称为欧几里得量、几何向量、矢量等,在二维空间中,可以表示为一个带箭头的线段,箭头表示向量的方向,线段长度表示向量的大小。
在这里插入图片描述
对于空间,我们当前所处的三维空间,数学上称作三维欧几里得空间,这个三维空间中有无数的位置点,这些点之间存在关系,并且可以定义长度,角度等,还能容纳运动。

我们这里所说的向量空间就是指这样的一个空间,向量存在于这个空间中。

欧几里得距离

欧几里得距离指的是在m维空间中两个点之间的距离,例如在二维空间中,点 A(x1,x2) 和点 B(y1,y2) 之间的距离是 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2} (x1x2)2+(y1y2)2

以此类推,在m维空间中点 A(x1,x1…z1) 和点 B(x2,y2…z2) 的距离是: ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + . . . + ( z 1 − z 2 ) 2 \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2 + ... + (z_1-z_2)^2} (x1x2)2+(y1y2)2+...+(z1z2)2

推荐系统算法原理

这里我们来考虑一下如何给一个用户推荐符合他口味的歌曲呢?或者说如何找到一些歌曲可能是该用户喜欢的。

  1. 找到与该用户口味类似的其他用户
  2. 找到该用户喜欢的音乐风格
1.找到相似用户

首先可以遍历所有用户听过的歌,找到和你听的歌重复度最高的那个用户,也就是你跟他听的歌中,重复的是最多的,那么可以认为你俩的口味相似,然后就可以把对方听过而你没听过的歌曲推荐给你了。

在这个思路中,我们只是简单的将一首歌标记为听过没听过,但是却不知道用户最喜欢哪首歌?也就是这个结果还不够精确,如果我们能知道某个用户对一首歌的喜爱程度就好了。

我们可以定义一个给歌曲打分的规则,如图:
在这里插入图片描述

根据规则可以计算出一个用户和对应歌曲的分数:
在这里插入图片描述

现在,有了这些数据,我们可以用向量来表示一个用户的口味:

假设 W1 W2 ... Wn 是指 用户X 对这些歌曲的喜欢程度

vector_X = (W1, W2 ... Wn)

这样,每个用户的口味就可以抽象为多维向量空间中的一个点,然后我们可以通过计算点与点之间的欧几里得距离得到用户之间口味的相似度。即距离越近,越相似。

2.找到相似歌曲

根据查找相似用户的原理,同样可以应用在查找相似歌曲中,可以将歌曲打一些标签或者特征项,比如伤感或者开学,励志,民谣等,然后给每个歌曲每个特征项打一个分,那么我们就可以得到一首歌曲的一个特征项向量

通过计算歌曲之间特征项向量的欧几里得距离,可以得到歌曲之间的相似度。

要实现这个方案,前提是得有足够多的资源并且有足够的特征项,倘若人工进行标注,就不够客观,如此一来,通过计算特征项向量的手段就不可行了。

我们可以换一个角度看,如果对于两首歌,听的人群是都差不多的,那就可以认为这两首歌是相似的。
如下图,从歌曲角度看,可以计算出每个歌曲的一个向量,通过计算不同歌曲间向量的欧几里得距离,就可以得到歌曲之间的相似度。
在这里插入图片描述

最后,从用户的曲库中找到最喜欢的歌曲,根据此方法寻找相似度高的歌曲,再推荐给用户。

总结

通过简单的向量的欧几里得距离可以实现最简单的推荐系统,但是实际开发中会有一系列的问题,比如,产品一开始数据量少不足以做推荐等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值