2020-12-03

▼魔方 西西 提交于 2020-12-05 17:58:39

推荐系统实战之 特征工程

前言

本次特征工程任务我主要从理论出发,加强对推荐系统的特征工程的了解。本文主要参考了王喆大佬的《深度学习推荐系统》,将从推荐系统的视角出发,结合本次新闻推荐比赛的实际案例,探讨推荐系统的特征工程。

数据决定了机器学习模型的上限,特征则是对数据的表达,特征工程就是利用工程化的方法寻找对数据更好的表达。在推荐系统中,数据分为用户信息、物品信息和场景信息。推荐系统的特征工程就是利用工程手段从“用户信息”“物品信息”“场景信息”中提取特征的过程。

构建推荐系统特征工程的原则

由于用户的行为数据是原始的,是具体的,要从中抽取出某种数学形式的特征,就涉及到信息的损失。另一方面,用户的行为数据中又有很多冗余的、无用的信息,这些信息都考虑进来会损害模型的泛化能力。因此,构建推荐系统特征工程的原则是:尽可能地让特征工程抽取出的一组特征能够保留推荐环境及用户行为过程中的所有有用信息,尽量摒弃冗余信息
在本次新闻推荐场景中,从我的角度考虑对我重要的新闻有:

  1. 对新闻的类型偏好(如科技、旅游、非娱乐)
  2. 新闻的热门程度(如抗疫、时事)
  3. 新闻相关程度(如嫦娥5号系列报道)
  4. 新闻发出的时间(大多新闻都会在饭点看)
  5. 看是由哪个订阅号发的新闻(保证权威性及类型偏好)
  6. 看新闻时的状态(烦躁时会看些有趣的)

将这些要素转换成特征,基于本次新闻推荐多路召回后的数据,即(用户,新闻)作为列的数据,可以得出下表:

要素 有用信息和数据 特征
类型偏好 新闻类型 结合article表的category_id
热门程度 新闻被点击次数 统计召回新闻的流行度
相关程度 新闻的内容或标签 embedding后的距离
新闻发出时间 新闻时间,用户读新闻时间 时间差
订阅号 本次数据不涉及 \
看新闻的状态 数据无法获得 \

推荐系统中的常用特征

1. 用户行为数据

用户行为数据是推荐系统最常用、也是最关键的数据。用户对物品的评价均包含在其行为历史(点击新闻情况)。用户行为在推荐系统中一般分为显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback),在不同业务场景中以不同形式体现。显性反馈行为我理解为用户明确告知系统应该给他推荐什么样的新闻,而隐性反馈行为则通过用户的使用记录暗示了用户可能喜欢的新闻。
在新闻推荐中,显性反馈行为指用户对新闻点赞、踩、点击不感兴趣等行为。隐形反馈行为指看新闻时长、评论新闻、点击新闻、扫描新闻内二维码等。
不同行为有不同权重。在当前推荐系统特征工程中,隐性反馈行为越来越重要,主要原因是显性反馈行为收集难度大、数据量小、存在掺假(恶意刷好评)。深度学习推荐系统尤其需要大量数据来支撑其训练,因此,对隐性反馈的挖掘是当前特征工程的重点。
在当前的用户行为类特征的处理上,往往有两种方式:


  1. 将代表用户行为的物品id序列转换成multi-hot向量,作为特征向量
  2. 预先训练好的物品的embedding,通过平均或者DIN模型注意力机制生成历史行为embedding向量作为特征向量

todo 在本次新闻推荐比赛中,以上两种方式构造特征应该也会比较有效,尝试后再将结果贴到这里。

2. 用户关系数据

用户行为数据是人与物的连接,而用户关系数据则是人与人的连接。在UserCF中,就是利用用户的相似性为用户推荐物品。
用户关系数据也可以分为显性和隐性,或称强关系与弱关系。强关系指互相关注、好友等,弱关系指互相点赞、同处一个社区、同样的兴趣等。
在推荐系统中,利用用户关系数据的方式有多种:

  1. 可以将用户关系作为一种物品召回方式
  2. 可以通过用户关系建立关系图,使用Graph Embedding的方法生成用户和物品的embedding
  3. 还可以直接利用关系数据,通过“好友”的特征为用户添加新的属性特征

todo 尝试使用第二种方法对本次新闻推荐做特征工程,并在此贴出结果

3. 属性、标签类数据

属性、标签是有效描述用户和物品的特征。可以由专门的团队建立维护,也可以用社交化的形式由用户参与组织。
在推荐系统中使用属性、标签类数据,一般是通过multi-hot编码将其转换成特征向量。
在本次新闻推荐中,新闻没有标签,只有类别,可以将类别直接作为特征或one-hot处理。

4. 内容类数据

内容类数据可以看做是属性、标签特征的延伸,其涵盖的信息更多,但同时冗余信息也更多,且有效信息表达得不直接。内容类数据通常需要加工后再作为特征。图片、视频等带图片的信息流推荐场景中,可以利用计算机视觉模型进行目标检测,抽取图片中的要素作为标签。而新闻推荐中,可以设定每个标签的规则并对新闻进行统计分类,也可以将内容Embedding。

5. 上下文信息

上下文信息是描述推荐行为产生的场景的信息,最常用的上下文信息是“时间”和通过GPS获得的“地点”信息。根据具体的推荐场景,可以利用时间、地点、季节、月份、节假日、天气、空气质量、社会大事件等信息。
在新闻推荐中,不在家乡且处于旅游地区的人倾向于关注当地旅游相关新闻,而在旅游地区的本地人则不希望看到旅游向导相关的新闻。

6. 统计类特征

统计类特征是指通过统计方法计算出的特征,例如历史CTR(Click-Through-Rate)、历史CVR(Conversion Rate)、物品热门程度、物品流行程度等。统计类特征一般是连续性特征,仅需经过标准化归一化等处理就可以直接输入推荐系统进行训练。
统计类特征本质是一些粗粒度的预测指标,单独作为特征来预测时能力较弱,但其与预测目标往往具有强相关性,因此是绝不应该被忽视的重要特征类别。

7. 组合类特征

组合类特征是指将不同特征进行组合后生成的新特征。一些新的机器学习模型已经可以自动进行特征组合、筛选,如FM家族、GBDT系列算法。

常用的特征处理方法(同机器学习相关方法)

1. 连续型特征

连续型特征包括用户年龄、统计类特征、物品的发布时间等,在本次新闻推荐中,包括文章字数、新闻创建时间与用户点击新闻时间。对于这类特征,最常用的处理手段包括归一化、离散化、加非线性函数等方法。

2. 类别性特征

one-hot, multi-hot,或Embedding

总结

在深度学习时代,推荐系统的特征工程与推荐系统模型是高耦合的,考虑特征工程是与业务强相关的,因此构建推荐系统应该从业务出发,了解用户在业务场景下的思考方式和行为动机,才能精确抽取有价值的特征,构建适宜的模型。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!