推荐系统总结(二)

1、建立特征工程

  机器学习模型的能力边界在于对数据的拟合泛化,数据及表达数据的特征本身就决定了机器学习模型效果的上限,而模型和算法只是在逼近这个上限。因此,特征工程 对推荐系统效果提升的作用是无法替代的。

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

  推荐系统中,特征的本质就是对某个行为过程相关信息的抽象表达。推荐系统过程中的某个行为转换成某种数学形式才能被机器学习模型所学习。所以必须将这些行为过程中的信息以特征的形式抽取出来,用多个维度的特征去表达这一行为。

  构建推荐系统特征工程的原则尽可能地让特征工程抽取出的一组特征能够保留推荐环境及用户行为过程中的所有有用信息,尽量摒弃冗余信息。

1.2 推荐系统中的常用特征

  1. 用户行为数据:显性反馈行为 和 隐性反馈行为 , 人与物之间的联系。
  2. 用户关系数据:人与人之间的联系,分为“强关系” 和 “弱关系”。
  3. 属性、标签类数据:描述用户或者物品的特征。可以是用户也可以是物品。
  4. 内容类数据:可以看做是属性类标签型特征的延伸,相比标签类特征来说内容数据往往是大段的文字类描述。
  5. 上下文信息:目的是尽可能地保存推荐行为发生场景的信息(在傍晚看烂漫电影,在深夜看惊悚恐怖电影)。
  6. 统计类特征:通过统计方法计算出来的特征,例如,历史CTR等等。本质上是一些粗颗粒度的预测指标。
  7. 组合类特征:将不同特征组合后生成的新特征。

1.3 常用的特征处理方法

  从 连续性特征类别型特征 去考虑特征处理方法:

1.3.1 连续性特征

  包括像用户年龄、统计类特征、物品的发布时间等数值型特征,这类型的特征处理使用归一化、离散化、加非线性函数等方法。

  1. 归一化:统一各特征的量纲,将连续特征归一化到 [ 0 , 1 ] [0,1] [0,1]之间。
  2. 离散化:将原来的连续值进行分桶,防止连续值带来的过拟合现象及特征值分布不均的现象。
  3. 加非线性函数:更好的捕获特征与优化目标之间的线性关系,增强模型的表达能力。

1.3.2 类别型特征

  典型例子是用户的行为历史数据、属性标签类数据等。最常用的方法就是使用one-hot编码将其转换为数值向量。在Embedding技术成熟之后,由似稀疏向量转为稠密Embedding向量,形成最后的特征。

2、特征工程的构建

2.1 一些需要考虑到的问题

  1. 考虑时间对用户购买行为的影响,用户在一周之前的行为对考察日是否购买的影响已经很小,故而只考虑距考察日一周以内的特征数据。

  2. 购买行为可能具有一定的周期性,猜测购买行为周期可能为一周,但1212日为异常期,所以舍去1212日附近的日期的数据,最后将一个月的时间划分为3周。其中11.1812.0512.09 是验证数据集。

    part 1 - train: 11.22~11.27 -> 11.28;
    part 2 - train: 11.29~12.04 -> 12.05;
    part 3 - prediction: 12.13~12.18 (-> 12.19);
    

    其中 part 1part 2可作为模型训练和验证数据集,part 3为测试数据集;

  3. 针对当前业务背景,考虑从useritemitem_category三个基本维度及其组合入手进行特征构建,简称U、I、C

  4. 该问题的本质就是预测U-I是否发生购买行为的(label = {0,1})二分类问题,最终的结果特征数据就是要生成U-I字典形式组成的样本集。由于样本几千万条非常庞大,所以只考虑一周之内的U-I操作。

2.2 构建特征工程

  这里将所需构建的特征分为六大类:U、I、C、UI、UC、IC。对每类分别结合行为次数时间排序等视角设计特征。考虑到样本规模,特征数量不宜太少,设计了约100个特征来进行首次的数据处理任务,具体的特征选择及定义见下表:

特征名称所属类别特征含义特征作用特征数量
u_b_count_in_n(n=1/3/6)U用户在考察日前n天的行为总数计数反映了user_id的活跃度(不同时间粒度:最近1天/3天/6天)3
u_bi_count_in_n(i=1/2/3/4,n=1/3/6)U用户在考察日前n天的各项行为计数反映了user_id的活跃度(不同时间粒度),反映了user_id的各项操作的活跃度,折射出user_id的购买习惯12
u_b4_rateU用户的点击购买转化率反映了用户的购买决策操作习惯1
u_b4_diff_hoursU用户的点击购买平均时差反映了用户的购买决策时间习惯1
i_u_count_in_nI商品在考察日前n天的用户总数计数反映了item_id的热度(用户覆盖性)3
i_b_count_in_nI商品在考察日前n天的行为总数计数反映了item_id的热度(用户停留性)3
i_bi_count_in_nI商品在考察日前n天的各项行为计数反映了item_id的热度(用户操作吸引),折射出item_id产生的购买习惯特点12
i_b4_rateI商品的点击购买转化率反映了商品的购买决策操作特点1
i_b4_diff_hoursI商品的点击购买平均时差反映了商品的购买决策时间特点1
c_u_count_in_nC类别在考察日前n天的用户总数计数反映了item_category的热度(用户覆盖性)3
c_b_count_in_nC类别在考察日前n天的行为总数计数反映了item_category的热度(用户停留性)3
c_bi_count_in_nC类别在考察日前n天的各项行为计数反映了item_category的热度(用户操作吸引),包含着item_category产生的购买习惯特点12
c_b4_rateC类别的点击购买转化率反映了item_category的购买决策操作特点1
c_b4_diff_hoursC类别的点击购买平均时差反映了item_category的购买决策时间特点1
ic_u_rank_in_cIC商品在所属类别中的用户人数排序反映了item_id在item_category中的热度排名(用户覆盖性)1
ic_b_rank_in_cIC商品在所属类别中的行为总数排序反映了item_id在item_category中的热度排名(用户停留性)1
ic_b4_rank_in_cIC商品在所属类别中的销量排序反映了item_id在item_category中的热度排名(销量)1
ui_b_count_in_nUI用户-商品对在考察日前n天的行为总数计数反映了user_id - item_id的活跃度3
ui_bi_count_in_nUI用户-商品对在考察日前n天的各项行为计数反映了user_id - item_id的活跃度,反映了user_id - item_id的各项操作的活跃度,对应着user_id - item_id的购买习惯12
ui_bi_last_hoursUI用户-商品对各项行为上一次发生距考察日的时差反映了user_id - item_id的活跃时间特征4
ui_b_count_rank_in_n_in_uUI用户商品对的行为在用户所有商品中的排序反映了user_id对item_id的行为偏好3
ui_b_count_rank_in_n_in_ucUI-UC用户-商品对的行为在用户-类别对中的排序反映了user_id对item_category中的各个item_id的行为偏好3
uc_b_count_in_nUC用户-类别对在考察日前n天的行为总数计数反映了user_id - item_category的活跃度3
uc_bi_count_in_nUC用户-类别对在考察日前n天的各项行为计数反映了user_id -item_category的活跃度,反映了user_id -item_category的各项操作的活跃度,对应着user_id -item_category的购买习惯12
uc_bi_last_hoursUC用户-类别对各项行为上一次发生距考察日的时差反映了user_id -item_category的活跃时间特征4
uc_b_count_rank_in_n_in_uUC用户-类别对的行为在用户所有商品中的排序反映了user_id对item_category的行为偏好3

  这些特征数值尺度不一,所以对尺度敏感的模型在使用前需要进行归一化处理;有些特征是离散型(如排序特征),有的特征存在缺值(如时间差特征),这些都要根据具体的模型来进行预处理。

  上述行为特征的提取,可以通过python中的pandas模块完成。

3、总结

  本文首先简单的论述了搭建推荐系统中建立特征工程所要遵循的原则和推荐系统中需要常用的特征和常用的特征处理的办法,包括连续性特征和类别型特征。然后按照上述论述的构建特征工程所要遵循的原则和特征处理的方法对阿里天池数据集进行特征提取。

  基于上述U-I-C-UI-UC-IC这种规则对数据进行特征工程构建后,可将原始数据划分为多个csv文件,每个文件中每行的数据表示如下表:

数据索引特征标签
一行样本数据user_id, item_id约100个特征数据分类结果(0-未购买,1-购买)

  得出了我们所需要的样本集之后,下面就可以进行模型的训练和预测了。下篇博文讲述通过最优化GBDT模型中的参数,对1219日的用户购买情况进行预测, to be continued…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值