当前位置: 首页 > article >正文

一文看懂推荐系统:召回05:从One-Hot到Embedding,工业界如何为海量ID类特征降维

1. 从One-Hot到Embedding工业界的降维革命第一次接触推荐系统时我被一个简单的问题难住了小红书有几亿用户和笔记每个用户和笔记都有唯一ID这些ID该怎么处理直接存成数字显然不行因为数字本身没有任何语义信息。这个问题困扰了我整整两周直到 mentor 扔给我一份代码看看这个 embedding 层怎么实现的。离散特征处理是推荐系统的基础工程问题。想象你面前有两台机器左边是老式打字机每次只能按一个键one-hot右边是现代键盘支持组合键输入embedding。当你要输入推荐这个词时打字机需要依次按下每个字母键而键盘可以同时按下多个键完成输入。这就是两种编码方式最直观的区别——前者高维稀疏后者低维稠密。在工业级推荐系统中我们常见的离散特征包括用户ID小红书日活用户数千万级别物品ID电商平台SKU通常上亿用户行为序列单个用户可能有上千次点击记录地理位置特征全球数百万个城市/商圈这些特征的共同特点是类别空间极大且新增类别频繁如抖音每天新增百万级视频。传统one-hot编码在面对千万级类别时会生成千万维度的稀疏向量这会导致两个致命问题内存爆炸存储每个用户需要GB级空间和计算灾难向量点乘变成性能瓶颈。2. One-Hot编码简单但昂贵的解决方案2.1 基础原理与实现让我们用Python代码演示最简单的one-hot实现def one_hot_encode(category_id, total_categories): vector [0] * total_categories vector[category_id] 1 return vector # 处理性别特征男1女2 print(one_hot_encode(1, 3)) # 输出[0, 1, 0] print(one_hot_encode(2, 3)) # 输出[0, 0, 1]这个例子暴露了one-hot的核心缺陷维度灾难。假设我们要处理小红书所有笔记ID假设5亿篇每个物品需要用5亿维向量表示。存储这样的矩阵需要5亿维度 × 4字节/float ≈ 2GB/物品而实际推荐系统需要同时处理数千万物品内存需求直接突破PB级别这还没算上用户ID等其他特征。2.2 工程实践中的妥协方案工业界曾尝试过多种优化手段哈希分桶用哈希函数将原始ID映射到较小空间如100万桶bucket_id hash(item_id) % 1_000_000但会导致哈希冲突不同物品被映射到相同向量特征筛选只保留高频ID如Top100万活跃用户 但会损失长尾物品的推荐效果压缩存储使用稀疏矩阵格式CSR/CSCfrom scipy.sparse import csr_matrix row np.array([0, 0, 1]) col np.array([0, 2, 2]) data np.array([1, 1, 1]) csr_matrix((data, (row, col)), shape(2, 3))虽然节省了存储空间但计算复杂度依然很高这些方案就像给自行车装火箭发动机——看似改进实则无法根本解决问题。直到embedding技术成熟工业界才找到真正的解决方案。3. Embedding技术工业界的标准答案3.1 从Word2Vec到Item2Vec2013年Google提出的Word2Vec给了推荐系统重要启发。我们发现物品ID序列与自然语言存在惊人相似性句子我 喜欢 机器学习用户行为序列用户A 点击 物品B 收藏 物品C基于这个洞察阿里率先提出了Item2Vec方案。其核心代码不过十几行from gensim.models import Word2Vec # 用户行为序列样例 user_sessions [ [item1, item2, item3], [item3, item4, item5] ] model Word2Vec(sentencesuser_sessions, vector_size64, window3, min_count1, workers4)但工业级实现需要考虑更多因素热度偏差热门物品会主导训练过程解决方案对高频物品进行降采样model Word2Vec(..., sample1e-5)序列时效性三个月前的点击与昨天点击权重不同解决方案引入时间衰减因子多行为融合点击、收藏、购买应区别对待解决方案行为权重加权3.2 现代Embedding架构当前主流推荐系统采用动态embedding架构其核心组件包括Embedding Table存储所有实体的向量表示# PyTorch实现 self.user_embedding nn.Embedding(num_users, embedding_dim) self.item_embedding nn.Embedding(num_items, embedding_dim)特征交叉层处理多特征交互# 用户ID与物品ID的向量拼接 user_vec self.user_embedding(user_ids) item_vec self.item_embedding(item_ids) concat_vec torch.cat([user_vec, item_vec], dim1)动态更新机制处理新加入物品冷启动物品使用属性特征初始化在线学习实时更新embedding小红书在实际应用中embedding维度通常选择64-256之间。我们做过对比实验维度存储成本离线AUC线上CTR321x0.7122.1%642x0.7282.3%1284x0.7312.35%2568x0.7322.36%最终选择64维作为平衡点因为更高维度带来的收益提升有限但计算成本线性增长。4. 工程实践中的挑战与解决方案4.1 超大规模Embedding存储面对亿级用户和物品单机存储所有embedding不再可能。我们采用分布式方案参数服务器架构将embedding table分片存储在多个PS节点每个worker只拉取需要的embedding切片混合精度训练# 使用FP16节省存储 model.half()可减少50%存储开销增量更新只更新当天活跃用户/物品的embedding通过Bloom Filter快速判断是否需要更新4.2 在线服务性能优化推荐系统要求毫秒级响应我们总结出以下经验层次化缓存L1缓存热点embedding占请求80%L2缓存近期访问embedding全量存储参数服务器批量查询优化# 糟糕实践循环查询 for user_id in user_ids: vec lookup(user_id) # 最佳实践批量查询 batch_vecs batch_lookup(user_ids)量化压缩将FP32转为INT8配合PQProduct Quantization算法可实现4-8倍压缩率4.3 冷启动问题破解新物品没有历史行为无法生成有效embedding。我们采用多阶段方案初期使用内容特征标题、图片CNN特征中期引入图神经网络利用相似物品关系后期积累足够行为后切换纯行为embedding在抖音的实践中这种方案将新物品的7日留存率提升了37%。5. 从理论到实践完整案例解析以电商推荐场景为例完整流程如下特征预处理# 用户特征 user_feats { user_id: 123456, gender: male, age: 25, history: [item1, item2, item3] } # 物品特征 item_feats { item_id: item1, category: electronics, price: 2999 }Embedding层设计class RecModel(nn.Module): def __init__(self): super().__init__() self.user_embed nn.Embedding(100_000_000, 64) self.item_embed nn.Embedding(1_000_000, 64) self.category_embed nn.Embedding(5000, 16) def forward(self, user_id, item_id, category_id): u self.user_embed(user_id) i self.item_embed(item_id) c self.category_embed(category_id) return torch.cat([u, i, c], dim1)训练技巧负采样对百万级物品采样100-500负样本多任务学习同时优化CTR和CVR序列建模使用Transformer捕捉行为序列线上服务# 加载模型 model load_model() # 生成推荐 def recommend(user_id, top_k10): user_vec model.user_embed(user_id) # 近似最近邻搜索 items faiss_search(user_vec, top_k) return items这个方案在京东618大促中推荐GMV提升了21%同时服务延迟控制在50ms以内。关键突破点在于将用户最近10次行为序列的embedding均值作为短期兴趣表征与长期兴趣embedding拼接后输入DNN。

相关文章:

一文看懂推荐系统:召回05:从One-Hot到Embedding,工业界如何为海量ID类特征降维

1. 从One-Hot到Embedding:工业界的降维革命 第一次接触推荐系统时,我被一个简单的问题难住了:小红书有几亿用户和笔记,每个用户和笔记都有唯一ID,这些ID该怎么处理?直接存成数字显然不行,因为数…...

收藏!普通人零基础转行AI,3-5个月实现高薪就业的进阶指南

本文指出AI行业对非计算机专业人才的需求激增,半路转行者因具备行业经验而更具竞争力。文章澄清了转行AI的常见误区,强调“技术懂业务”是关键,并提供了普通人转行AI的3步走策略:选择AI算法、自然语言或应用工程师等低门槛岗位&am…...

VSCode安装clang-format插件及使用

VSCode安装clang-format插件及使用1.clang-format插件安装2.安装真正的格式化工具clang-format3.生成.clang-format配置文件并修改4.修改配置文件4.1全局配置文件修改4.2工作空间配置文件修改5.格式化代码1.clang-format插件安装 插件安装方式分为直接安装和离线安装两种。 直…...

收藏!AI黄金三年,小白也能入局的5大高薪岗位解析

文章分析了AI应用与智能体时代的就业趋势,指出AI正重塑各岗位能力结构并创造新职业。未来三年,企业对AI应用工程师、AIAgent设计师、AI自动化运营、AI产品经理及RAG应用构建等岗位需求激增,这些岗位门槛相对较低但薪资可观。文章强调&#xf…...

【51单片机一个按键切合初始流水灯按一下对半闪烁按一下显示时间】2023-10-16

缘由51单片机按键切换流水灯和时钟_嵌入式-CSDN问答 我想搞一个按键切换在初始状态流水灯按一下到双闪灯再按一下到时钟,可是之中如果用延时函数会导致CPU不能运行很多事情造成卡顿,利用中断的话定时检测的时间又不一样,我试着编译了代码但发…...

从 SU22 到 SU24,权限检查指示符和默认值的装载与落地治理

在 SAP 权限项目里,最容易被低估的一类数据,不是用户主记录,也不是 PFCG 角色本身,而是藏在 SU22 和 SU24 背后的权限检查指示符与授权默认值。很多团队在 DEV 系统里把角色调到绿灯,以为传到 QAS 和 PRD 以后就万事大吉,结果一到回归测试,业务顾问打开 VA01、ME21N、FD…...

从零部署OpenClaw:打造私有AI助手全流程指南

1. 项目概述:从零部署你的专属AI助手 如果你对AI Agent(智能体)感兴趣,想拥有一个能24小时在线、不仅能聊天还能帮你执行任务、操控浏览器、生成图片的私人助手,但又觉得技术门槛太高、无从下手,那么你来对…...

QFN封装芯片手工焊接实战:从焊盘处理到拖焊技巧

1. QFN封装芯片手工焊接前的准备工作 QFN(Quad Flat No-lead)封装芯片因其体积小、散热好、电气性能优异等特点,在现代电子设备中越来越常见。但0.5mm甚至更小的引脚间距,让很多工程师和DIY爱好者在手工焊接时望而却步。其实只要掌…...

别再死记硬背了!用这3个真实网络场景,彻底搞懂华为ACL的配置逻辑

华为ACL实战指南:3个典型场景解锁访问控制精髓 每次看到新手工程师面对ACL配置时一脸茫然的样子,我就想起自己当年在机房通宵排错的经历。访问控制列表(ACL)作为网络安全的"门禁系统",其重要性不言而喻&…...

深入解析BaiduNetdiskPlugin-macOS:逆向工程破解百度网盘速度限制的技术实践

深入解析BaiduNetdiskPlugin-macOS:逆向工程破解百度网盘速度限制的技术实践 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 在macOS平台上…...

私有云时代来临:AI NAS如何重塑你的数字生活?

超越传统存储,打造你的私人云端 在信息爆炸的时代,随着个人存储需求的激增和变化,以及个体对数据隐私和安全性的日益重视,外加AI的技术加持,一种大家也许并不熟知的存储解决方案——NAS迎来了发展机遇。 NAS是Network …...

ESXi 8.0 最低存储要求:8GB 起步,这样装最稳

在部署 VMware ESXi 8.0 虚拟化环境时,存储规划是基础且关键的一步,很多新手常混淆系统引导盘与虚拟机数据盘的要求。核心结论清晰:ESXi 8.0 最低需 8GB SD 卡 / USB 作为引导介质,同时必须搭配独立的数据存储;生产环境…...

macOS百度网盘SVIP破解完整指南:3步实现无限速下载

macOS百度网盘SVIP破解完整指南:3步实现无限速下载 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘的龟速下载而烦恼吗&…...

龙标管官方,凰标护民间:中国文化双轨时代到来@凤凰标志

龙标掌正统 凰标护民间 中国文艺进入「双轨」新时代官方有规制,民间有温度; 一龙定正统,一凰润众生。失衡百年:单轨秩序的盲区 长久以来,中国文艺创作领域存在一处结构性失衡:官方正统民间原创有规制、有标…...

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极指南

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为昂贵的Adobe Creative Cloud订阅费而烦恼吗&#…...

KeyboardChatterBlocker:拯救老旧机械键盘的免费开源防连击工具

KeyboardChatterBlocker:拯救老旧机械键盘的免费开源防连击工具 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否遇到过…...

手把手教你用Intel System Debugger和DCI OOB盒子抓取开机日志(附CSME解码文件获取指南)

硬件调试实战:Intel System Debugger与DCI OOB盒子的替代方案指南 当主板开机卡死在LOGO界面或出现花屏时,传统调试工具链的突然失效往往让工程师陷入困境。我曾亲眼见过一位同事因为误改GDK7开发板的BIOS设置,导致价值上万的DCI-USB3调试线缆…...

革新Mac软件管理体验:Applite智能图形化工具深度解析

革新Mac软件管理体验:Applite智能图形化工具深度解析 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为繁琐的命令行安装而烦恼?是否曾因复杂的Hom…...

小满nestjs(第二十五章 NestJS ORM实战:TypeORM连接MySQL与实体映射)

1. TypeORM连接MySQL的完整配置指南 第一次在NestJS项目中使用TypeORM连接MySQL时,我踩了不少坑。记得当时因为一个简单的端口配置错误,折腾了大半天才成功连接。现在回想起来,其实只要掌握几个关键配置项,整个过程可以非常顺畅。…...

别再手动查字典了!用EggNOG-mapper 5.0一键搞定GO/KEGG/COG注释(附完整流程)

基因功能注释自动化:EggNOG-mapper 5.0实战指南 在基因组学研究中,功能注释是连接序列数据与生物学意义的关键桥梁。传统的手动注释流程往往需要研究人员在多数据库间反复切换,不仅耗时费力,还容易引入人为误差。而EggNOG-mapper…...

照片元数据管理终极指南:3步告别繁琐手动操作

照片元数据管理终极指南:3步告别繁琐手动操作 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾因数百张照片的拍摄时间错误而头痛不已?是否在为大量图片添加版权信息时感到力…...

Linux 设备树深度解析之Amlogic SoC 多媒体

第一部分:Amlogic Canvas —— 视频像素缓冲区元数据中间件1.1 设计精髓分析Amlogic Canvas本质上是一个硬件级别的像素缓冲区描述符池。它存储每个编号对应的宽度、高度、物理地址、包裹模式、块模式(GXBB及之后还支持端序)等元数据。视频解…...

如何用Python操控Photoshop?3步实现自动化图像处理的终极指南

如何用Python操控Photoshop?3步实现自动化图像处理的终极指南 【免费下载链接】photoshop-python-api Python API for Photoshop. 项目地址: https://gitcode.com/gh_mirrors/ph/photoshop-python-api Photoshop Python API是一个革命性的工具,让…...

从图形变换到机器学习:行列式到底在‘衡量’什么?一个直观的几何理解指南

从图形变换到机器学习:行列式到底在‘衡量’什么?一个直观的几何理解指南 想象你手中有一张弹性薄膜,拉伸、旋转或挤压它时,薄膜覆盖的面积会如何变化?这种直观的几何变换背后,隐藏着线性代数中行列式的本质…...

基于LLM的邮件智能体:从语义理解到自动化工作流实战

1. 项目概述:一个能“思考”的邮件智能体 最近在折腾一个挺有意思的开源项目,叫 XueJourney/mail-agent 。简单来说,它不是一个简单的邮件收发工具,而是一个能帮你“思考”和“行动”的邮件智能体。想象一下,你每天被…...

OBS Source Record插件深度解析:5个实战技巧实现多源独立录制

OBS Source Record插件深度解析:5个实战技巧实现多源独立录制 【免费下载链接】obs-source-record 项目地址: https://gitcode.com/gh_mirrors/ob/obs-source-record 你是否曾经在直播或视频制作中,想要单独录制某个摄像头画面、游戏窗口或浏览器…...

FanControl深度解析:完全掌控Windows风扇转速的专业级工具

FanControl深度解析:完全掌控Windows风扇转速的专业级工具 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

5个高效方法:如何用AKShare处理金融数据去重,避免重复数据干扰分析

5个高效方法:如何用AKShare处理金融数据去重,避免重复数据干扰分析 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcod…...

2026年最值得投入的5款AI Agent工具:Gartner认证+生产环境压测数据全公开

更多请点击: https://intelliparadigm.com 第一章:2026年最佳AI Agent工具推荐 2026年,AI Agent 已从概念原型迈入企业级生产部署阶段。开发者不再满足于单任务自动化,而是追求具备长期记忆、跨平台协调与自主目标分解能力的智能…...

[技术解析] 边缘结构模型MSM:破解时依性混杂的因果推断利器

1. 边缘结构模型MSM:因果推断的"时光机" 想象你是一名医生,正在研究某种降压药的长期疗效。患者A连续服药3个月后血压稳定,患者B服药1个月后自行停药导致血压反弹。传统统计方法会简单对比两组结果,但忽略了一个关键问…...