码迷,mamicode.com
首页 > 其他好文 > 详细

FM在特征组合中的应用

时间:2019-03-27 12:44:00      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:组合   height   ble   北京   计算   style   mil   body   size   

原文来自:博客园(华夏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在特征组合中的应用

标签:组合   height   ble   北京   计算   style   mil   body   size   

原文地址:https://www.cnblogs.com/cxt618/p/10606669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!