| 导语 在机器学习建模问题中,合适特征的构造对于模型的性能至关重要,看到很多同学介绍特征工程,包括特征的预处理和特征筛选等,这些非常重要,但是特征预处理和特征筛选的前提是要有基础特征,而这些特征从哪里来,又如何构造?现在总结一下在推荐系统中比较通用的特征构造方法。

场景分析:

推荐场景一般可以抽象为:内容(Item)和受众(User),其中内容主要是指要推荐的Item,在购物场景中Item就是商品,歌曲推荐中Item就是歌曲,受众是访问当前场景的用户,一般是自然行为人;推荐模型一般是计算不同的User-Item对的得分,这个得分反映的是用户点击当前物品的概率,获取得分最高的Top n的Item推荐给用户,所以整个特征关联模型可以抽象为如下图-1所示:

图-1 推荐系统关系模型

其中,可以分解为如下几部分:User-Item特征、User特征、Item特征、User-Item属性分布特征,下面具体阐述每种特征的构造方法。

User-Item特征:

User-Item特征主要从三个维度来刻画User对Item的“兴趣”,如图-2所示:

图-2  User-Item类型的特征构造

1)时间序列上的统计特征:

统计特征从四个角度(绝对值,相对值,是否感兴趣和深度感兴趣)来刻画User对Item的“兴趣”。比如,时间序列中User累积对某个Item的行为次数就是User对Item的绝对兴趣值:如果时间序列分为:一天、三天、一周(实际中时间还需要继续拉长一点来刻画用户长期的兴趣),行为是“点击”。那么这一个特征构造语句就可以翻译成三个不同的特征:分别是最近一天,三天和七天用户对每个Item的点击次数;时间序列上User对Item是否有重复的行为用来刻画和区分哪些Item是对User有深度吸引力的,如果在一段时间上只发生了一次行为,那么很可能User对这个Item并没有兴趣,只是随便看看;时间序列上User对Item是否有行为,用来刻画User过去某一段时间用户的关注点在哪里,对哪些是可能喜欢的,和上面的一条特征的区别在于可以涵盖用户可能比较感兴趣的Item并且这样用户兴趣特征也会更加丰富。

2)时间特征:

时间特征从三个角度(最近时间,行为频度,行为稳定性)来刻画用户对于Item的兴趣在不同时间上的活跃度。比如,User对Item的最后行为时间,可以翻译成一个时间特征,可以将这个时间进行归一化为一个0---1的标量,越接近于1表示User对这个Item具有越强的新鲜度;User对某个Item的平均行为时间间隔用来刻画User对Item的活跃频率,时间间隔越小说明对用户的吸引力越大。User对Item的行为时间间隔方差可以用来刻画User对Item的喜好的稳定性。

3)趋势特征:

趋势特征主要刻画用户对某个Item的兴趣趋势。比如,User一天对Item的行为次数/User三天对Item的行为次数的均值,表示短期User对Item的热度趋势,大于1表示活跃逐渐在提高;三天User对Item的行为次数的均值/七天User对Item的行为次数的均值表示中期User对Item的活跃度的变化情况;七天User对Item的行为次数的均值/ 两周User对Item的行为次数的均值表示“长期”(相对)User对Item的活跃度的变化情况。

User特征:

User特征主要包括用户的属性特征以及从多个方面刻画用户的“活跃度”,User类型的特征构造方法如图-3所示:

图-3  User类型的特征构造

时间序列的统计特征:

主要从三个维度(User总活跃,用户深度活跃,用户对于Item的覆盖度)来刻画用户的活跃。比如,时间序列上User行为次数总和,在划分成三个时间细粒度的情况下,可以翻译成三个特征,分别是一天,三天和七天User的行为总和,来表示User在当前时间段上的活跃。时间序列上User重复行为次数用来刻画用户真实的活跃深度。时间序列上User有行为的Item的数量,可以用来刻画用户的活跃广度,来表示用户是否有足够的意愿尝试新的Item。

1)时间特征:

主要从三个角度(最近时间,行为频度,行为稳定性)来刻画用户的活跃度。比如,User最后行为时间,时间越接近当前时间说明User的活跃度越强;User的平均行为时间间隔用来刻画User的活跃度,时间间隔越小说明User的活跃度越强。User的行为时间间隔方差可以用来刻画User活跃的稳定性。

2)趋势特征:

趋势特征用来刻画User的活跃趋势。比如,User一天的行为次数/User三天的行为次数的均值,表示短期User活跃趋势,大于1表示活跃逐渐在提高;三天User的行为次数的均值/七天User的行为次数的均值表示中期User的活跃趋势;七天User的行为次数的均值/ 两周User的行为次数的均值表示“长期”(相对)User的活跃趋势。

3)属性特征:

主要用来刻画用户的一些属性特征包括性别、年龄、学历以及使用机型等。

Item特征

Item特征主要包括Item的属性特征以及从多个方面刻画Item的“热度”,Item类型的特征构造方法如图-4所示:

图-4  Item类型特征构造

1)时间序列的统计特征:

从三个维度(Item的行为热度,热度趋势和时间间隔)来刻画Item的热度。比如,时间序列上Item行为次数总和,在划分成三个时间细粒度的情况下,可以翻译成三个特征,分别是一天,三天和七天Item的行为总和,来表示Item在当前时间段上的热度。时间序列上Item被重复点击次数用来刻画Item真实的热度深度,尤其在APP的推荐上,重复的使用或者点击说明当前APP对用户的吸引力越强。时间序列上和当前Item发生行为的User的数量(去重)刻画了Item的热度的广度。时间序列上Item的点击和曝光的比值(User不去重)---CTR,刻画了Item在相同曝光下被点击的概率。时间序列上Item的点击和曝光的比值(User去重)---CTR,刻画了Item在相同曝光下被点击的概率,剔除了某些特殊情况某个User对某个Item的行为过于集中的情况。

2)时间特征:

主要从三个角度(最近时间,行为频度,行为稳定性)来刻画Item的热度。比如,Item最后行为时间,表示Item的最近活跃;Item的平均行为时间间隔用来刻画Item的热度,时间间隔越小说明的热度越高。Item的行为时间间隔方差可以用来刻画Item热度的稳定性。

3)趋势特征:

主要刻画Item的热度和CTR的趋势。比如,Item一天的行为次数/Item三天的行为次数的均值,表示短期Item的热度趋势,大于1表示热度逐渐在提高;三天Item的行为次数的均值/七天Item的行为次数的均值表示中期Item的热度趋势;七天Item的行为次数的均值/ 两周Item的行为次数的均值表示“长期”(相对)Item的热度趋势。另外一种特征表示CTR的趋势:其中一天的Item的CTR / 三天Item的CTR表示“短期”Item的CTR趋势信息。

4)属性特征:

主要用来刻画Item的一些属性特征主要包括所属的类别。

User和Item之间的属性分布特征:

主要通过计算在不同时间段上User和Item之间的行为的统计特征:如果当前的User的属性包括:性别、年龄和Device,Item的属性包括:Item_id和类别,那么特征构造方法如图-5所示:

图-5  User和Item之间属性分布特征构造

1)时间序列上Item在Age的分布特征:

通过计算Item在年龄段上的行为数量(User不去重和不去重)来刻画Item在不同年龄段上的热度;Item在年龄段上的行为数量/Item总的行为数量来表示User在年龄上的热度分布;Item在不同年龄段上的点击和Item在相应的年龄段上的曝光之间的比值来刻画Item在不同的年龄段上的CTR。

2)时间序列上Item在Gender的分布特征:

通过计算Item在性别上的行为数量(User不去重和不去重)来刻画Item在不同性别上的热度;Item在性别上的行为数量/Item总的行为数量来表示User在性别上的热度分布;Item在不同性别上的点击和Item在相应的性别上的曝光之间的比值来刻画Item在不同的性别上的CTR。

3)时间序列上Item在Device的分布特征:

通过计算Item在不同Device上的行为数量(User不去重和不去重)来刻画Item在不同Device上的热度;Item在不同Device上的行为数量/Item总的行为数量来表示User在Device上的热度分布;Item在不同Device上的点击和Item在相应的Device上的曝光之间的比值来刻画Item在不同的Device上的CTR。

4)时间序列上User在ItemType上的分布特征:

通过计算User在不同的ItemType上的行为数量来刻画Use对不同的ItemType的喜好,计算User在不同的ItemType上是否有行为来刻画在时间段上User是否对当前的Item的类型感兴趣,计算User的行为在不同的Item上的分布来刻画对不同的ItemType的喜好程度。User在一段时间内,是否在ItemType上有重复行为,来刻画用户是否对当前ItemType深度感兴趣。

5)时间序列上ItemType在Age上的分布特征:

通过计算ItemType在不同年龄段上的行为数量(User不去重和不去重)来刻画ItemType在不同年龄段上的热度;ItemType在不同年龄段上的行为数量/ItemType在年龄段上的用户数量来刻画当前ItemType对这个年龄段的User的吸引程度;ItemType在不同年龄段上的点击和ItemType在相应的年龄段上的曝光之间的比值来刻画ItemType在不同的年龄段上的CTR。

6)时间序列上ItemType在Gender上的分布特征:

通过计算ItemType在不同性别上的行为数量(User不去重和不去重)来刻画ItemType在不同性别上的热度;ItemType在不同性别上的行为数量/ItemType在当前性别上的行为用户数量来刻画当前ItemType对这个性别的User的吸引程度;ItemType在不同性别上的点击和ItemType在相应的性别上的曝光之间的比值来刻画ItemType在不同的性别上的CTR。

上面列举了一些常见属性之间的分布特征,都是User针对Item或者Item针对User的统计分布,这些只是大部分场景中会出现的场景,在具体的业务中可以根据实际可以获取到的属性结合和样本之间的相关性来进行建模。

特征选择:

在实际的业务中,首先需要思考的是如何正确的构建样本对,在恰当的样本对构造的基础上思考和样本标签具有相关性的因素,这些因素包括用户和物品侧,找到这些因素之后才是特征构建,不同的场景和算法情况下需要不同的特征选择:比如说游戏推荐中活跃时长、付费意愿很重要,而弱化了在性别上的分布,因为游戏属于用户粘性比较大的类型,在商品推荐中性别分布和浏览、加购物车行为则同等重要,因为用户的性别和用户之间的兴趣有很强的相关性;对于不同的算法同样也需要不同的特征体系,对于逻辑回归这种解释性很强的线性模型,通常需要根据建模场景选择特征的细粒度,然后生成和样本具有相关性的特征,获取相关性最直接的方法是对特征进行特征交叉,而对于树模型或者FM模型,理论上则不需要进行特征交叉,因为模型本身就具有了特征的交叉能力。总之,合适模型加上适配的特征特征体系才能获得较好的效果。

小结:

特征工程通常在算法调优中占据了大部分的时间,本文旨在通过梳理推荐系统中常用的特征构造方法,实现快速的特征构造。本文主要是面向初涉推荐系统的同学,可以快速构造一些简单有效的特征,同时,本文提到的一些特征构造方法在某些场景下是冗余的,并不能带来新的信息,所以在实际的应用场景中还需要根据需求进行选择。

附录:

整体特征构造框架如图-6所示:

图6 特征构造框架

文章来源于腾讯云开发者社区,点击查看原文