• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

推荐系统中融合特征排序两三事

ml admin 4个月前 (06-30) 507次浏览 0个评论 扫描二维码

一般情况下对于推荐输出的召回的候选集进行排序,ltr 排序这个也是大家经常使用的。

lr+gbdt

这个组合在 ctr 预估中已经被广泛使用了,当然在推荐结果的重排序中也发挥着重要的作用。如果直接将构造的特征向量输入到 lr 模型当中,每个特征都是单独的特征,各自之间没有什么联系。其实很多时候特征之间的组合的意义大于特征自身,因此 facebook 使用了 gbdt 对原始输入特征进行特征组合,详见这篇文章有介绍以及代码实现,这种方法现在在业界内已经被广泛的使用了。。。

fm

fm 就是因式分解的方式来实现特征的组合,在我们构造特征的时候会遇到很多的 category 类型的特征,但是我们需要对这些特征重新编码,那么常用的就是 onehot 编码,onehot 编码很简单,但是带来的是超级稀疏的特征向量。假设我们有个 category 有 1000 种可能,那么我们就会产生 1000 维特征向量,其中只有一个值是有值的,其他都是 0,如此如果这样的情出现的较多的化,那么我们最终构造的特征向量是非常稀疏的,那么现在介绍的 FM 就会解决稀疏特征的情况下特征的组合问题。

\(y(\mathbf{x}) = w_0+ \sum_{i=1}^n w_i x_i + \sum_{i=1}^n \sum_{j=i+1}^n w_{ij} x_i x_j \label{eq:poly}\tag{1}\)

在上面的公式中需要学习的参数更多了,尤其是二次项参数学习起来更困难,首先你要保重\(x_i,x_j\)都是非 0,否则对应的权重求解起来是个大问题,但是我们使用 onehot 编码的结果就是特征是稀疏特征向量,那么二次项特征权重的值更难训练了。。。

FM 的思想就是要在二次项上面优化,假设有一个对称矩阵,上面提到的二次项权重就是矩阵中对应的数据,现在我们尝试将这个矩阵分解为两个矩阵相乘,公式如下:

\(\mathbf{W} = \mathbf{V}^T \mathbf{V}\)

那么上述\(w_ij\)可以如下表示

\(w_{ij}=V_i*V_j\)

这样可以解决\(w_ij\)学习的问题

在使用这种方式之后我们需要计算的未知变量的个数下降到 kn 个,k 表示隐含变量的维度,n 是样本的个数。因为任意\(w_ij\)都可以使用的隐含向量的点击乘积计算得到,所以未知的变量就减少很多了,现在是线性程度的变量个数。学习的复杂度在一定程度上下降了很多。

显而易见,前面描述的 y(x)公式是一个通用的拟合方程,可以采用不同的损失函数用于解决回归、二元分类等问题,比如可以采用 MSE(Mean Square Error)损失函数来求解回归问题,也可以采用 Hinge/Cross-Entropy 损失来求解分类问题。当然,在进行二元分类时,FM 的输出需要经过 sigmoid 变换,这与 Logistic 回归是一样的。直观上看,FM 的复杂度是 \(O(kn^2\)。但是,通过下述的等式,FM 的二次项可以化简,其复杂度可以优化到 O(kn)。由此可见,FM 可以在线性时间对新样本作出预测。

\(\sum_{i=1}^n \sum_{j=i+1}^n \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j = \frac{1}{2} \sum_{f=1}^k \left(\left( \sum_{i=1}^n v_{i, f} x_i \right)^2 – \sum_{i=1}^n v_{i, f}^2 x_i^2 \right) \label{eq:fm_conv}\tag{3} \)

我们再来看一下 FM 的训练复杂度,利用 SGD(Stochastic Gradient Descent)训练模型。模型各个参数的梯度如下

\(\frac{\partial}{\partial\theta} y (\mathbf{x}) = \left\{\begin{array}{ll} 1, & \text{if}\; \theta\; \text{is}\; w_0 \\ x_i, & \text{if}\; \theta\; \text{is}\; w_i \\ x_i \sum_{j=1}^n v_{j, f} x_j – v_{i, f} x_i^2, & \text{if}\; \theta\; \text{is}\; v_{i, f} \end{array}\right.\)

上述参数的更新的时间复杂度也是线性的。所以可以得知 FM 是一个高效的特征融合算法。

对于 FM 的改进有 FFM,相比于传统的机器学习方法,google 还提出了 wide and deep 神经网络来实现算法的改进。

后续在继续学习。。


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明推荐系统中融合特征排序两三事
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!