FM在特征组合中的应用
Posted cxt618
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FM在特征组合中的应用相关的知识,希望对你有一定的参考价值。
原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun
特征组合
x1年龄 | x2北京 | x3上海 | x4深圳 | x5男 | x6女 | |
用户1 | 23 | 1 | 0 | 0 | 1 | 0 |
用户2 | 31 | 0 | 0 | 1 | 0 | 1 |
如上例特征X有6个维度,年龄是连续值,城市和性别用one-hot表示,假设我们用最简单的线性拟合来预测y值。
$\\hat{y}=w_0+\\sum_{i=1}^n{w_ix_i}$
实际中“北京的男性用户”、“上海的女性用户”这种组合特征可能是有用的,即 $x_i,x_j$( $x_i,x_j$ 都是one-hot特征)同时为1时可能是一个很有用的特征,这种组合特征是 $x_i$ 和 $x_j$ 的线性组合所无法表示的。这样一来乘积 $x_i$ 就成一个新的特征。为了不错过任何一个这种可能有用的组合特征,我们穷举所有的i,j组合,把 $x_ix_j, 1\\le{i}\\le{n}, i<j\\le{n}$ 都加到特征里面去,即使其中某些 $x_i$ 不是one-hot特征或者某些 $x_ix_j$ 不是有用的特征,都没关系,经过大量样本的训练,模型会把那些无用的特征的系数训练为0。
Factorization Machines
由于二次项系数$w_{ij}$,我们额外引入$\\frac{n^2}{2}$个参数需要训练。有没有什么办法可以减少参数?再来观察二次项系数矩阵$W_{n\\times n}$,它是对称的方阵$w_{ij}=w_{ji}$,同时它是稀疏的,因为绝大部分的组合特征都是无用的,所以其系数应该为0。可以对$W_{n\\times n}$进行矩阵分解$W_{n\\times n}=V_{n\\times k}V_{n\\times k}^T$,即$w_{i,j}=<v_i,v_j>$。其中$k\\ll n$,本来需要训练的n×n个参数,现在只需要训练n×k个。
$\\hat{y}=w_0+\\sum_{i=1}^n{w_ix_i}+\\sum_i^n{\\sum_{j=i+1}^n{<v_i,v_j>x_ix_j}}$
$<v_i,v_j>=\\sum_{f=1}^k{v_{if}v_{jf}}$
根据x计算$\\hat{y}$的时间复杂度是$O(kn^2)$
以上是关于FM在特征组合中的应用的主要内容,如果未能解决你的问题,请参考以下文章
论文研读1.0 基于神经网络与因子分解机的点击率预估应用研究(陈检)