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

GBDT+LR 使用最广泛的场景是CTR点击率预估,即预测当给用户推送的广告会不会被用户点击。

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

思想

GBDT+LR 由两部分组成,其中GBDT用来对训练集提取特征作为新的训练输入数据,LR作为新训练输入数据的分类器。

  1. GBDT首先对原始训练数据做训练,得到一个二分类器,当然这里也需要利用网格搜索寻找最佳参数组合。
  2. 与通常做法不同的是,当GBDT训练好做预测的时候,输出的并不是最终的二分类概率值,而是要把模型中的每棵树计算得到的预测概率值所属的叶子结点位置记为1,这样,就构造出了新的训练数据。

设GBDT有两个弱分类器,分别以蓝色和红色部分表示,其中蓝色弱分类器叶子结点个数为3,红色弱分类器叶子结点个数为2,并且蓝色弱分类器中对0-1 的预测结果落到了第二个叶子结点上,红色弱分类器中对0-1 的预测结果也落到了第二个叶子结点上。那么我们就记蓝色弱分类器的预测结果为[0 1 0],红色弱分类器的预测结果为[0 1],综合起来看,GBDT的输出为这些弱分类器的组合[0 1 0 0 1] ,或者一个稀疏向量(数组)。在一个具有n个弱分类器、共计m个叶子结点的GBDT中,每一条训练数据都会被转换为1*m维稀疏向量,且有n个元素为1,其余m-n 个元素全为0。

aaarticlea/png;base64,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" alt="GBDT+LR">

  1. 新的训练数据构造完成后,下一步就要与原始的训练数据中的label(输出)数据一并输入到Logistic Regression分类器中进行最终分类器的训练。思考一下,在对原始数据进行GBDT提取为新的数据这一操作之后,数据不仅变得稀疏,而且由于弱分类器个数,叶子结点个数的影响,可能会导致新的训练数据特征维度过大的问题,因此,在Logistic Regression这一层中,可使用正则化来减少过拟合的风险,在Facebook的论文中采用的是L1正则化。

实践

采用,lightgbm+lr训练的模式进行训练与测试。具体如下:

1、准备训练数据,配置lightgbm训练参数,假设我们设置100棵树,每棵树64个叶子结点。

2、lightgbm训练预测

# train
gbm = lgb.train(params,
lgb_train,
num_boost_round=100,
valid_sets=lgb_train) print('Save model...')
# save model to file
gbm.save_model('model.txt') print('Start predicting...')
# predict and get data on leaves, training data
y_pred = gbm.predict(X_train, pred_leaf=True)

这里返回训练数据在训练好的模型里预测结果所在的每棵树中叶子节点的位置(索引),形式为样本个数*100的二维数组。

3、构造Ont-hot数组作为新的训练数据

这里并没有使用sklearn中的OneHotEncoder(),也没有使用pandas中的get_dummies(),而是手工创建一个One-hot数组。

transformed_training_matrix = np.zeros([len(y_pred), len(y_pred[0]) * num_leaf],
dtype=np.int64) # N * num_tress * num_leafs
for i in range(0, len(y_pred)):
temp = np.arange(len(y_pred[0])) * num_leaf + np.array(y_pred[i])
transformed_training_matrix[i][temp] += 1

先构造一个One-hot数组,通过把每棵树的起点索引组成一个列表(这代码里就是 np.arange(len(y_pred[0])) * num_leaf),再加上由落在每棵树叶子节点的索引组成的列表(np.array(y_pred[i])),就得到了往二维零数组里插入元素的索引信息。

4、lr训练预测

lm = LogisticRegression(penalty='l2',C=0.05) # logestic model construction
lm.fit(transformed_training_matrix,y_train) # fitting the data
y_pred_test = lm.predict_proba(transformed_testing_matrix) # Give the probabilty on each label

使用sklearn接口训练即可。

Q&A

可以用RF或者XGB吗?

RF也是多棵树,但从效果上有实践证明不如GBDT。且GBDT前面的树,特征分裂主要体现对多数样本有区分度的特征;后面的树,主要体现的是经过前N颗树,残差仍然较大的少数样本。优先选用在整体上有区分度的特征,再选用针对少数样本有区分度的特征,思路更加合理,这应该也是用GBDT的原因。

可以用FM吗?

使用FM算法代替LR,可以解决了Logistic Regression的模型表达效果及高维稀疏矩阵的训练开销较大的问题。但是因为采用FM对本来已经是高维稀疏矩阵做完特征交叉后,新的特征维度会更加多,并且由于元素非0即1,新的特征数据可能也会更加稀疏。

我们需要再次回到GBDT构造新训练数据这里。当GBDT构造完新的训练样本后,我们要做的是对每一个特征做与输出之间的特征重要度评估并筛选出重要程度较高的部分特征,这样,GBDT构造的高维的稀疏矩阵就会减少一部分特征,也就是说得到的稀疏矩阵不再那么高维了。之后,对这些筛选后得到的重要度较高的特征再做FM算法构造交叉项,进而引入非线性特征,继而完成最终分类器的训练数据的构造及模型的训练。

GBDT与LR融合方案

AD ID类特征在CTR预估中是非常重要的特征,直接将AD ID作为feature进行建树不可行,故考虑为每个AD ID建GBDT树。但互联网时代长尾数据现象非常显著,广告也存在长尾现象,为了提升广告整体投放效果,不得不考虑长尾广告。在GBDT建树方案中,对于曝光充分训练样本充足的广告,可以单独建树,发掘对单个广告有区分度的特征,但对于曝光不充分样本不充足的长尾广告,无法单独建树,需要一种方案来解决长尾广告的问题。

综合考虑方案如下,使用GBDT建两类树,非ID建一类树,ID建一类树。

1)非ID类树:不以细粒度的ID建树,此类树作为base,即便曝光少的广告、广告主,仍可以通过此类树得到有区分性的特征、特征组合。

2)ID类树:以细粒度 的ID建一类树,用于发现曝光充分的ID对应有区分性的特征、特征组合。如何根据GBDT建的两类树,对原始特征进行映射?以如下图3为例,当一条样本x进来之后,遍历两类树到叶子节点,得到的特征作为LR的输入。

参考:

CTR预估(二)--LR与GBDT融合方案

GBDT+LR算法解析及Python实现

Github

个性化排序算法实践(四)——GBDT+LR的更多相关文章

  1. 个性化排序算法实践(五)——DCN算法

    wide&deep在个性化排序算法中是影响力比较大的工作了.wide部分是手动特征交叉(负责memorization),deep部分利用mlp来实现高阶特征交叉(负责generalizatio ...

  2. 个性化排序算法实践(三)——deepFM算法

    FM通过对于每一位特征的隐变量内积来提取特征组合,最后的结果也不错,虽然理论上FM可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合.对于高阶特征组合来说,我们很自然想 ...

  3. 个性化排序算法实践(二)——FFM算法

    场感知分解机(Field-aware Factorization Machine ,简称FFM)在FM的基础上进一步改进,在模型中引入类别的概念,即field.将同一个field的特征单独进行one- ...

  4. 个性化排序算法实践(一)——FM算法

    因子分解机(Factorization Machine,简称FM)算法用于解决大规模稀疏数据下的特征组合问题.FM可以看做带特征交叉的LR. 理论部分可参考FM系列,通过将FM的二次项化简,其复杂度可 ...

  5. 个性化召回算法实践(四)——ContentBased算法

    ContentBased算法的思想非常简单:根据用户过去喜欢的物品(本文统称为 item),为用户推荐和他过去喜欢的物品相似的物品.而关键就在于这里的物品相似性的度量,这才是算法运用过程中的核心. C ...

  6. java排序算法(四):冒泡排序

    java排序算法(四):冒泡排序 冒泡排序是计算机的一种排序方法,它的时间复杂度是o(n^2),虽然不及堆排序.快速排序o(nlogn,底数为2).但是有两个优点 1.编程复杂度很低.很容易写出代码 ...

  7. Java排序算法(四)希尔排序2

    Java排序算法(四)希尔排序2 希尔排序移步法:分组+直接插入排序组合 一.测试类SortTest import java.util.Arrays; public class SortTest { ...

  8. 机器学习算法总结(四)——GBDT与XGBOOST

    Boosting方法实际上是采用加法模型与前向分布算法.在上一篇提到的Adaboost算法也可以用加法模型和前向分布算法来表示.以决策树为基学习器的提升方法称为提升树(Boosting Tree).对 ...

  9. 推荐系统实践 0x0d GBDT+LR

    前一篇文章我们介绍了LR->FM->FFM的整个演化过程,我们也知道,效果最好的FFM,它的计算复杂度已经达到了令人发指的\(n^2k\).其实就是这样,希望提高特征交叉的维度来弥补稀疏特 ...

随机推荐

  1. [LeetCode] 401. Binary Watch 二进制表

    A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...

  2. 主机与虚拟机Oracle VM VirtualBox不能拖动复制的解决办法

    先将虚拟机系统关机,然后打开Oracle VM VirtualBox管理器: 第一步: 常规高级里共享粘贴板已经选中双向 第二步: 虚拟机设置-存储-控制器SATA(或IDE)-勾选"使用主 ...

  3. 【视频开发】OpenCV中Mat,图像二维指针和CxImage类的转换

    在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...

  4. IO多路复用(select、poll、epoll)介绍及select、epoll的实现

    IO多路复用(select.poll.epoll)介绍及select.epoll的实现 IO多路复用中包括 select.pool.epoll,这些都属于同步,还不属于异步 一.IO多路复用介绍 1. ...

  5. POJ 1014 Dividing(入门例题一)

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: Description Marsha and Bill own ...

  6. 常用Tables控件介绍(二)

    初始化:1.使用现有表单创建数据表格,定义在HTML中的字段和数据 2.使用现有的table创建数据表格,定义在HTML中的字段 3.使用JS创建数据库表格 一.初始化后,根据单元格内的值,修改显示内 ...

  7. AVR单片机教程——数字输出

    从上一篇教程中我们了解到,按键与开关的输入本质上就是数字信号的读取.这一篇教程要讲的是,控制LED的原理是数字信号的输出.数字IO是单片机编程之有别于桌面编程的各项内容中最简单.最基础的. 在讲数字信 ...

  8. 【scratch3.0教程】1.1 走进编程世界

    第一章 认识Scratch 第1课   走进编程世界 大家认识下图中的人物吗? 史蒂夫·乔布斯             比尔·盖茨 ●Elon Musk,特斯拉.Space X火箭公司创始人,9岁学习 ...

  9. docker-compose 单机容器编排

    docker-compose用来在单机上编排容器(定义和运行多个容器,使容器能互通) docker-compose将所管理的容器分为3层结构:project  service  container d ...

  10. 解析:让你弄懂redux原理

    作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Redux是JavaScript状态容器,提供可预测化的状态管理. 在实际开发中,常 ...