【推荐算法】推荐系统中的特征工程

前言:这篇文章是阅读石塔西《互联网大厂推荐算法实战》第二章推荐系统中的特征工程的学习笔记,在未来对于特征向量的学习笔记会在此基础上进行补充 。编者认为特征工程已经过时的言论是错误的,该言论认为DNN模型可以自主的完成对数据特征的提取,但是在Deep Cross Network网络中,作者直接指出仅采用DNN模型是无法实现对二阶、三阶的特征进行交互的;并且虽然在DIN、SIM模型中可以从数据中挖掘用户的短期兴趣和长期兴趣,是因为模型足够复杂,需要通过复杂的计算才能提取这些兴趣特征。因此,一个好的特征工程在深度学习快速发展的环境还是必要的。

⭕ 表示笔者待学习部分

  • 基本概念:

Field:相当于是特征的集合,例如,特征为视频类别特征中,有【体育、音乐、戏剧】三个类,视频类别就被称为一个Field

Feature:体育、音乐、戏剧均为视频类别的特征。


文章目录

物料画像

ItemID

在传统的识别任务中,物品的ID往往被认为是无效特征,因为ID是随机的,无法对识别、预测等任务提供有效的信息。但在推荐算法中,虽然本身也没具体含义,但是模型可以通过历史数据,对物品ID进行学习,记住物品ID与用户特征的信号关系。

静态画像

无需通过与用户交互的数据即可获得的特征,一般通过BERT/CLIP 对原始图像、标题等信息特征提取。一般分析得到的信息不是一个具体的值,例如在一个新闻推荐中,有【体育、音乐、戏剧】三类,分析后的结果并不是【体育】一个单一结果,而是各个feature的概率【0.9, 0.1, 0.1】

💡 一般来说,标签空间肯定不止三个,可能有十几万个,因此,需要有基于内容的Embedding,一般维度为32、64.

动态画像

一种后验统计数据,是通过用户与物料的交互信息提取的特征,一般通过两个维度刻画:

  • 时间:全生命周期、过去一周、一天、一小时...
  • 对象:例如点击率、转化率、点赞率、平均播放进度...

弊端】存在幸存者偏差、不利于冷门物品和新物料的冷启

用户画像

UserID

提供了用户侧最个性化的特征

静态画像(用户基本信息)

笔者认为这些基本信息(年龄、位置)对推荐算法的作用不大,对于老用户,他们的行为数据已经可以发挥巨大的作用,而利用老用户的基本信息来预测新用户的兴趣物品的效果是不明显的。

动态画像

从用户的历史行为数据提取他们的兴趣爱好,这个过程能反映用户的兴趣变化

  • 实现方法

① 简单方法:通过历史行为数据的Item 多个Embedding池化得到用户向量;

② ⭕DIN,SIM通过在池化中加入attention机制,根据候选物料的不同,从相同的行为数据中提取得到不同用户的兴趣;

  • 弊端

方法虽然简单,直接利用用户行为数据即可完成对用户的动态画像描述,但用户的动态画像和CTR建模是合为一体的,在线上完成才能实时的捕捉用户的兴趣。而DIN,SIM模型需要更强大的计算效率,++无法满足对于历史更久远的用户行为序列以及实时性的需求,也无法应用于召回和粗排中++。

  • 解决方法

对用户的动态画像和CTR建模解耦,对提取兴趣的工作从线上转移到线下,在大数据平台下进行用户兴趣的提取,并存入数据库中,用户只需要根据ID查询

【优点】++适合召回、粗排阶段++、耗时低;

交叉特征

笛卡尔内积

直接对两个Field的每个特征进行两两组合,【体育、音乐、戏剧】和【男、女】两两组合,可以得到【体育+男、音乐+男、戏剧+男、...】共六祖新特征

交叉内积

通过一个用户动态画像的兴趣ID和物料ID进行内积,可以反应用户和物料的匹配程度

偏差特征

点击特征解释:用户点击了不一定是喜欢的,没点击不一定是不喜欢的,这种现象称为"偏差"。

  • 位置偏差

【原因】:对于用户喜欢的物品,虽然已经曝光给用户了,但是用户还未刷到该物品,导致模型误认为用户"不喜欢"该物品而导致的偏差;

【解决】:① Aboveclick,只有在点击物品上方的曝光物品才会被用于负样本,因为这些物品已经进入用户的视野; ② 在训练时,利用曝光位置对点击率等指标进行学习,而在预测时,屏蔽曝光位置的干扰,将曝光特征设置为0

  • 视频"年龄"偏差

【原因】:发布较早的物品可能会有更多的点击、点赞等

【解决】:⭕ Youtube在训练时将视频年龄作为偏差特征,预测时统一设置为0

  • 其他消除偏差思路

​ CTR在预测时没有考虑到位置偏差,从而导致较差位置的优秀作品的点击率也较低,因此,采用CoEC 代替CTR衡量物料的受欢迎程度,将展示位置也作为特征,计算公式如下:
C o E C = ∑ i = 1 N c i ∑ i = 1 N e c i CoEC=\frac{\sum_{i=1}^N c_i}{\sum_{i=1}^N ec_i} CoEC=∑i=1Neci∑i=1Nci

相关推荐
计算机小白一个2 小时前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
万事可爱^3 小时前
HDBSCAN:密度自适应的层次聚类算法解析与实践
算法·机器学习·数据挖掘·聚类·hdbscan
牧歌悠悠4 小时前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
坚毅不拔的柠檬柠檬4 小时前
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
人工智能·chatgpt·文心一言
坚毅不拔的柠檬柠檬4 小时前
2025:人工智能重构人类文明的新纪元
人工智能·重构
jixunwulian4 小时前
DeepSeek赋能AI边缘计算网关,开启智能新时代!
人工智能·边缘计算
Archie_IT4 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
大数据追光猿5 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!5 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
夏末秋也凉5 小时前
力扣-回溯-46 全排列
数据结构·算法·leetcode