机器学习-推荐系统(下)

基于内容的过滤算法:

在之前分析的协同过滤算法中,讨论到如何进行推荐时,分为了两种推荐模式:用户协同与项目协同。在这两种模式中,它们的共同点是都更加关注用户的行为,而并非每一个项目的固有特性。

这样带来的弊端有:对于没有评分或其他信息的项目,我们无法获得相关的用户行为数据,也就无法进行推荐,即冷启动问题;同时,为了保证推荐的可行性,我们需要拥有大量的用户行为数据,即需要拥有足够多的用户行为才能够生成可靠的模式。

因此引入了基于内容的过滤算法,在此算法中,我们会更加关注项目的固有特性,即根据用户与项目的特征信息进行推荐。如果一个用户有一系列的喜欢和感兴趣的项目,则会给该用户推荐与其喜欢和感兴趣的项目相似的其他项目,所以称之为基于内容的过滤。

如上图所示,假设此时已经拥有了部分用户与电影特征数据,分别用和来表示,这两个向量不一定是同维的,为了更加精准的提炼出用户偏好,可能会很大。虽然原始的特征向量也可以反映出特征信息,但这些信息是较为表层的,可能没有考虑不同特征之间的复杂交互关系 以及它们的相对重要性。

综上,我们需要将原始的特征信息输入神经网络进行处理。由于此时的推荐只依赖于用户与电影的特征信息,我们可以将预测评分表示为:

如果输出是二元变量形式,则可以表示为:

因为要进行点积,式中的两个向量必须是同维 的,则可以构建出用户网络与项目网络。需要注意的是:用户网络与项目网络的输出层单元数必须保持一致。

为了得到神经网络中的参数,构建如下成本函数:

因为对于单个用户进行推荐时,考虑的是项目之间的相似性,而通过上图我们可以得到项目i的特征向量,则项目i与项目k之间的相似度可表示为:

由于项目的属性一般是很稳定的,如类别、年份、国家等等,因此对于所涉及的项目,我们可以预先通过项目网络计算得出一系列的特征向量,并且计算出项目之间的相似度,便于后续的推荐。

两种过滤算法比较:

| | 协同过滤 | 基于内容过滤 |
| 核心思想 | 根据用户过去喜欢的项目特征,推荐特征相似的其他项目。 | 找到与用户偏好相似的其他用户,然后推荐这些相似用户喜欢、但目标用户还未接触过的项目。 |
| 优点 | 不需要内容特征,可能可以推荐出新领域项目 | 无冷启动问题,且可解释性强 |

缺点 冷启动问题、要求较多的用户行为数据 较为依赖内容特征、一定程度上可能缺乏多样化

大目录推荐:

大目录推荐中项目数量很多,此时对于每一个用户及每一个项目都进行上图中的计算步骤,在计算上是很难实现的,因此实际的步骤大致分类两步:

检索:

对于一个用户,可能目前已经有了一些用户行为,因此我们可以根据这些行为来提供一个可能的推荐列表。以电影推荐为例,该列表中可能包括:与用户高评分电影相似度较高的其他电影、用户喜欢的电影类别中均分top10电影、用户喜欢的电影导演执导的电影中均分top10电影等等。在这个检索过程中,就会利用到前面提到的项目特征向量以及项目之间的相似度。

此列表中应尽可能地检索出较多的用户可能感兴趣的项目,即使列表中可能包含一些用户无感的内容。

排序:

得到了前面的检索列表后,我们则可以结合用户的特征信息来进一步的对所有项目进行排序,预测其得分,从而实现精准推荐。

该过程中可以直接利用之间计算得到的项目特征,但用户特征不能直接沿用。因为用户的行为是动态的,我们需要捕捉用户实时/近期的行为特征,以保证推荐的有效性。

相关推荐
程序员海军1 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
AIsoft_86891 小时前
人才评估中的关键信息如何沉淀?
人工智能·iphone
紧跟先前的步伐1 小时前
Go AI Agent 实战 06|JSON 结构化输出与 Go 后端校验
人工智能·ai·golang
vibecoding773 小时前
Codex 分层用模型完整教程:让 GPT-6.1 Sol 拍板、GPT-6 Luna 跑侦察
人工智能·gpt
新知图书3 小时前
1.3 启动第一个机器人
人工智能·机器人
明志数科3 小时前
自主探索范式下机器人示教数据的工程定位:少量示范为何对质量更敏感
人工智能·机器学习·机器人
Maynor9963 小时前
WorkBuddy 一键接通 gpt-6.1-sol:MomoAI / TryAllAPI 把最新模型接到桌面
人工智能·gpt·ai·大模型·编程工具
火山引擎开发者社区3 小时前
问得出、搜得准、信得过:ContextSearch 重构销售检索体验
人工智能
Raymond16884 小时前
AI配音工具长文本合成架构技术解析:全局音色锚定与声学状态跟踪
人工智能·架构·实时互动·视觉检测·音视频·语音识别
Codiggerworld4 小时前
从“装一套协议”到“扔进终端”:MCP 与 CLI 的 Agent 工具层之争
人工智能·程序人生·ai编程