ctr/cvr预估之NFM模型

ctr/cvr预估之NFM模型

在数据驱动的广告和推荐系统中,准确预测用户的点击行为(Click-Through Rate, CTR)和转化行为(Conversion Rate, CVR)是提升营销效率和用户体验的关键。因子分解机(Factorization Machines, FM)模型,自2010年问世以来,以其卓越的性能和对稀疏数据的高效处理能力,在CTR/CVR预估领域取得了显著成就。然而,随着业务需求的不断演进和数据量的爆炸性增长,传统FM模型在捕捉更深层次特征交互方面显得力不从心。

在这样的背景下,神经因子分解机(Neural Factorization Machine, NFM)模型应运而生。NFM模型继承了FM的因子分解特性,同时引入深度学习框架,通过叠加神经网络层来挖掘更复杂的特征交互模式。这种结合传统机器学习与深度学习优势的创新模型,不仅能够处理大规模稀疏数据,更能捕捉数据中的隐含结构和深层次特征关系,为CTR/CVR预估带来了新的突破。


一、什么是NFM模型

NFM模型(Neural Factorization Machine,神经因子分解机)是一种结合了因子分解机(FM)和深度学习网络的推荐系统和点击率(CTR)预估模型。NFM旨在通过利用FM处理稀疏特征的能力,并结合深度神经网络来捕获更复杂的特征交互,从而提高模型的预测性能。

二、NFM模型提出背景

传统的FM模型只能进行特征的二阶组合,无法组合高阶的特征,而DNN具有组合高阶特征的能力和非线性能力,因此考虑将FM模型与DNN结合起来,2017年新加坡国立大学基于此提出了NFM模型。
NFM模型的主要思路是采用一个表达能力更强的函数来替代FM二阶隐向量内积的部分,以此捕捉更复杂的非线性关系。模型在Embedding层和DNN层中间引入了BI-Interaction Pooling层。此层是NFM的核心,用于模拟FM中的特征交叉项。不同于FM直接将特征向量的内积作为交叉项,NFM首先计算所有特征嵌入的元素级求和的平方与平方的求和的差,然后通过这种方式捕获特征间的交互信息。在Bi-Interaction层之后,NFM使用一个或多个深度神经网络层来进一步学习特征间复杂的非线性交互

三、NFM模型原理

FM模型拟合公式:
在这里插入图片描述
在FM基础之上进行改进,NFM模型拟合公式:
在这里插入图片描述
上面公式中的f(x)即为BI-Interaction Pooling层计算公式:
在这里插入图片描述
化简上式:
在这里插入图片描述

四、FM模型注意事项

  • Bi-Interaction Pooling的作用理解:在NFM中,Bi-Interaction Pooling层用于模拟FM中的特征交叉项。其计算过程涉及两部分:所有特征嵌入的元素级求和的平方,以及每个特征嵌入的平方的总和。理解这些计算如何捕捉特征间的交互非常重要,因为它直接影响到模型对特征组合的学习能力。

  • 深度神经网络的设计:NFM的深度神经网络部分用于在Bi-Interaction Pooling后进一步学习和提取特征间复杂的非线性关系。在设计网络结构时,需要注意选择合适的层数、每层的神经元数量以及激活函数,以达到最佳的特征表达和预测性能。

  • 特征嵌入的维度一致性:与FM模型类似,NFM要求各个特征的嵌入维度应保持一致(主要针对离散特征),这样在Bi-Interaction Pooling层和深度神经网络层之间进行特征组合时才能有效地进行操作。确保所有特征的嵌入维度相同,可以避免在模型训练过程中出现的维度不匹配问题。

五、NFM模型的核心参数

NFM核心参数与FM核心参数类似,见
NFM模型核心参数

六、NFM模型实现代码


import os
import pandas as pd
import numpy as np
import tqdm
from tqdm.autonotebook import *
import random
import warnings
import gc
import time
import datetime
from keras.preprocessing.text import Tokenizer, text_to_word_sequence
from keras.preprocessing.sequence import pad_sequences
from keras.preprocessing import text, sequence
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import LabelEncoder
from keras.layers import Dense, Embedding, Input, Flatten, Concatenate, Dropout,Reshape,concatenate,Lambda,Add,Subtract,Activation,BatchNormalization
import tensorflow as tf
import keras.backend as K
from keras.models import Model
warnings.filterwarnings('ignore')
……

完整代码参考公众号
在这里插入图片描述

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值