推荐系统百问百答 | 特征工程篇

特征工程

让你设计一个推荐系统的特征工程,你会怎么去设计?包括用户侧、物品侧和上下文特征。

用户侧:

  • 人口统计学特征:比如性别、年龄、地理位置等

  • 用户行为特征:用户的潜在兴趣,用户对物品的真实评价均包含在用户的历史行为中,一般分为显式反馈行为和隐式反馈行为,对不同的业务场景,分别有不同的体现:

业务场景 显式反馈 隐式反馈
电子商务 对商品的评分 点击、加入购物车、购买
视频网站 对视频的评分、点赞等 点击、播放、播放长度等
新闻类网站 赞、踩等行为 点击、评论等
音乐网站 对歌曲、歌手、专辑的评分 点击、播放、收藏等

显式反馈一般收集难度比较大,数据量小,在深度学习对数据量的要求越来越高的背景下,仅使用显式反馈的数据不足以支持推荐系统训练过程的最终收敛,因此能够反映用户行为特点的隐式反馈是特征工程的重点。

  • 用户关系特征:行为数据是人与物,那关系数据就是人与人的关系。也分为显式和隐式两种,可通过关注、好友关系等建立显式关系,也可通过互相点赞、同处于一个社区、同看一部电影建立隐式关系。

具体如何使用,可以将用户关系作为召回层的一种物品召回方式;也可以通过用户关系建立关系图,使用Graph Embedding的方法生成用户和物品的Embedding;还可以直接利用关系数据,通过“好友”的特征为用户添加新的属性特征;甚至可以利用用户关系数据直接建立社会化推荐系统。

  • 用户兴趣标签:会建立一套成熟的用户标签体系,可由用户自行添加兴趣标签,也可以通过计算用户行为生成用户画像标签。

上下文侧:

上下文信息是描述推荐行为产生的场景的信息,最常用的上下文信息是“时间”和通过GPS获得的“地点”信息,根据推荐场景不同,上下文信息范围极广,包含但不限于时间地点、季节、月份、是否节假日、天气、空气质量、社会大事件等信息。

物品侧:

  • 物品属性标签:一般会建立一套成熟的物品标签体系,比如电商公司的商品分类体系,也可以有一些社交化对的方法由用户添加。

  • 物品描述类特征:一般是物品的标题或者描述、图片,经由自然语言处理或者计算机视觉等技术手段提取关键内容特征,转化为标签类数据。

  • 物品统计类特征:对物品的一些信息进行统计计算得到的特征,比如历史CTR、历史CVR、物品收藏次数、点赞次数、分享次数等,一般是连续型特征,仅需经过标准化归一化等处理。统计类特征本质上是一些粗粒度的预测指标,如在CTR预估问题中,可以将某物品的历史平均CTR当做最简单的预测模型,但预测能力很弱,所以历史CTR往往被当做复杂CTR模型的特征之一,也往往与预测目标有较强的相关性,是一个很重要的类别特征。

在进行特征处理时,对连续型特征怎么处理?

连续型特征,比如用户年龄、统计类特征、发布时间、播放时长等数值型特征,常使用归一化、离散化、非线性化方法进行处理。

归一化的主要目的是统一量纲,将连续特征归一到[0,11]区间,也可以做0均值归一化,即将原始数据集归一化为均值为0、方差为1的数据集。

离散化是通过确定分位数的形式将原来的连续值进行分桶,最终形成离散值的过程。离散化的主要目的是防止连续值带来的过拟合现象及特征值分布不均匀的情况。经过离散化处理的连续型特征和经过one-hot处理的类别型特征一样,都以特征向量的形式输入推荐模型中。

非线性化是直接把原来的特征通过非线性函数做变换,然后把原来的特征及变换后的特征一起加入模型进行训练,常用的非线性包括xa,log(a),log(x1x)x^a,log(a),log(\frac{x}{1-x})。非线性化的目的是更好地捕获特征与优化目标之间的非线性关系,增加非线性表达能力。

在进行特征处理时,对类别型特征怎么处理?

类别型比如用户历史行为数据、属性标签数据等,原始表现形式往往是一个类别或者一个id,这类数据最常用的办法是使用one-hot或者multi-hot编码将其转化成一个数值向量,但这样的表示方法特征向量维度过大,特征过于稀疏,容易造成模型欠拟合,模型的权重参数数量过多,导致模型收敛过慢,所以一般先将类别型特征编码为稠密Embedding向量,在于其他特征组合,形成最终的输入特征向量。

分享到