美文网首页
具体算法5 - 基于向量的推荐系统

具体算法5 - 基于向量的推荐系统

作者: 天命_风流 | 来源:发表于2020-04-16 17:28 被阅读0次

本章关键词

向量、线性代数、高数、推荐系统

上一节我们学习了基于概率论和统计对一事物进行度量。这一节,我们学习使用向量来代表是一个事物的属性,并用数学方法判断两个事物的关联关系,从而实现同类别的信息推荐。

问题解析

音乐软件的推荐功能,尤其是云村的每日推荐的歌曲很可能会惊艳到你。那么,你知道如何实现音乐软件的推荐功能吗?今天我们就来了解其底层原理。

实现音乐推荐,有两个思路可以供你选择:

  • 找到和你音乐偏好相同的人,将他们喜欢的歌曲推荐给你
  • 找到和你喜欢的歌曲相近的音乐,将这些歌曲推荐给你

那么,如何度量一个人的音乐偏好呢?如何度量两个音乐的相近程度呢?

我们之前使用编辑距离度量了两个文本之间的距离,而对于音乐,我们可以使用向量这一数学概念描述一首歌曲。

算法解析

根据有相同偏好的用户推荐歌曲

我们可以使用向量描述用户的音乐偏好

1.向量维度

数学概念上的“维度”你一定知道,当数据是一维的,我们只需要用数轴(一个变量)就可以描述它;当数据是二维时,就需要用一个平面坐标系(两个变量)描述。以此类推,当数据为 K 维的时候,我们就要用 K 个变量描述它。

我们可以将一首歌曲当做一个维度,将一个人的音乐偏好转换为一个向量,首先,看下面的表格: 用户维度.jpg

在表中,我们使用 0 和 1 笼统地表示一个人对歌曲的评价(稍后会做细化),使用 10 首歌作为描述偏好的维度,所以对于一个用户来说,描述它的向量(我称之为用户向量)是 10维 的。

2.衡量用户偏好
如果只用 0 和 1 描述用户对某一首歌的偏好未免太粗糙,这里使用更加细化的规则表示偏好: 喜爱程度.jpg 于是之前的表格就变成: 用户向量.jpg

这样,我们就可以比较精确地描述一个人的音乐偏好了。以“你”为例,你的音乐偏好就是(5,3,3,0,-1,2,5,4,1,-1),如果你有神奇的脑袋,你可以想象它在 10维 空间下的样子。

3.计算用户之间的偏好差距

通过之前的工作,我们已经将一个用户的音乐偏好转化成了一个向量。计算两个用户之间的喜好差距,就可以通过计算两个向量之间的“差距”完成。

这里有两种思路:用余弦函数计算两个向量之间的夹角计算两个向量之间的欧几里得距离,这两个结果都可以表示两个用户之间的偏好差距,这里我们选择后者。

欧几里得距离的计算公式如下: 欧几里得距离计算.jpg 通过计算,可以得到你和其它用户之间的欧几里得距离: 度量用户的相似程度.jpg

通过比较发现,小明和你的欧几里得距离最小,可以判断,小明和你的音乐偏好最相似

这样,我们就就有理由将小明喜欢的音乐推荐给你了。

寻找相似歌曲做推荐

在这里,我们可以用向量描述一首歌曲被不同用户的喜爱程度

依然以开始的数据为例,我们将根据下面的表格为歌曲构造向量: 歌曲向量.jpg

你会发现,我们推荐的思路几乎和上一个例子用的思路一样,所以我就不再解释了。

总结

  • 我们可以使用一个向量描述一个个体在高维度下的状态
  • 可以通过计算向量之间的距离量化度量两个个体之间的差距
  • 当数据过多的时候,我们可以通过降维减少计算
  • 降维有很多讲究,你可以:合并趋同的个体;保留差距最大的维度(最正交的维度) 等
  • 可以用向量实现推荐系统,为了实现精准推荐,我们可以使用欧几里得距离计算差异
  • 可以用向量实现分类,为了划分行业,我们也可以使用余弦公式计算向量之间的夹角

以上就是全部内容,希望你能够有所启发

注:本文章的主要内容来自我对极客时间app的《数据结构与算法之美》专栏的总结,我使用了大量的原文、代码和截图,如果想要了解具体内容,可以前往极客时间

相关文章

网友评论

      本文标题:具体算法5 - 基于向量的推荐系统

      本文链接:https://www.haomeiwen.com/subject/whfdvhtx.html