DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

DeepFM结合了因子分解机(FM)和深度学习,旨在捕捉推荐系统的特征交互。FM组件处理低阶交互,而深度组件处理高阶交互。通过共享特征嵌入,DeepFM无需预训练即可端到端学习,提高了效率和性能。实验表明DeepFM在AUC和Logloss上优于其他模型,如LR, FM, FNN, PNN和Wide&Deep。" 98217646,7481619,numpy矩阵运算:加法与多矩阵乘法,"['Python', 'numpy库', '数值计算', '矩阵运算']

DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

IJCAI-17-Huifeng Guo, Ruiming Tang, Yunming Ye,Zhenguo Li, Xiuqiang He

思路

学习用户行为背后的复杂特征交互对于最大化推荐系统的点击量十分重要。但是之前的方法中要么高阶-低阶存在强烈偏差,要么需要专业知识的工程。DeepFM表明,可以获得一个端到端的高阶低阶相互作用的模型。
在DeepFM中,同时结合了用于推荐的因子分解机和用于特征学习的深度学习能力。

问题描述

假设训练数据是n个(X,y)实例,X是包括用户和项目的m字段数据,y是标签=0、1,1表示用户点击了这个项目,0表示没有。X可能包括分类字段(如性别、位置)和连续字段(如,年龄),每个分类字段表示为一个one-hot编码向量,连续字段表示为值本身或离散化后的one-hot编码向量。然后每个实例转化为(x,y),在这里插入图片描述是d维向量,其中在这里插入图片描述是第X的第j个字段的表示。通常情况下,x是高维且稀疏的,CTR预测的任务就是建立一个预测模型,来估计用户在给定的上下文中点击特定应用的概率。

### DeepFM: A Factorization-Machine based Neural Network for CTR Prediction DeepFM 是一种结合了因子分解机(Factorization Machine, FM)和深度神经网络(Deep Neural Network, DNN)的端到端学习模型,旨在同时捕捉低阶和高阶特征交互以提升点击率(CTR)预测的效果[^1]。该模型通过共享输入层的方式将 FM 和 DNN 结合起来,从而避免了对特征工程的依赖,并能够高效地进行训练[^2]。 如果需要获取论文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》的原文,可以通过以下几种方式: 1. **学术数据库**:访问主流学术数据库如 [arXiv](https://arxiv.org/)、[SpringerLink](https://link.springer.com/) 或 [IEEE Xplore](https://ieeexplore.ieee.org/) 搜索论文标题“DeepFM: A Factorization-Machine based Neural Network for CTR Prediction”。通常这些平台会提供免费或付费的下载选项。 2. **Google Scholar**:使用 [Google Scholar](https://scholar.google.com/) 搜索论文标题,可能会找到作者上传的预印本或开放获取版本[^3]。 3. **机构官网**:由于该论文由哈尔滨工业大学与华为诺亚方舟实验室合作完成,可以访问相关机构的官方网站或技术博客,查找是否提供了论文的公开下载链接[^4]。 4. **ResearchGate 或 Academia.edu**:在这些学术社交平台上搜索论文标题,有时作者会分享论文的 PDF 文件。 5. **联系作者**:如果上述方法均未成功,可以通过邮件直接联系论文的通讯作者,礼貌地请求获取论文副本。 以下是 DeepFM 的核心结构图示例代码,帮助理解模型架构: ```python import tensorflow as tf # 定义输入层 input_layer = tf.keras.layers.Input(shape=(feature_dim,)) # FM 部分 fm_first_order = tf.keras.layers.Dense(1)(input_layer) embedding_layer = tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embedding_dim)(input_layer) summed_embedding = tf.reduce_sum(embedding_layer, axis=1) squared_sum = tf.square(summed_embedding) sum_squared = tf.reduce_sum(tf.square(embedding_layer), axis=1) fm_second_order = 0.5 * tf.reduce_sum(squared_sum - sum_squared, axis=1, keepdims=True) # DNN 部分 dnn_layer = tf.keras.layers.Flatten()(embedding_layer) for units in dnn_units: dnn_layer = tf.keras.layers.Dense(units, activation='relu')(dnn_layer) # 输出层 output = tf.keras.layers.Add()([fm_first_order, fm_second_order, dnn_layer]) output = tf.keras.layers.Dense(1, activation='sigmoid')(output) # 构建模型 model = tf.keras.Model(inputs=input_layer, outputs=output) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值