CTR预估-GBDT与LR实现

1.来源

  本质上 GBDT+LR 是一种具有 stacking 思想的二分类器模型,所以可以用来解决二分类问题。这个方法出自于 Facebook 2014 年的论文 Practical Lessons from Predicting Clicks on Ads at Facebook 。

2.使用场景

  GBDT+LR 使用最广泛的场景是 CTR 点击率预估,即预测当给用户推送的广告会不会被用户点击。点击率预估模型涉及的训练样本一般是上亿级别,样本量大,模型常采用速度较快的 LR。但 LR 是线性模型,学习能力有限,此时特征工程尤其重要。现有的特征工程实验,主要集中在寻找到有区分度的特征、特征组合,折腾一圈未必会带来效果提升。GBDT 算法的特点正好可以用来发掘有区分度的特征、特征组合,减少特征工程中人力成本。

3.CTR的流程

  主要包括两大部分:离线部分、在线部分,其中离线部分目标主要是训练出可用模型,而在线部分则考虑模型上线后,性能可能随时间而出现下降,若出现这种情况,可选择使用 Online-Learning 来在线更新模型:

3.1离线部分

  • 数据收集:主要收集和业务相关的数据,通常会有专门的同事在 app 位置进行埋点,拿到业务数据
  • 预处理:对埋点拿到的业务数据进行去脏去重;
  • 构造数据集:经过预处理的业务数据,构造数据集,在切分训练、测试、验证集时应该合理根据业务逻辑来进行切分;
  • 特征工程:对原始数据进行基本的特征处理,包括去除相关性大的特征,离散变量 one-hot,连续特征离散化等等;
  • 模型选择:选择合理的机器学习模型来完成相应工作,原则是先从简入深,先找到 baseline,然后逐步优化;
  • 超参选择:利用 gridsearch、randomsearch 或者 hyperopt 来进行超参选择,选择在离线数据集中性能最好的超参组合;
  • 在线 A/B Test:选择优化过后的模型和原先模型(如 baseline)进行 A/B Test,若性能有提升则替换原先模型;

3.2 在线部分

  • Cache & Logic:设定简单过滤规则,过滤异常数据;
  • 模型更新:当 Cache & Logic 收集到合适大小数据时,对模型进行- pretrain+finetuning,若在测试集上比原始模型性能高,则更新 model server 的模型参数;
  • Model Server:接受数据请求,返回预测结果;

猜你喜欢

转载自www.cnblogs.com/tianqizhi/p/12012677.html