CTR模型

ctr

ctr(广告点击率)与cvr(广告转化率)是在推荐系统中的重要概念。CTR预估正样本为站内点击的用户-商品记录,负样本为展现但未点击的记录;CVR正样本为站内支付(发生转化)的用户-商品记录,负样本为点击但未支付的记录。
CTR和CVR预估模型为线下估计,用于线上测试,特征主要分为三类:用户相关特征包括年龄、性别、职业、兴趣、品类偏好、浏览/购买品类、近期点击量、购买量、消费额等,商品相关特征包括所属品类、销量、价格、评分、历史CTR/CVR,用户-商品匹配特征包括浏览/购买品类匹配、浏览/购买商家匹配、兴趣偏好匹配等。

Logistic Regression

通常,推荐系统数据为高维离散特征,因此十分适用于logistic regression,具体上可表述为
f ( x ) = 1 1 + e θ T X f(x)=\frac{1}{1+e^{-\theta^TX}}
其优势在于模型简单易于理解,且容易实现分布式计算,另外有Google的FTRL [ 2 ] ^{[2]} 等变种模型,其可统一概括为:LR+正则+特定优化。
但LR模型忽略了特征之间的联系,多个特征之间可能存在交叉关系,因此需要人为构建特征。另外,LR需要将特征离散化、归一化。

GBDT

GBDT [ 3 ] ^{[3]} 是一种梯度提升决策树模型,其优点在于处理连续特征,可以自动选取不同特征进行组合,选取最优分裂特征与分裂点,得到特征重要度排序,并且不需要进行归一化处理。
由于在ctr估计中,大部分特征为离散特征,因此若使用GBDT则需要通过embedding等方式将其处理成连续特征。GBDT的树模型结构特点决定了其不利于挖掘长尾特征,并且相对于DNN来说,其特征组合能力有限。

FM与FFM

FM(Factorization Machine)最早被提出旨在解决稀疏数据下的特征组合问题 [ 5 ] ^{[5]} 。对于categorical类型特征,需要经过独热编码(One-Hot Encoding)转换成数值型特征。One-Hot编码后,特征呈高维稀疏。若直接进行二阶组合,其表达式为
y ( x ) = w 0 + i = 1 n w i x i + i = 1 n j = i + 1 n w i j x i x j y(x)=w_0+\sum^n_{i=1}w_ix_i+\sum^n_{i=1}\sum^n_{j=i+1}w_{ij}x_ix_j
此时,二阶特征参数有 n ( n 1 ) 2 \frac{n(n-1)}{2} 个,且两两之间相互独立,由于特征的高度稀疏,许多 w i j w_{ij} 对应的特征值大部分都是0,难以实现较好的训练,严重影响模型预测结果。
为解决大量参数问题,FM算法采用了矩阵分解的思路。在这里首先介绍一下协同过滤中的矩阵分解。再推荐系统中,用户与商品的关系矩阵为一高维稀疏矩阵。为对矩阵进行分解,考虑奇异值分解(SVD)。定义方阵中特征值与特征向量为
A x = λ x Ax=\lambda x
则A可特征分解为
A = W Σ W 1 A=W\Sigma W^{-1}
其中 W W 为特征向量组合成的 n n 维方阵, \sum 为对角元素为特征值的对角矩阵。当 A A 非方阵时,定义SVD为
A = U Σ V T A=U\Sigma V^T
其中 U U m × m m\times m , Σ \Sigma m × n m\times n , V V n × n n\times n 。在推荐系统中,用户物品关系矩阵 M M 可分解为
M m × n = U m × k Σ k × k V k × n T M_{m\times n}=U_{m\times k}\Sigma _{k\times k}V_{k\times n}^T
其中 k k 是矩阵 M M 中较大的奇异值个数,一般远小于用户数与物品数。但是SVD要求矩阵稠密,传统SVD方法中通常采用全局平均值或用户物品平均值不全缺失值。另外,由于矩阵维数很大,做SVD十分耗时。在实际推荐系统中,评分矩阵 U U 分解为用户与物品矩阵
U = [ u 11 u 1 k u m 1 u m k ] [ i 11 i 1 n i k 1 i k n ] U= \left[ \begin{matrix} u_{11} & \cdots & u_{1k} \\ \vdots & \ddots & \vdots \\ u_{m1} & \cdots & u_{mk} \\ \end{matrix} \right] \left[ \begin{matrix} i_{11} & \cdots & i_{1n} \\ \vdots & \ddots & \vdots \\ i_{k1} & \cdots & i_{kn} \\ \end{matrix} \right]
其中, u x y u_{xy} 可以看作用户 x x 对物品隐藏特质 y y 的热衷程度, i y z i_{yz} 可以看作特质 y y 在物品 z z 上的体现程度,引入预测器
r ^ u i = μ + b i + b u + q i T p u \hat{r}_{ui}=\mu +b_i+b_u+q_i^Tp_u
其中 μ \mu 为所有评分基准, b i b_i b u b_u 分别为物品 i i 和用户 u u 的评分均值相对 μ \mu 的偏移。其优化目标函数为
min b i , b u , q i , p u ( u , i ) K ( r u i μ b i b u q i T p u ) 2 + λ { u ( b u 2 + p u 2 ) + i ( b i 2 + q i 2 ) } \min\limits_{b_i,b_u,q_i,p_u}\sum\limits_{(u,i)\in K}(r_{ui}-\mu -b_i-b_u-q_i^Tp_u)^2+\lambda \{\sum\limits_u(b_u^2+||p_u||^2)+\sum\limits_i(b_i^2+||q_i||^2)\}
采用梯度下降或迭代最小二乘的方法交替更新优化各参数。
而之后的SVD++则是在用户信息上进行了更深层次的挖掘,用户对某个物品有评分行为,该行为事实上隐藏了一定信息,侧面反映了用户的喜好,这样的反映可通过隐式参数形式体现在模型中,得到一个更加精细的模型。
r ^ u i = μ + b i + b u + q i T ( p u + I u 1 2 j I u y i ) \hat{r}_{ui}=\mu +b_i+b_u+q_i^T(p_u+|I_u|^{-\frac{1}{2}}\sum\limits_{j\in I_u}y_i)
同样采用梯度下降方法优化。
回到FM,SVD和SVD++这些模型仅限于单一场景,输入形式也单一(仅限于categorical类变量),而FM通过对输入特征进行变换,同样可实现这些模型特征,且输入为任意实数域数据,具有更强泛用性。通过矩阵分解,FM的模型可变换为
y ( x ) = w 0 + i = 1 n ( w i x i ) + i = 1 n j = i + 1 n ( < v i , v j > x i x j ) y(x)=w_0+\sum\limits_{i=1}^n(w_ix_i)+\sum_{i=1}^n\sum\limits_{j=i+1}^n(<v_i,v_j>x_ix_j)
其中, v i v_i 即特征 x i x_i 的对应的 k k 维的特征向量,此时参数仅有 n × k n\times k 个,远小于之前的 n 2 n^2 个。根据上式,计算复杂度有 k × n 2 k\times n^2 ,因此可对上式进行优化
i = 1 n j = i + 1 n ( < v i , v j > x i x j ) = 1 2 f = 1 k ( ( i = 1 n v i , f x i ) 2 i = 1 n v i , f 2 x i 2 ) \sum_{i=1}^n\sum\limits_{j=i+1}^n(<v_i,v_j>x_ix_j)=\frac{1}{2}\sum\limits_{f=1}^k((\sum\limits_{i=1}^nv_{i,f}x_i)^2-\sum\limits_{i=1}\limits^nv_{i,f}^2x_i^2)
此时,计算复杂度仅有 k × n k\times n ,可以在线性时间内完成预测。所有包含“ x i x_i 的非零组合特征”的样本均可以用来学习 v i v_i ,很大程度上避免了数据稀疏性造成的影响。
作为一个拟合方程,FM可以通过添加MSE损失函数求解回归问题,也可通过添加Hinge/Cross-Entropy损失函数求解分类问题。在进行二分类时,同LR相似,FM输出也需要经过sigmoid变换,之后通过SGD等方法进行模型训练。
另外,在原论文中,也将FM与SVM进行对比。关于SVM的原理,在这里不加详述。对比之下,可以发现SVM的二阶特征交叉参数也是相互独立的,因此在稀疏条件下效果较差。另外,在模型优化上,FM在原始形式下进行优化,而基于kernel的非线性SVM则需要在对偶形式下进行,并且FM模型预测与训练样本相互独立,而SVM则存在部分关系,即支持向量。
FFM(Field-aware Factorization Machine)最早由台大学生Yu-Chin Juan等人借鉴Michael Jahrer的论文中的field概念提出,是FM的升级版。FFM将相同性质的特征归于同一个field中,也就是说同一个categorical特征经过One-Hot编码后的数值特征均可以放于同一个field,如性别、职业等。每一维特征 x i x_i ,针对其他特征的每一种field f j f_j ,都会学会一个隐变量 v i , f j v_{i,f_j} 。假设样本 n n 个特征属于 f f 个field,那么FFM的二次项共有 n f nf 个隐变量。其模型方程为
y ( x ) = w 0 + i = 1 n w i x i + i = 1 n j = i + 1 n < v i , f j , v j , f i > x i x j y(x)=w_0+\sum\limits_{i=1}\limits^nw_ix_i+\sum\limits_{i=1}\limits^n\sum\limits_{j=i+1}\limits^n<v_{i,f_j},v_{j,f_i}>x_ix_j
此时模型复杂度增至 O ( k n 2 ) O(kn^2)
特征处理方面,数值型特征只需分配单独的field编号,如用户评论得分、商品历史CTR/CVR;categorical特征需要One-Hot编码成数值型,产生的特征属于同一field,取值为0或1,如用户性别、年龄段、商品id等;第三类特征如用户浏览/购买品类,有多个品类id且用一个数值衡量用户浏览/购买每个品类商品数量,这类特征按照categorical特征处理,不过非0或1,而是对应数量。
在使用FM、FFM类模型时,需要注意的小细节有:
1.样本归一化。
2.特征归一化。对于categorical类特征,One-Hot编码后取值为0或1,对比其他较大数值型特征时,其在样本中作用几乎可以忽略不计,这是十分不合理的,因此在特征处理时需要将源数值型特征归一化至[0,1]。
3.省略零值特征。零值特征对模型没有任何贡献,因此训练时候省略零值特征,这也是稀疏样本采用FM、FFM模型的优势。

GBDT+(LR,FM,FFM)

已知GBDT更加适合于处理连续型特征,并且本身可以做到特征选择与组合,而LR、FM、FFM等模型更适合于处理离散化特征,因此可以先使用GBDT对稠密连续型特征进行离散化构建特征,将叶子节点值作为LR等模型的新特征,如Facebook在2014年的论文中提到的方法 [ 6 ] ^{[6]} 。这样做可以在一定程度上组合特征,改善人工离散化时候出现的边界问题,减少了人工的工作量。其公式为
X n e w = X + g b d t ( x ) s   n o d e s X_{new}=X+gbdt(x)'s\ nodes
f ( x ) = l o g i s t i c ( l i n e a r ( X n e w ) ) f(x)=logistic(linear(X_{new}))

参考文献:

[1]https://zhuanlan.zhihu.com/p/32689178
[2]Shalev-Shwartz S, Singer Y. A primal-dual perspective of online learning algorithms[J]. Machine Learning, 2007, 69(2-3):115-142.
[3]Friedman J H. Greedy function approximation: A gradient boosting machine.[J]. Annals of Statistics, 2001, 29(5):1189-1232.
[4]https://tech.meituan.com/deep_understanding_of_ffm_principles_and_practices.html
[5]Rendle S. Factorization Machines[C]// IEEE, International Conference on Data Mining. IEEE, 2011:995-1000.
[6]He X, Pan J, Jin O, et al. Practical Lessons from Predicting Clicks on Ads at Facebook[M]. ACM, 2014.

猜你喜欢

转载自blog.csdn.net/Lyteins/article/details/85047573