gbdt lr
gbdt+lr是facebook提出在线广告模型,我们知道LR之前在广告和推荐系统由于其快速的计算而被广泛使用,使用由于lr是线性模型,其模型表现能力不强,需要做大量的特征工程。
facebook提出提出使用决策树进行特征embedding。
为了提升线性分类器的准确度,有两种方法进行特征变换:
-
对于连续特征。先进行离散化bin,然后把bin的编号作为离散型特征。这样的话,线性模型可以分段的学习到一个非线性的映射,在每一段内的映射是不变的。另外,对于bin边界的学习非常重要
-
对于离散特征。做笛卡尔积,生成的是tuple input features。笛卡尔积穷举了所有的特征组合,其中也包含部分没用的组合特征,不过可以筛选出来。
提升决策树(boosted decision tree)就可以很方便很好的实现上面我们说的这种非线性和tuple特征变换。对于一个样本,针对每一颗树得到一个类别型特征。该特征取值为样本在树中落入的叶节点的编号。举例来说:
上图中的提升决策树包含两棵子树,第一棵树包含3个叶节点,第二棵树包含2个叶节点。输入样本x,在两棵树种分别落入叶子节点2和叶子节点1。那么特征转换就得到特征向量[0 1 0 1 0]。也就是说,把叶节点编号进行one-hot编码。
那么, 怎么样直观的理解这种特征变化:- 看做是一种有监督的特征编码。把实值的vector转换成紧凑的二值的vector。
- 从根节点到叶节点的一条路径,表示的是在特征上的一个特定的规则。所以,叶节点的编号代表了这种规则。表征了样本中的信息,而且进行了非线性的组合变换。
- 最后再对叶节点编号组合,相当于学习这些规则的权重。
核心思想
- 数据更新
由于推荐和广告等相关的问题,是一个动态的环境,需要对模型进行实时更新,所有对于lr进行在线学习和更新,gbdt可以每天或者几天更新一次。
- 在线学习的学习率如何设置
一般情况有很多学习率更新的方法,可以根据当前系统进行实验得到最好的学习率设置策略。论文中给出一下几种方法:
- Per-coordinate learning rate:
η t , i = α β + ∑ j = 1 t ▽ j , i 2 \eta_{t,i}=\frac{\alpha}{\beta+\sqrt{\sum_{j=1}^{t}}\bigtriangledown_{j,i}^2} ηt,i=β+∑j=1t▽j,i2α
其中, α \alpha α, β \beta β是两个超参数.- Per-wei