文章目录
推荐系统中的特征工程
机器学习模型的学习能力边界在于数据的拟合和泛华,数据的表达以及特征工程本身决定了机器学习的上限。为构建一个“好”的特征工程,需要依次解决三个问题:
- 构建特征工程需要遵循的基本原则是什么?
- 有哪些常用特征?
- 如何在原有特征上处理,生成可供推荐系统训练和推断用的特征向量?
1. 构建特征工程需要遵循的基本原则
尽可能地让特征工程抽取的一组特征能够保留推荐环境以及用户行为过程中的所有有用信息,尽量摒弃冗余信息
2. 推荐系统中的常用特征
2.1 用户行为数据
用户行为在推荐系统中分为显性反馈行为和隐形反馈行为,在不同业务中以不同形式呈现
在用户行为特征处理上一般分为两种:
- 转化成multi hot向量作为特征向量
- 预训练出embedding向量,再通过平均或者类似DIN方法生成历史行为embedding向量作为特征向量
2.2 用户关系数据
用户关系数据可以分为“显性”和“隐形”,或者“强关系”和“弱关系”。
在推荐系统中,可以将用户关系作为一种召回方式;也可以通过用户关系建立关系图,利用graph embedding的方式建立用户和物品的embedding;还可以利用关系数据,通过“好友”特征为用户添加新的属性特征;甚至可以直接利用用户关系数据直接建立社会化推荐系统。
2.3 属性,便签类数据
用户属性、物品属性、标签类数据是最重要的描述性特征。
推荐系统中使用属性、便签类数据一般是通过multi-hot编码方式将其转化为特征向量,一些重要的标签类特征也可以转化为embedding,再输入推荐模型。
2.4 内容类数据
内容类数据可以看做便签类型数据的延展。一般无法直接输入推荐系统,需要通过自然语言处理、计算机视觉等技术手段提取关键内容特征,再输入推荐系统。
2.5 上下文信息
上下文信息是描述推荐行为产生的场景的信息。最常用的是“时间”和通过GPS获得位置信息。根据场景不同,上下文信息的范围极广,包含但是不限于时间、低点、季节、月份、是否节假日、天气、空气质量、特大社会事件等信息。
引入上下文信息主要的目的是尽可能地保存推荐行为发生的场景信息。使得推荐的东西符合当时的环境条件。
2.6 统计类信息
通过统计方法计算出的特征,例如历史CTR,CVR、商品热门程度、流行度等。一般是连续特征,只需要经过标准的归一化处理即可输入推荐系统。
2.7 组合类特征
最常见的“年龄”+“性别”组成的人口属性的分段特征。目前随着深度推荐系统的发展可以交给模型进行自动处理。
3. 常用的特征处理方法
本节主要从连续型特征和类别型特征介绍常用的处理方法。
3.1 连续型特征
典型连续型特征包括用户年龄、统计类特征、时间、播放时长等数值型特征。对于此类特征,一般的处理办法包括归一化、离散化、加非线性函数等方法。
- 归一化主要目的是统一各个特征的量纲。
- 离散化是通过确定分位数的形式将原来的连续特征进行分桶、最终形成离散化的过程。
- 将非线性函数的处理方法是直接将原来的特征通过非线性函数进行变换,目的是更好地捕获特征与优化目标之间的非线性关系,增强模型的非线性表达能力
3.2 类别型特征
典型的类别型特征是历史行为数据、属性标签类数据。
一般转化为multi-hot编码,而如今常用的方法是转化为embedding向量再与其他特征组合,最终形成输入向量。
4. 特征工程与业务理解
在深度学习时代,推荐模型本身承担了很多特征筛选和组合的工作,算法工程师不用花费那么多精力在特征工程上。但是,深度学习模型的强大特征处理能力并不是我们可以摒弃对业务的理解,甚至可以说,在推荐模型和特征工程趋势与一体化的今天,特征工程本来就是深度学习模型的一部分。
例如在wide&deep模型中,应该把哪些特征给wide中加强记忆能力;在DIEN中,对用户行为序列的特征抽取更加与模型结构进行深度耦合,利用了复杂的序列模型结构对用户行为序列进行embedding化。
所以,不变的是只有在深入了解业务的运行模式,了解用户在业务场景下的思考方式和行为动机才能准确抽取最有价值的特征,构建成功的深度学习模型。
参考书目:深度学习推荐系统 王喆