拆解推荐系统:候选生成、过滤、排序、多样性的分层设计

简介: 推荐系统是端到端流水线,非单一算法:涵盖候选生成、过滤、特征工程、多目标排序、多样性调控与反馈闭环。强调关注点分离,以保障质量、速度与行为可控。动手前须明确定义Item、用户行为及成功指标。

推荐系统不是单一算法而是一条流水线,每个阶段在不同约束下解决不同的问题。多数入门实现把所有事情塞进一步:算相似度。但生产级系统需要做关注点分离,分别管控质量、速度和行为。

本文梳理一条可以实际构建并持续扩展的端到端推荐 Pipeline。

动手写代码前,先回答三个问题:Item是什么(电影、商品、帖子),用户行为是什么(点击、观看、购买),衡量成功的指标是什么(CTR、观看时长、留存率)。

定义不清楚,后续所有优化方向都可能跑偏。

数据层(实际用到的数据)

需要两类数据。Item数据:元数据(类型、标签、描述)、时间戳(发布、更新)、热度指标(浏览量、评分)。用户数据:交互历史(点击、观看、跳过)及对应的时间戳。

最小数据结构如下:

 items = {
    "id": 1,
    "genre": ["action", "sci-fi"],
    "popularity": 0.8,
    "timestamp": 2024
}

user = {
    "history": [1, 5, 9],
    "recent": [5, 9]
 }

候选生成(缩小搜索空间)

对全量数据做排序在工程上不可行,所以第一步是把候选集从数千缩减到几百。

常用手段包括基于内容的过滤、关键词匹配、向量相似度检索:

 candidates=get_similar_items(user["recent"])

要求很简单——快、覆盖广,不要求精确。

过滤层(剔除不合适的选项)

排序之前,先去掉明显不该出现的结果:已经看过的、过时的内容、无效条目。

 candidates = [
     i for i in candidates
     if i not in user["history"]
 ]

单独做好过滤这一步,系统整体质量就能有明显改善。

特征工程(准备信号)

每个候选项需要计算多维信号:相似度分数、热度分数、新鲜度分数、用户偏好匹配度:

 def compute_features(user, item):
     return {
         "similarity": sim(user, item),
         "popularity": item["popularity"],
         "recency": 1 / (current_year - item["timestamp"] + 1)
     }

排序层(核心决策引擎)

多维信号需要组合成一个最终分数:

 score= (
     0.5*similarity+
     0.3*popularity+
     0.2*recency
 )

权重不是固定值。它取决于item目标、用户行为模式以及 A/B 实验的结论,需要持续调整。

多样性注入(避免重复)

跳过这一环节,推荐结果会迅速坍缩到单一类别。

所以可以先选出得分最高的物品,之后每选一个新物品,对其与已选集合的相似度施加惩罚:

 adjusted_score = score - λ * similarity_with_selected

最终选择(Top-N 输出)

选出排序后的前 N 个结果:

 final = sorted(candidates, key=lambda x: x["score"], reverse=True)[:10]

这就是最终呈现给用户的推荐列表。

反馈收集

没有反馈,系统就没有迭代的依据。需要追踪的核心事件:点击、跳过、停留时长。

 feedback = {
     "clicked": [item_id],
     "skipped": [item_id]
 }

更新机制(使系统具备自适应能力)

反馈数据用来调整用户画像和特征权重:

 if item in feedback["clicked"]:
     increase_weight("similarity")

 if item in feedback["skipped"]:
     decrease_weight("similarity")

完整 Pipeline 流程

用户 → 候选生成 → 过滤 → 特征 → 排序 → 多样化 → 输出 → 反馈 → 更新

每个模块相互独立,可以单独替换和优化。

总结

推荐系统的核心不在于找到相似的物品,而在于在约束条件下选出合适的物品。

一个系统如果能做到有效过滤、基于多维信号排序、根据反馈持续调整,它就不再只是一个练手项目——而是一个可以在生产环境中运行的系统。

https://avoid.overfit.cn/post/1b277daf06f54d0590c6618aa04b97c8

目录
相关文章
|
1月前
|
机器学习/深度学习 搜索推荐 数据处理
PAI-Rec推荐开发平台:企业级智能推荐解决方案,驱动业务全域增长
PAI-Rec是阿里云一站式推荐系统平台,集成多路召回、多目标精排(如DBMTL)、GPU加速推理与灵活迭代能力,已助力电商、直播、音视频等多行业提升点击率、转化率与ROI,实现高效、低成本、可自主演进的智能推荐。
345 16
|
2月前
|
机器学习/深度学习 算法 搜索推荐
RouteRAG:用特殊 Token 和强化学习构建可学习的 RAG 检索策略
RouteRAG将多轮RAG建模为序列决策过程,模型自主学习何时检索、搜什么、用哪种模式(段落/图/混合),并通过两阶段GRPO强化学习,兼顾答案准确率与检索效率,在多跳问答上显著提升性能。
183 12
RouteRAG:用特殊 Token 和强化学习构建可学习的 RAG 检索策略
|
1月前
|
弹性计算 人工智能 机器人
阿里云ECS/轻量服务器+本地全平台部署OpenClaw|集成QQ机器人+千问Qwen3.6-Plus+Coding Plan大模型配置保姆级教程
2026年,开源AI自动化框架OpenClaw(曾用名Clawdbot)已成为个人与团队效率提升的核心工具,凭借“行动式AI”能力,可将自然语言指令转化为文件管理、系统控制、数据处理、社交交互等实际任务执行。本文完整覆盖2026年阿里云轻量服务器部署及本地MacOS/Linux/Windows11部署OpenClaw(Clawdbot)步骤流程及阿里云千问Qwen3.6-Plus配置或市场上免费大模型Coding Plan API配置及常见问题解答,同步新增阿里云ECS云服务器专业部署、QQ机器人全流程集成方案,所有操作附可直接复制的代码命令、可视化指引与高频问题排查方案。
413 14
|
1月前
|
人工智能 自然语言处理 索引
从“词元”到“符元”:Token 中文名背后的 AI 底层认知之争
在“Token”被定名为“词元”之后,本文从计算本体、多模态演进与回译一致性等角度指出,该命名存在路径依赖与语义锚定问题。Token本质是跨模态的离散符号单元,而非语言“词”。相比之下,“符元”更能对齐计算本质,具备长期稳定性与认知一致性。
1871 13
|
1月前
|
存储 人工智能 弹性计算
2026年阿里云新用户定义与新人优惠政策全解
阿里云是全球领先的云计算与AI科技公司。本文详解其新用户定义(无付费记录的会员)及2026年新人福利:ECS低至99元/年、轻量服务器38元/年秒杀、160+款产品免费试用,助力个人与企业轻松上云。
415 11
|
20天前
|
人工智能 运维 架构师
我在 AIP 智能体平台踩过的坑,都在这篇企业 AI 落地经验里了
软件架构师罗小东分享企业AI落地实战经验:聚焦AIP智能体平台建设中的真实坑点与解法——涵盖智能体全生命周期管理、多源知识库语义检索、MCP工具集成及多模型中立架构设计,强调“解决问题”而非堆砌功能。(239字)
|
1月前
|
人工智能 NoSQL API
instinct:一个基于置信度的 AI Agent 自学习记忆系统
instinct 是一款开源 AI 编程记忆系统,让 Claude Code、Cursor 等 MCP Agent 具备跨会话自学习能力。通过“观察→重复→成熟→建议”机制,自动累积模式置信度,智能晋升为可建议(mature)或自动执行(rule)的惯例,无需人工维护规则文件。基于 SQLite 与 MCP 标准,支持项目级作用域与自动衰减,真正实现 Agent 的习惯养成。
223 10
instinct:一个基于置信度的 AI Agent 自学习记忆系统
|
1月前
|
人工智能 IDE 编译器
Karpathy的LLM Wiki:一种将RAG从解释器模式升级为编译器模式的架构
Andrej Karpathy提出的LLM Wiki,摒弃传统RAG“每次查询重检索”的模式,转而让大模型将原始资料**编译为结构化、可链接、自更新的Markdown Wiki**,实现知识的持久沉淀与复利增长——Obsidian为IDE,LLM为程序员,Wiki即代码库。
2202 7
Karpathy的LLM Wiki:一种将RAG从解释器模式升级为编译器模式的架构
|
1月前
|
人工智能 测试技术 API
阿里云 MSE AI Registry 公测开启:给你的 AI 资产一个专属的注册中心
AI Registry 公测开启,一文了解产品能力、AgentLoop 集成与 Skill 规划。
285 22
|
1月前
|
弹性计算 人工智能 Linux
阿里云ECS/轻量服务器部署 OpenClaw 图文攻略:Slack集成+千问Qwen3.6-Plus与Coding Plan配置教程
本文完整覆盖2026年**阿里云轻量服务器/ECS云服务器部署OpenClaw、本地MacOS/Linux/Windows11全平台搭建、千问Qwen3.6-Plus付费API与免费Coding Plan双模型配置、Slack全球协作工具集成**四大核心流程,搭配全场景高频问题排查方案,所有命令均为实测可直接复制,无需复杂操作即可完成部署。
506 18

热门文章

最新文章