FM模型

作者: 西二旗小豌豆 | 来源:发表于2019-04-19 01:59 被阅读0次

FM模型相比普通的线性模型,多了二阶项,是一个二阶多项式模型。

y=w_0+\sum_{i=1}^n w_ix_i + \sum_{i=1}^{n-1} \sum_{j=i+1}^{n}w_{ij}x_ix_j

从实际经验来看,线上有很多id类特征,categorical特征,这种特征是很稀疏的,对于求解w具有一定的困难。所以FM模型引入了辅助向量v
v_i = (v_{i1},v_{i2},v_{i3}......v_{ik}) 来表示上式中的w权重。


引入v向量后,我们可以推导出: FM推导公式

所以就可以愉快地优化了~~

代码实现

fm代码实现起来比较简单

 def build_model(self):
        self.x = tf.placeholder(tf.float32, shape=[None, self.input_dim])
        self.y = tf.placeholder(tf.float32, shape=[None, 1])

        self.w0 = tf.Variable(np.zeros(1), name="w0", dtype=tf.float32)
        self.w = tf.Variable(np.zeros(self.input_dim), name="linear_weight", dtype=tf.float32)
        self.v = tf.Variable(tf.random_normal(shape=[self.input_dim, self.v_dim], mean=0, stddev=0.01), name='pair_weight', dtype=tf.float32)

        # 根据fm公式计算模型输出
        linear_items = tf.add(self.w0, tf.reduce_sum(tf.multiply(self.w, self.x), axis=1, keep_dims=True))

        x_square = tf.square(self.x)
        v_square = tf.square(self.v)
        pairwise_items = 0.5 * tf.reduce_sum(tf.square(tf.matmul(self.x, self.v)) - tf.matmul(x_square, v_square),
                                             axis=1, keep_dims=True)
        y_hat = tf.add(linear_items, pairwise_items)

        with tf.name_scope("loss"):
            self.loss = tf.reduce_mean(tf.square(self.y - y_hat))
            update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
            with tf.control_dependencies(update_ops):
                optimizer = tf.train.AdamOptimizer(learning_rate=self.learning_rate)
            self.train_step = optimizer.minimize(self.loss)

相关文章

  • 0111:FM\LR模型

    FM\LR模型 1、FM模型 参考资料: 1、一文读懂FM模型https://zhuanlan.zhihu.co...

  • FM模型

    FM模型相比普通的线性模型,多了二阶项,是一个二阶多项式模型。 从实际经验来看,线上有很多id类特征,catego...

  • FM模型的算法思想

    本章涉及到的知识点清单:1、LR模型方程2、多项式模型方程3、FM模型方程4、矩阵分解5、FM模型化简6、损失函数...

  • fm模型简述

    1、fm模型的优点 (1)在特征极其稀疏的情况下也能进行参数预估 (2)时间复杂度低,在线性时间复杂度下即可完成模...

  • 分类阶段

    1.模型分类: 单一的浅层模型:lr和fm,需要特征处理 FM其实是浅层的Wide-deep模型,一阶部分相当于w...

  • NN_CTR笔记

    FNN将FM模型训出的结果作为其中的embedding层,上面套上全连接神经网络。 模型底层先用FM对经过one-...

  • 推荐系统 - FM模型

    1. 模型演进 LR -> POLY2 -> FM -> FFM 1.1 LR模型 - 融合多种特征的推荐模型 线...

  • 推荐系统陈开江 - C6 模型融合

    哪几个部分?一阶模型融合,线性模型树模型二阶模型融合,FM高阶模型融合,Wide and Deep 1 线性模型和...

  • 推荐系统精品文章

    推荐系统召回四模型之:全能的FM模型[https://zhuanlan.zhihu.com/p/58160982]...

  • 推荐系统排序算法--NFM模型

    1、引言 在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表...

网友评论

      本文标题:FM模型

      本文链接:https://www.haomeiwen.com/subject/ynpxgqtx.html