1 Logistic Regression(逻辑回归模型)

Logistic Regression是大家非常熟悉的基本算法,其作为经典的统计学习算法几乎统治了早期工业机器学习时代。这是因为其具备简单、时间复杂度低、可大规模并行化等优良特性。在早期的CTR预估中,算法工程师们通过手动设计交叉特征以及特征离散化等方式,赋予LR这样的线性模型对数据集的非线性学习能力,高维离散特征+手动交叉特征构成了CTR预估的基础特征。LR在工程上易于大规模并行化训练恰恰适应了这个时代的要求。

逻辑线性回归模型结构非常简单,通过拟合的方式(主要是多项式拟合)统计数据规律,可解释性比较强,计算复杂度较低且在工程上可以大规模的并行,数据表达式是y = w^Tx+b。但需要依赖人工设计大量的特征,需要一定的背景知识,并且只能够根据设计的特征进行学习对于训练集中没有出现的交叉特征不感知。

逻辑回归模型在推荐系统中的应用与CV跟NLP领域不同的是,推荐系统领域中特征X往往通过one-hot的形式,而不是后来的embedding look-up table。例如下图中有三种特征:性别、年龄段与User Id。图中w表示存储所有可能的特征值。对于当前的用户来说,他的性别,年龄段,ID分别是什么。由于输入的X是0/1的,直接取出对应的w ,并且和b相加。这里只画了用户侧的部分,item侧也是同样的道理。

2 Gradient Boosting Decison Tree(梯度提升决策树)

该模型又叫MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。

其中,算法使用的决策树是回归树而不是分类树。如上图所示:回归树的每一个节点都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化平方误差。也就是被预测出错的人数越多,错的越离谱,平方误差就越大,通过最小化平方误差能够找到最可靠的分枝依据。分枝直到每个叶子节点上人的年龄都唯一或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。

Gradient Boost Decision Tree则是使用迭代多棵回归树来共同决策。当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树,残差的意义如公式:残差 = 真实值 - 预测值 。提升树即是整个迭代过程生成的回归树的累加。

训练集是4个人,A,B,C,D年龄分别是14,16,24,26。样本中有购物金额、上网时长、经常到百度知道提问等特征。Gradient Boost Decision Tree利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。

3 Gradient Boosting Decison Tree(梯度提升决策树)+ LR

Facebook在2014年提出将回归树训练好的模型得到的输入结合LR,前者主要是想通过树模型来巧妙的组合样本的高阶交叉特征,这就不需要通过用户手动设计特征,然后将得到的交叉特征送入到LR中进行模型训练。该模型是两阶段的,也就是说GBDT模型仅仅只是用来做特征交叉,通过GBDT训练模型,得到组合的特征向量。

例如训练了两棵树,每棵树有5个叶子结点,对于某个特定样本来说,落在了第一棵树的第3个结点,此时我们可以得到向量 [0,0,1,0,0] ;落在第二棵树的第4个结点,此时的到向量 [0,0,0,1,0] ;那么最终通过concat所有树的向量,得到这个样本的最终向量 [0,0,1,0,0,0,0,0,1,0] 。将这个向量作为下游LR模型的inputs,进行训练。


永荣带你玩转昇腾
1 声望0 粉丝