推荐算法--特征工程
互联网大厂推荐算法实战学习总结——特征工程篇初学者完整版本内容是我学习互联网大厂推荐算法实战的个人总结作为零基础入门者刚接触推荐系统时很容易被各类概念绕晕其实学习要抓核心逻辑先理清推荐系统整体链路再深耕最关键的核心环节——特征工程。特征工程是连接原始数据和模型的桥梁也是决定推荐效果上限的关键下面从基础概念、特征分类、处理方法到实战避坑逐一梳理清楚全程用通俗语言讲解不堆砌复杂公式。0. 推荐系统整体核心链路先明确整体流程才能精准定位特征工程的位置避免学知识点却不知道用在何处用户/物料行为日志采集 → 特征工程预处理与加工 → 模型训练与在线推理 → 召回粗排精排推荐 → 用户行为反馈点击/点赞/收藏回流 → 特征与模型迭代优化。整个链路里数据和特征决定推荐上限模型只是逼近这个上限这也是特征工程被大厂格外重视的原因。1. 特征基础概念与核心术语特征工程的核心任务是把推荐系统里的用户、物料、上下文三类信息转化为模型能接收、能学习的规范输入。先搞懂最基础的概念避免后续混淆什么是特征简单说就是描述一个对象的各类属性标签。比如用户的性别、年龄、兴趣偏好视频的时长、标题、品类甚至用户刷视频的时段、使用的手机型号都属于特征。特征形式五花八门可能是离散字符男/女、华为/小米、连续数值身高、播放量、点赞数也可能是文本内容视频标题、帖子文案必须统一加工后才能喂给模型。核心术语区分Field特征域一类特征的集合也叫特征字段是特征的上层归类。比如“手机品牌”是一个特征域“用户年龄”是一个特征域“视频品类”也是一个特征域Feature特征值特征域下的具体取值比如“手机品牌”这个特征域下苹果、华为、小米就是具体特征值“年龄”域下18-25岁、26-35岁就是具体特征值。1.1 推荐系统三大类常用特征很多初学者只知道用户和物料特征其实完整的推荐特征包含三类缺一不可各类特征又分为静态和动态区分逻辑也有实战意义不是单纯做概念划分。1.1.1 物料特征物品画像物料就是平台推荐的内容载体抖音视频、小红书帖子、电商商品、新闻资讯、音乐歌曲都算物料物料特征就是用来精准描述物料本身的属性核心是给物料打标签、做画像。其中物料ID是最核心的物料特征几乎所有推荐模型都会用到是区分物料的唯一标识。静态特征长期固定、几乎不随时间和环境变化的特征无需频繁更新离线预计算即可。比如视频时长、发布作者、品类标签、商品价格、歌曲曲风动态特征实时变化、随用户行为和时间更新的特征需要定时刷新。比如视频播放量、点赞数、评论数、完播率、商品销量、近期热度。区分意义静态特征缓存复用、节省算力动态特征实时更新保证推荐时效性工程架构上会分开存储和更新提升效率。1.1.2 用户特征用户画像用户即平台使用者用户特征用来刻画用户的基本属性和行为偏好是实现“千人千面”推荐的核心。静态特征短时间内不会改变或变化极小的特征离线统计即可。比如性别、户籍、职业、学历年龄虽会逐年增长但短时间内不影响推荐逻辑也归为静态动态特征实时变化的用户行为特征反映当下兴趣需要在线/近线更新。比如用户近期点赞、收藏、搜索、观看的视频品类停留时长、点击频率甚至短期兴趣突变比如突然搜索斯诺克教程。1.1.3 上下文特征易遗漏的关键项初学者容易忽略这类特征它是用户和物料之外的环境辅助特征能大幅提升推荐精准度也和后续偏差处理强相关。比如用户使用APP的时段早中晚、深夜、使用场景通勤、居家、办公、手机型号、网络环境WiFi/移动数据、展示页面、推荐位置都属于上下文特征。1.1.4 交叉特征单一特征表达能力有限交叉特征就是把两个及以上不同特征域的特征组合挖掘隐藏关联是提升模型效果的常用手段。组合方式很多比如直接拼接、笛卡尔积、内积举个例子男性武汉理工、深夜美食视频、学生群体低价商品都是交叉特征。这里重点讲推荐里的内积计算和数学标准内积略有区别核心是只计算共同维度的乘积和非共同维度直接忽略像“合并同类项”。比如用户向量a:0.8b:0.4c:0.6d:-0.3、物料向量a:1c:0.5e:0.8内积0.8×1 0.6×0.51.1这个数值代表用户和物料的匹配度分数越高越契合。1.1.5 偏差特征偏差特征是导致推荐结果失真的干扰因素不是用户真实兴趣的体现必须单独处理。最常见的就是展示位置偏差比如一次推荐10条帖子屏幕只显示前4条排在后面的优质内容用户没刷到就无法产生行为模型容易误判为用户不喜欢除此之外还有流行度偏差热门内容自带流量并非用户专属喜欢、时间偏差、曝光频次偏差等。这类偏差会直接让模型学到错误规律后续必须通过专门方法消除。2. 特征处理全流程实战核心搞懂特征分类后核心就是如何处理原始特征把杂乱数据变成模型输入。完整的特征处理不是一步到位而是先确定处理时机再按特征类型分步加工最后做优化校验。2.1 特征处理的时机线上还是线下理论上实时处理最好能立刻捕捉用户行为变化做到即时推荐但实时计算量极大大厂也不会全量实时处理实战中采用离线为主、在线为辅的方案离线处理静态特征、历史统计类特征提前批量计算好缓存备用节省算力在线处理实时动态特征、短期行为特征少量在线计算保证时效性近线处理介于两者之间定时更新比如每分钟/每小时平衡效率和效果。2.2 离散字符型特征处理分类特征如性别、品牌、品类这类特征是文本形式模型无法直接识别必须转成数字或向量常用方法有四种各有优劣2.2.1 简单数值映射适合类别极少的特征比如性别男→1女→0操作简单但类别多了不适用会让模型误以为数字大小有优先级比如把品牌映射为1、2、3模型会错认321只适合二分类特征。2.2.2 One-Hot编码独热编码适合类别适中的特征构建一个向量对应特征位置设为1其余为0。比如手机品牌华为、苹果、小米华为[1,0,0]、苹果[0,1,0]、小米[0,0,1]。缺点很明显类别一多就会变成高维稀疏向量占用大量内存训练效率极低不适合物料ID、用户ID这类超大类别特征。2.2.3 映射表Embedding工业界最常用解决高维稀疏问题的核心方法分两步先给每个特征值分配唯一ID再构建Embedding矩阵每个ID对应一个固定维度的稠密向量模型直接读取向量作为输入。举例特征域为兴趣品类映射表美食→0旅行→1游戏→2电影→3Embedding矩阵行0对应美食[0.1,0.3]行1对应旅行[0.5,0.2]输入“美食”直接取出对应向量即可每个特征独享专属向量无冲突、表达力强。2.2.4 特征哈希Hashing Trick适合超大规模特征比如亿级用户ID、千万级物料ID无需提前建映射表通过哈希函数计算特征值再对固定桶数取余直接映射到对应桶每个桶共用一个Embedding向量。举例固定4个桶hash(美食)%40→桶0hash(旅行)%41→桶1hash(电影)%41→桶1旅行和电影共用桶1的向量。核心特点节省内存、无需预定义特征但会出现哈希冲突实战中通过增大桶数降低冲突概率是空间换效率的方案。2.2.5 深度文本处理针对长文本特征视频标题、帖子内容、商品详情用预训练模型如BERT、Word2Vec提取文本语义向量转化为稠密特征避免人工标注的繁琐捕捉深层文本信息。2.3 连续数值型特征处理如年龄、播放量、价格这类特征是数值形式但存在缺失值、数值尺度悬殊、分布不均等问题需分步处理2.3.1 缺失值处理原始数据常存在缺失比如用户不填年龄、商品无销量常用处理方式用全局均值/中位数填充、用同群体统计值填充比如同龄用户均值也可单独将“缺失”作为一类特征避免直接删除数据导致信息丢失。2.3.2 标准化/归一化统一尺度解决数值量级悬殊问题比如普通用户收藏数1800重度用户180000数值差距太大会让模型偏向大数值特征。常用Z-score标准化压缩为均值0、方差1、Min-Max归一化压缩到0-1之间让所有连续特征处于同一数值范围保证模型训练稳定。2.3.3 数据平滑解决小样本统计失真针对统计类特征点击率、点赞率小样本下结果极不可靠比如1次播放、1次点赞点赞率100%不能判定为优质内容。核心用威尔逊区间平滑核心思想不用原始统计值用置信区间下界作为分数样本越少、置信区间越宽下界越低自动给小样本结果“打折”避免运气值干扰让分数更保守可信。2.3.4 分桶离散化把连续数值划分为多个区间转化为离散特征降低数值敏感度方便模型学习。比如年龄划分为0-18岁未成年、19-35岁青年、36-65岁中年价格、播放量也可按均分、等频、业务规则分桶适配模型对离散特征的学习偏好。2.4 偏差消除方法推荐效果优化关键针对前文提到的各类偏差特征实战中常用三种消除方法解决模型学偏的问题2.4.1 偏差特征线性接入最常用把偏差因素展示位置、曝光频次作为单独特征喂给模型必须通过线性层接入不能用非线性层。预测时将偏差特征设为固定值比如全部设为0代表同一展示位置即可消除偏差影响。常见疑问解答不是必须填0填任意固定值都可以核心是让所有物料处于相同假想环境线性层可加可分离偏差和兴趣得分互不干扰非线性层会让两者纠缠无法彻底去偏还会污染真实兴趣得分。2.4.2 样本过滤法未曝光、用户未看到的物料不纳入训练集避免模型把“未曝光”误判为“不喜欢”只保留用户真正看到、产生行为的样本保证训练样本的有效性。2.4.3 CoEC修正法核心是做对照消除先计算某一位置的基准期望点击该位置放普通物料的平均点击数再用真实点击数减去基准点击数剩余数值就是物料本身的真实质量得分彻底剥离位置带来的虚假点击还原用户真实兴趣。3. 特征工程补充注意事项大厂实战避坑特征筛选不是特征越多越好冗余特征会增加算力负担需剔除无效、重复、高相关性特征保留高区分度特征特征归一化统一训练集和测试集必须用同一套归一化、分桶规则避免数据泄露哈希冲突处理特征哈希不刻意消除冲突通过调大桶数降低概率模型可自适应轻微冲突离线在线一致性离线训练和在线推理的特征处理逻辑必须完全一致否则模型上线后效果骤降。4. 总结推荐系统特征工程本质是把现实世界的用户、物料、环境信息转化为模型能理解的数字语言过程中完成缺失值填充、尺度统一、降噪平滑、偏差消除、特征编码五大核心任务。作为初学者不用急于啃复杂公式先理清特征分类、掌握核心处理方法、明白每一步操作的意义再逐步深入原理就能慢慢吃透推荐算法的核心环节。