「推荐系统特征工程」07. 一些与特征工程相关的实际问题

作者 | gongyouliu

编辑 | gongyouliu

我们在上一章中介绍了特征选择,讲到了选择特征的一些基本方法及在具体模型中怎么选择合适的特征。

本章我们来介绍几个与特征工程相关的实际问题,这些问题在实际构建模型过程中是比较重要的,需要很好地处理,才能更好地构建出有业务价值的特征。

7.1 可变维度的离散特征

有些特征的维度是动态变化的,训练样本数量不同特征维度不同。典型的比如标签,一般标签可能累计有很多万个,特别有些标签是基于算法获得的(比如通过关键词提取算法获得标签),标签数量就是不固定的。在作者之前做视频推荐过程中,视频标签就是这里标签,有十几万个。

对于这类可变特征,如果用one-hot编码,取的特征值越多,最终特征的维度也越高,覆盖的样本量肯定也越多,但是会导致模型更加复杂。针对这类特征,需要覆盖多少特征值合适呢?

一般可以利用样本来进行计数统计,可以选择出现次数topN(这里N可以是基于某些原则来选择,比如至少有3个样本包含该标签,或者取排序在前1000位的标签等)。针对没有取到的标签可以直接丢弃或者用其他值替代。具体怎么处理,效果怎么样,需要进行多长尝试。

7.2 冷启动相关的特征构建

对于推荐系统来说,冷启动是非常关键的,也是不可避免的。对于冷启动用户或者冷启动物品相关的特征怎么处理呢?下面来简单说明一下。

对于新用户,如果选择的特征中包含从用户行为中获得的特征(新用户没有用户行为,或者用户行为很少),那么基于用户行为构建的特征(比如一些嵌入特征)可能就不够准确。这时可以基于其他维度(比如同一地域、同一性别等)构建用户相似性,利用相似用户的特征进行聚合处理作为该用户的特征,比如利用其他用户的平均特征作为该新用户的特征。

对于新物品,比如有一个特征是物品过去3天的平均点击率,那么可以利用同品类(比如都是手机品类)的物品的点击率作为该新物品的点击率特征。

这类问题特别容易在模型预测时遇到。比如在进行模型预测时,有的用户是新用户,有的物品是新入库的商品等。

总之,与冷启动相关的特征处理方法及效果,跟具体的特征和问题相关,也可能跟模型相关,大家在具体问题中需要具体分析。

7.3 特征的维度问题

特征的维度衡量的是模型的表达能力,维度越高,模型表达能力越强,这时就需要更多的样本量和更多的计算资源及优秀的分布式计算框架来支撑模型的训练。

为了达到较好的训练效果,一般对于简单模型可以用更多维度的特征,最有名的就是大家熟知的谷歌Adwords广告模型,用线性模型加上千亿特征做出了世界顶尖的广告点击率预估模型。

而对于复杂模型可以用更少维度的特征,比如在推荐系统中的深度学习模型(比如wide & deep等),一般特征维度都不是特别大,最大不过几千维,否则由于模型参数太多,训练起来非常复杂,预测时间也会相对较长,所以一般会控制特征的维度不要过大。

7.4 模型预测时的特征构建

在模型进行预测时,需要动态构建某些特征,那么是否可能快速构建相关特征灌入到模型中获得预测结果也是非常关键的。

对于那些与上下文无关的特征,并且构建时间比较复杂的特征(比如从视频中抽帧获得的特征),可以将特征构建过程前置,事先构建特征并存储起来,在实际使用过程中拼接好相关特征就好了,这样可以提升特性构建速度。一般原则是,能够事先构建的特征,尽量事先构建,利用空间换时间,提升模型预测效率。

有些特征,在进行模型训练是可以构建相关特征的,但是在实际预测时,由于条件不具备,无法构建相关特征,这时可以采用一些技巧。比如推荐系统中,推荐的物品的位置可能对推荐结果有影响,那么位置可能就是一个重要的特征。在建模时,物品在推荐列表中的位置是已知的,比较好构建这个特征,但是在预测时,无法确定物品的位置,这时就可以将位置置为1(也就是在第一个位置),这种方法还能平衡位置带来的偏差(因为位置越靠后,可能用户越不容易点)。

还有一些特征是无法事先构建的,是需要在某个小的时间窗口中构建的,这类特征属于近实时特征,下面一节我们简单介绍一下。

7.5 离线特征与近实时特征

有些特征是可以通过离线构建的,这些特征可以采用T+1逻辑进行处理,构建特征的数据可以存放到数仓中,生成的特征可以放一份到数仓,同时同步一份到实时查询引擎中(比如HBase、Redis等),方便在进行模型预测时取用。

有些特征只能在最近的时间窗口中计算的,比如某个商品在过去半个小时的点击率等这里特征,这时需要利用流式处理平台(比如Spark Streaming、Flink等)构建。

具体需不需要近实时特征,还得基于具体的模型和业务来权衡,也需要企业的计算平台能够支撑近实时计算才行。

当前推荐系统已经进化到信息流推荐阶段了,构建近实时特征对于提升模型效果,更好地反映用户实时兴趣变化变得越来越重要了。特别是与上下文相关的特征(比如用户最近浏览了什么物品),如果可以整合到模型中,可以获得非常好的推荐效果。

7.6 特征的业务分析

业务分析是指基于具体问题、业务目标来评估特征的有效性和价值。一般如果对待研究的问题有比较深入的了解,熟悉相关业务,是可以非常容易挖掘出比较有业务价值的特征的。

这里简单举一个例子,比如在视频推荐中,可以根据自己的行为来定性验证标签这类特征的正确性。我个人最喜欢看恐怖电影,那么基于标签构建特征的话,那么对于我的样本,在恐怖这个标签上的权重应该是比其他标签权重大的。

一般来说,对于可解释的特征(比如年龄、性别、标签等都是可解释的特征,嵌入特征、从视频音频中等提取的抽象特征等,一般不可解释),大家可以基于业务分析去评估一下特征的价值和意义,这对于更好地理解特征对模型的贡献有一定的指导意义。

总结

本章讲解了几个与特征相关的零散问题,希望可以帮助大家更好地构建特征。构建一个符合模型的、构建模型特征是需要技巧和经验的,也需要大家更好地了解具体问题和业务,这样才能帮助大家构建效果好的、有业务价值的特征。

关于特征工程的基本原理和基础知识点的介绍就到这里结束了,前几章的知识已经为我们后面的学习打下了良好的基础了,我们在下一章开始就详细讲解与推荐系统相关的特征工程问题。

c7a9e7e853f77d91c9f3535b417fecbf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据与智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值