基于深度学习的推荐(六):CTR预估经典模型NFM

公众号

关注公众号:推荐算法工程师,输入"进群",加入交流群,和小伙伴们一起讨论机器学习,深度学习,推荐算法.

前言

早期做特征工程的时候,采用人工或决策树等来选择特征,然而这些方法无法学习到训练集中没有出现的特征组合.而近几年出现的基于embedding的方法,可以学习到训练集中没有出现的组合,作者将embedding方法归为两类,一类是FM这种线性模型,之前介绍过的FNN就是利用FM作为初始化的embedding;另一类是基于神经网络的非线性模型,NFM(Neural Factorization Machine)则是将两种embedding结合起来.NFM是发表在SIGIR 2017上的文章,出现在深度学习与推荐系统结合的初期,模型相对较为简单,可以拿来练习tensorflow.

论文地址:https://arxiv.org/pdf/1708.05027.pdf

NFM模型

首先来回顾下FM模型:
Screenshot_2019-10-25_16-33-17.png
设embedding向量维度为k,其中的二阶交叉项可以进行优化:
20190618160910.png

交叉项得到的是一个值,如果去掉最外面那层求和,得到一个k维的向量.这个k维的向量就是所谓的"Bi-Interaction Layer"的结果:

Screenshot_2019-10-25_16-29-59.png
将这个向量输入全连接层,得到预测结果f(x),而最终的预估公式就是:
Screenshot_2019-10-25_16-37-23.png
此时再看模型一目了然:
Screenshot_2019-10-25_16-38-25.png

代码实战

这部分代码改自之前AFM的代码,有兴趣可以自己改改试一试,挺简单的.其中interaction layer的实现提供了优化前和优化后两种写法,可以运行下比较比较时间,差距蛮大.简单看看几个关键点的实现,首先是embedding layer:

with tf.name_scope('Embedding_Layer'):
    self.embeddings = tf.nn.embedding_lookup(self.weights['feature_embeddings'], self.feature_index)  # [None, field_size, embedding_size]
    feat_value = tf
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值