0%

Factorization Machines

理论解读

  • 计算公式:
  • 解读: $v_i,v_j 是x_i,x_j 对应的特征向量$,<*,*>是向量内积

具体实现

整体部分

  • FM 是由2部分来实现的,线性部分和交叉项部分。而且其所有的输入均为类别性特征,不存在连续值特征。所以整体实现如下:

整体部分

线性部分

  • 线性部分:该部分的实现主要依赖Embedding 映射,其中offsets部分可以忽略,该部分只对二维的数据起作用,而且用以映射embedding。

线性部分

交叉项部分

  • 交叉项部分:该部分是对交叉项的实现,而且使用了效率最高的实现方式。原公式中交叉项的时间复杂度是$O(kn^2)$,经过简化 时间复杂度可以变成$O(kn)$。这部分网上有大把资料不做赘述。

交叉项部分