基于内容的过滤

基于内容的过滤根据用户的先前操作或明确的反馈,使用推荐功能推荐其他与用户喜欢的内容类似的商品。

为了演示基于内容的过滤,我们来手动为 Google Play 商店设计一些功能。下图显示了一个特征矩阵,其中每一行代表一个应用,每一列代表一个特征。功能可能包括类别(例如教育、休闲、健康)、应用的发布商等。为简单起见,假设此特征矩阵是二进制文件:非零值表示应用具有该特征。

您还在同一功能空间中代表用户。部分与用户相关的功能可以由用户明确提供。例如,用户在个人资料中选择了“娱乐应用”。其他功能可能是隐式的,具体取决于它们之前安装的应用。例如,用户安装了 Science R Us 发布的另一款应用。

模型应推荐与此用户相关的商品。为此,您必须先选择相似度指标(例如,点积)。然后,您必须设置系统,以根据此相似度指标为每个候选项目评分。请注意,这些建议是针对具体用户的,因为该模型未使用有关其他用户的任何信息。

矩阵图,显示可能推荐的用户和应用

使用点产品作为相似度衡量指标

考虑用户嵌入 \(x\) 和应用嵌入 \(y\) 都是二元矢量的情况。自\(\langle x, y \rangle = \sum_{i = 1}^d x_i y_i\)起,同时出现在 \(x\) 和 \(y\) 中的功能对总和贡献 1。换句话说, \(\langle x, y \rangle\) 是两个向量中都有效的地图项的数量。然后,高点积表示较为常见的特征,因此相似度较高。

自己尝试一下吧!

计算上述应用问题中每个应用的点积。 然后,使用这些信息回答以下问题:

我们应该推荐哪个应用?
Science R Us 开发的教育应用。
回答正确!此项目的点积为 2,最高。我们的用户非常喜欢科学和教育应用。
Healthcare 创建的健康应用。
此应用的得分为 1。这并不是我们的系统最糟糕的建议,但肯定不是最好的。
TimeWastr 开发的一款休闲应用。
此应用的点积实际上是 0。我们的用户对游戏等休闲应用并不感兴趣。