腾讯QQ大数据:机器学习建模问题中的特征构造方法
作者:媒体转发 时间:2018-08-08 16:34
导语 在机器学习建模问题中,合适特征的构造对于模型的性能至关重要,看到很多同学介绍特征工程,包括特征的预处理和特征筛选等,这些非常重要,但是特征预处理和特征筛选的前提是要有基础特征,而这些特征从哪里来,又如何构造?现在总结一下在推荐系统中比较通用的特征构造方法。
场景分析:
推荐场景一般可以抽象为:内容(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)趋势特征:


