为了解决基于内容的过滤方面的一些限制 协同过滤使用与用户和 项以提供建议。这样, 获得意外建议;即协同过滤 模型可以根据 相似用户 B。此外,嵌入可以 自动构建,无需手动处理特征。
电影推荐示例
假设有一个影片推荐系统,训练数据包括 其中:
- 每一行代表一位用户。
- 每一列代表一项内容(一部电影)。
有关电影的反馈可分为以下两类:
- 露骨内容 - 用户指明他们对某部电影的赞 以数字评分。
- 隐式 - 如果用户观看电影,系统会推断出 用户感兴趣的内容。
为简单起见,我们假设反馈矩阵是二进制的;也就是 的值为 1 表示对该电影感兴趣。
当用户访问首页时,系统应推荐电影 基于以下两个方面:
- 与用户以前喜欢的电影的相似度
- 同类用户喜欢的电影
为了便于说明,我们来手动设计一些电影特征 如下表所示:
电影 | 评分 | 说明 |
---|---|---|
《黑暗骑士崛起》 | PG-13 | 蝙蝠侠竭尽全力拯救哥谭市免遭核毁灭 黑暗骑士 设在 DC 漫画世界, |
《哈利波特与魔法石》 | PG | 一个孤立男孩发现自己是一名巫师,于是报名加入 霍格沃茨学校 巫术和巫术,他在这里第一次对战 他就是邪恶的伏地魔。 |
《怪物史莱克》 | PG | 一个可爱的食人魔和他的驴友一起发起任务 去营救菲奥娜公主, 被一条龙关押在她的城堡里。 |
《疯狂约会美丽都》 | PG-13 | 职业自行车选手 Champion 遭遇绑架 环法自行车赛 他的祖母和超重狗狗出海拯救他, 三位老年爵士乐歌手的帮助。 |
记忆碎片 | R | 一位记忆丧失症患者急切地寻找解决他妻子谋杀案的问题 将线索纹在身上。 |
一维嵌入
假设我们在 \([-1, 1]\) 中为每个电影分配一个标量,描述 电影是适合儿童(负值)还是成人(正值)。 假设我们还为 \([-1, 1]\) 中的每个用户分配了一个标量,用于描述 用户对儿童电影(近似 -1)或的兴趣 电影(更接近 +1)。电影嵌入和用户 对于我们预计用户能观看的影片, 来点赞。
在下图中,每个勾号都标识出 名用户观看了此视频。第三和第四位用户的偏好 这很好地解释了:第三位用户更喜欢适合儿童的电影 第四个用户更喜欢面向成人的电影。不过,第一个和第二个 用户的而无法通过这一功能很好地解释用户偏好。
2D 嵌入
有一项功能不足以解释所有用户的偏好。为了克服 这个问题,我们来添加第二个特征:每部电影的 卖座电影或艺术电影。我们现在使用第二个特征来表示 具有以下二维嵌入的每部电影:
我们再次将用户放在同一个嵌入空间中,以获得最佳解释 反馈矩阵:对于每一对(用户、项目)对,我们希望 要相近的项嵌入的点积 如果用户观看电影,则为 1,否则为 0。
在此示例中,我们人工设计了嵌入。在实践中, 可以自动学习,这是协同过滤的强大功能。 模型。在接下来的两部分中,我们将讨论用于学习的 以及如何训练这些嵌入。
当模型学习训练时,该方法的协作性质 嵌入。假设影片的嵌入向量是固定的。然后, 模型可以学习嵌入向量,以便用户更好地解释 偏好因此,具有相似偏好的用户嵌入 相距很近同样,如果用户的嵌入是固定的, 那么我们可以学习电影嵌入,以最好地解释反馈矩阵。 因此,类似用户喜欢的电影的嵌入位置在 嵌入空间。