推荐系统实战(二)特征工程

一、特征提取

特征Feature与特征域Feature Field

  • 特征:特征是数据集中的一个可量化的属性或变量,它能够提供有关数据对象的信息。特征可以是连续的数值,如温度或身高,也可以是离散的类别,如性别或颜色。特征是从原始数据中提取的,用于描述数据对象的属性,它们是机器学习模型进行预测或分类的基础。
  • 特征域:特征域通常指的是由多个特征组成的多维空间。每个特征是一个维度,数据点在这个空间中可以表示为向量。比如用户浏览历史中的商品列表是一个feature field,特定商品ID是 feature。

(一)物料画像

1、物料静态画像

(1)物料属性

可以直接从物料中获取的信息,比如物料上传者、物料上传时间、物料标题等等。

(2)物料的类别与标签
  • 获取途径:不依赖用户反馈,可以通过分析物料获得类别与标签。
  • 内容分析:①可以通过内容分析获取物料从属于某个类别或者某种标签的概率。②例子:比如可以通过BERT分析文本标题等信息,利用机器视觉算法分析视频封面等信息。③内容分析结果:一级分类,比如电影、音乐等等;二级分类,比如喜剧片、科幻片等等;标签,不从属于具体某个类别,比如某个明星的名字作为标签,可能在电影类别的文章上出现,也可能在音乐类别的文章中出现。
  • 物料的静态画像:表示形式可以为列表,比如[‘电影',’音乐']。

2、基于内容的embedding

将一个高维数据转换成方便处理的低维数据,把内容数据(如文本、图像、音频等)转换为固定长度的向量,这些向量能够捕捉内容的语义或特征信息,从而便于在低维空间中进行处理和计算。

3、物料的动态画像

  • 特点:是后验统计量,作为特征可能存在马太效应,使得本来推荐率更高的物料排的更靠前。
  • 地位:物料端最重要的特征,反映了物料的受欢迎程度。
  • 维度:时间粒度,比如一天、一周等等;统计对象,比如CTR、平均播放时长等等。

4、用户给物料反向打标签

消费过某个物料的用户身上的标签反向影响物料,丰富物料信息。

(二)用户画像

1、用户静态画像

  • 内容:比较稳定的用户信息,比如人口属性(年龄、性别等)。
  • 获取难点:用户隐私。
  • 新用户的静态画像:对新用户而言,由于缺乏行为数据,因此会较为依赖静态画像来做推荐。但是由于系统中老用户的行为丰富,贡献的样本多,因此训练出的模型可能对新用户不友好。
  • UserID:用户侧最细粒度的个性化信息,但是覆盖用户数目多,特征空间膨胀,可以引入Parameter Server来解决。

2、用户动态画像

①内容

指的是从用户历史行为数据中提取出用户的兴趣爱好,可以反映用户兴趣爱好的动态迁移。

②获取方式

(1)兴趣爱好提取与CTR预测一体:

  • 优点:简单直接,不用做过多的特征处理。
  • 缺点:面对比较久的历史行为数据和候选集较大的任务,由于兴趣爱好是在线提取的,耗时长不友好;提取出的用户兴趣以抽象的向量表示,可解释性较弱。
  • 简单例子:将一段时间与用户交互过的物料序列喂给模型,提取出一个向量,表示用户兴趣的抽象表达。
将用户行为序列喂入模型

(2)兴趣爱好提取与CTR解耦:

  • 方法:离线提取,在线查询。将兴趣提取转移到线下,使用Hadoop、Spark等大数据平台从用户历史行为中提取出相关统计指标来描述用户兴趣,并灌入数据库中;在线查询时只需要极短耗时,根据userID在数据库中查询即可。
  • 优点:离线提取对候选集较大的任务相对友好,在线查询耗时短;提取出表示兴趣爱好的统计指标直观易懂,可解释性强。
  • 缺点:提取出来的兴趣爱好不会随着候选集的改变而变化,针对性不强;兴趣提取是离线进行的,无法及时追踪用户兴趣迁移。

③统计指标的几个维度举例

  • 用户粒度:一个人,一个群体等。
  • 时间粒度:一天,一周等。
  • 物料属性:物料属性,一级类别,二级类别,标签等。
  • 动作类型:点赞,踩踩等。
  • 统计对象:次数,时长等。
  • 统计方法:加权和,比例等。比如CTR点击率。

(三)交叉特征

1、笛卡尔积

  • 描述:将两个及两个以上的特征做笛卡尔积生成新的组合特征。如果有两个特征 A 和 B,A 有值 {a1, a2},B 有值 {b1, b2},那么笛卡尔积交叉将生成四个新特征:(a1, b1), (a1, b2), (a2, b1), (a2, b2)。
  • 例子:比如用户感兴趣的电影类别有{‘喜剧片','恐怖片'},候选集物料标签有{‘施瓦辛格','机器人'},那么笛卡尔积交叉生成的四个新特征是{’喜剧片+施瓦辛格',‘恐怖片+施瓦辛格’,‘喜剧片+机器人’,‘恐怖片+机器人’}。
  • 优点:捕捉特征之间的组合效应。
  • 缺点:生成太多新特征,造成维度灾难。

2、内积

  • 描述:将某一维度的用户兴趣向量和候选集向量做内积运算,得到的结果表示用户兴趣爱好与候选集在这一维度上的匹配程度,结果值越大说明越匹配。
  • 例子:针对标签这一维度,用户感兴趣的标签向量为{‘柯南’:0.8,‘足球’:0.4,‘福尔摩斯’:0.6,‘台球’:-0.3},候选集标签向量为:{‘柯南’:1,‘福尔摩斯’:0.5,‘狄仁杰’:0.8},找到两个向量中的共有标签柯南和福尔摩斯做内积,0.8*1+0.6*0.5=1.1。

(四)偏差特征

1、定义

通常指的是那些在数据集中可能引起模型预测偏差的特征。这些特征可能与目标变量存在某种关联,但它们不一定代表真实的因果关系。

2、位置偏差position bias

①描述

如下图所示,对于视频推荐而言,用户喜欢的视频4由于位置太偏没有被用户消费,此时视频4被记录为负样本误导了模型。

位置偏差示意

②解决方案

  • 严格标记正负样本:只有位置处于被消费物料上方的物料才被当做负样本。
  • 模型引入偏差特征:只有模型训练的时候使用偏差特征,模型预测的时候使用伪特征值(填充成统一的值,比如0);将偏差特征通过一个线性层接入模型,这样才能保证伪特征值不管是什么,都不影响最后的结果。如果直接和正常特征喂给模型,DNN就会将伪特征值和真实特征值深度交叉,导致每次排序结果都不一样。
Above Click规则示意
偏差特征只能通过线性层接入模型

3、例子

Youtube视频存在年龄偏差(当前时间-视频上传时间),越早上传的视频积累人气更多,后验指标更好,因此在训练的时候引入年龄偏差向量,而预测的时候将伪特征值设置为0。

二、数值特征的处理

(一)缺失值处理

1、最简单的方法

最简单的方法就是用该特征在所有样本中的平均值或者中位数来填充缺失值。

2、模型处理

①用户缺失值:对于新用户而言,模型可以根据新用户的静态画像(例如人口属性)来预测用户的行为偏好。

②物料缺失值:对于新物料而言,模型可以根据物料的静态画像(比如物料上传者等)来预测物料的动态画像(比如在一段时间的CTR)。

(二)标准化

1、作用

将量纲不同、取值范围不同的数值特征值压缩到同一个数值范围内,这样就具有了可比性。

2、最简单的方法

Z-score:z=\frac{(X-\mu)}\sigma

  • z :是 Z-score,即数据点 X 的标准分数。
  • 𝑋:是数据集中的某个具体数据点。
  • 𝜇:是数据集的平均值(均值)。
  • 𝜎:是数据集的标准差。

3、长尾分布的特征

  • 定义:长尾分布指少数具有高频率或高价值,而大多数具有低频率或低价值,就导致分布图看上去有个长长的尾巴。
  • 举例:大部分用户一天刷视频的数量不多于20个,但是也有少部分用户一天刷几百个视频。
对长尾分布的数据先压缩成接近正态分布

4、Z-score改进

将原数据分布转换成正态分布后再求Z-score,转换方式有对数变换、平方根变换等等。

(三)数据平滑和消偏

1、数据平滑

①为什么要使用数据平滑:存在部分小样本具有负面影响,影响结果准确率。比如说商品刚上新就被点击购买,其购买率是100%,从而认定该新商品为爆款。

②数据平滑的作用:减少噪声的影响,将极端值拉到合理的范围内。

③数据平滑的方法举例:威尔逊区间平滑。

2、消偏

①消偏的原因:减少或消除数据和模型中的偏见,从而提高结果的公正性、准确性和可靠性。

②消偏的例子:比如位置比较显眼的文章A,它的点击率为10%,位置相对较偏的文章B,它的点击率为9%,如果单单从点击率这一指标看,B的表现没有A好,但是结合两者的分布位置,B的表现似乎更好。因此采用CoEC(Click over expected click)取代原CTR点击率来衡量物料的受欢迎程度。

CoEC=AC/EC=实际点击率/期望点击率

比如考虑到位置信息的CoEC公式可以表示为:

CoEC=\frac{\sum _{i=1}^Nc_i}{\sum _{i=1}^Nec_{p_i}}

其中N代表样本总数,i表示第i次曝光样本,ci表示第i次曝光样本是否发生点击行为(点击值为1,没点击是0),ecpi表示第i次曝光样本在p位置的期望点击。

(四)分桶离散化

1、描述

将数值特征离散成类别特征,离散的方式就是分桶,也就是将数值特征的值域划分为若干区间,每个区间被叫做桶。

2、方法

①等宽分桶:将值域均分N等分。

②等频分桶:按照N个分位数划分。

③模型分桶:比如由特征F和目标值生成一个决策树,再将F中实数特征f喂给决策树得到离散化结果。

三、类别特征的处理

(一)类别特征在推荐系统中的使用

1、 推荐系统的基础是用户画像和物料画像,而itemID和UserID也为类别特征,常被使用。

2、推荐系统输入特征和要拟合目标之间不总是线性关系。

3、例子:对于年龄特征,将每个年龄段视为独立的类别特征,学习各自的权重或embedding。

(二)推荐系统针对类别特征的技术

1、增强单个类别特征的表达能力

  • 通过embedding自动扩展内涵,自动学习出隐语义(比如20-30岁年龄段,可能经济实力一般,审美比较潮流等)。
  • 多特征交叉:将多个特征进行交叉,增强表达效果,比如20-30岁+程序员,系统就会比较容易地推荐格子衬衫。

2、高维度的类别特征的存储

利用Parameter Server去存储。

3、稀疏特征空间内罕见特征的充分训练

①FTRL为每维特征自适应调节学习率。

FTRL(Follow-the-Regularized-Leader)算法:

  • FTRL是一种在线学习算法,它通过为每个特征自适应地调整学习率来优化预测模型。这种自适应调整基于每个特征的更新频率。
  • 在FTRL中,更频繁更新的特征会有更低的学习率,这有助于减少对这些特征的过度拟合。相反,不常更新的特征会有更高的学习率,允许模型更快地学习这些特征。
  • 这种方法使得FTRL算法特别适合处理具有大量稀疏特征的数据集,因为它可以有效地处理稀疏性并提高学习效率。

②阿里巴巴的DIN为每个特征自适应调节正则系数。

  • DIN是一种用于推荐系统的深度学习架构,它通过为每个特征自适应地调整正则系数来捕捉用户的兴趣序列。
  • 这种自适应调整通常通过一个嵌入层和注意力机制来实现,使得模型能够为不同的特征分配不同的权重,这些权重反映了它们在预测用户兴趣时的重要性。
  • DIN的目标是更准确地建模用户的兴趣,并通过考虑特征的重要性来提高推荐的相关性。

③FM中,xi≠0或者xj≠0的样本,都可以参与训练wij。

  • FM是一种因子分解机,用于处理推荐系统和广告点击率预测等任务。它结合了线性模型和因子分解的优点,以处理稀疏数据。
  • 在FM中,每个特征都有一个与之关联的权重向量,这些向量用于捕捉特征间的交互作用。
  • 对于xi≠0或者xj≠0的样本,即非零特征,它们都可以参与训练权重矩阵wij。这意味着即使某些特征在某些样本中未出现,只要它们在其他样本中出现,也可以通过模型学习到它们与其他特征的交互作用。
  • FM通过这种方式有效地捕捉了特征间的潜在交互,提高了模型对复杂模式的学习能力。

(三)类别特征的映射

1、任务

将字符型类别映射成数字型类别特征,以便后续喂给模型。

2、最简单的方式

维护一张映射表,将字符串类别特征映射成整数,每个整数对应embedding矩阵中的行号,缺点是需要维护映射表,对于频繁变动的userID等来说不太友好。

映射类别特征示意

(四)特征哈希Feature Hashing

1、方法

  • 先计算输入字符串特征的哈希值,再对Embedding行数N取余,最后映射成一个[0,N)的整数,N是embedding矩阵的总行数。
  • 各个feature field共享一个embedding矩阵,空间利用率更高。

2、哈希冲突

可能会发生,但是概率低,可以增加N的大小来降低发生冲突的可能性。

3、优点

简单易行,可扩展性好。

简单易行,可扩展性好
  • 31
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值