Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >2、推荐广告算法模型之特征交叉模型

2、推荐广告算法模型之特征交叉模型

原创
作者头像
用户2794661
发布于 2022-08-03 17:03:50
发布于 2022-08-03 17:03:50
82400
代码可运行
举报
文章被收录于专栏:程序人生小记程序人生小记
运行总次数:0
代码可运行

自动特征交叉模型包括:FM系列(FM、FFM、AFM)、Embedding+MLP(FNN、PNN、NFM、ONN)、双路并行(Wide&Deep、DeepFM、DCN、xDeepFM、AutoINT)

FM系列(FM、FFM、AFM)

FM

  • 原理

将特征映射为K维向量,然后两两组合,旨在解决稀疏数据下的特征组合问题。

两两特征组合的方式最简单的方式为多项式组合,在数据稀疏的情况下,使用多项式组合预估的准确性会大大降低,FM提出一种先将特征映射为K维向量,然后两两组合的方式,由于学习到的参数更多,会提高预估的准确性。

  • 公式

  • 损失函数

(交叉熵损失函数)

  • 使用细节

(同LR)

  • 实现方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def model_fn(features, labels, mode, params):
    """
    FM model
    """
    feature_columns = build_features()

    input = tf.feature_column.input_layer(features, feature_columns)

    input_dim = input.get_shape().as_list()[-1]

    with tf.variable_scope('linear'):
        init = tf.random_normal(shape=(input_dim, 1))
        w = tf.get_variable('w', dtype=tf.float32, initializer=init, validate_shape=False)
        b = tf.get_variable('b', shape=[1], dtype=tf.float32)

        linear_term = tf.add(tf.matmul(input, w), b)

    with tf.variable_scope('fm_interaction'):
        init = tf.truncated_normal(shape=(input_dim, params['factor_dim']))
        v = tf.get_variable('v', dtype=tf.float32, initializer=init, validate_shape=False)
        sum_square = tf.pow(tf.matmul(input, v), 2)
        square_sum = tf.matmul(tf.pow(input, 2), tf.pow(v, 2))
        interaction_term = 0.5 * tf.reduce_sum(sum_square - square_sum, axis=1, keep_dims=True)

    with tf.variable_scope('output'):
        y = tf.math.add(interaction_term, linear_term)

    return y
  • 论文

Fast context-aware recommendations with factorization machines

  • 相关文章

张俊林:推荐系统召回四模型之:全能的FM模型

FFM

  • 原理

将特征映射为(Field*K),然后对特征进行两两组合,FFM认为一个特征和其他特征进行组合时,对不同特征应该对应个不同的向量。

  • 公式
  • 损失函数

(交叉熵损失函数)

  • 使用细节

(同LR)

  • 实现方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def model_fn(features, labels, mode, params):
    """
    FFM model
    """
    feature_columns, field_dict = build_features()
    field_dim = len(np.unique(list(field_dict.values())))
    input = tf.feature_column.input_layer(features, feature_columns)
    input_dim = input.get_shape().as_list()[-1]

    with tf.variable_scope('linear'):
        linear_term = tf.layers.dense(input, units=1)

    with tf.variable_scope('field_aware_interaction'):
        init = tf.truncated_normal(shape=(input_dim, field_dim, params['factor_dim']))
        v = tf.get_variable('v', dtype=tf.float32, initializer=init, validate_shape=False)

        interaction_term = tf.constant(0, dtype=tf.float32)
        for i in range(input_dim):
            for j in range(i + 1, input_dim):
                interaction_term += tf.multiply(
                    tf.reduce_mean(tf.multiply(v[i, field_dict[j], :], v[j, field_dict[i], :])),
                    tf.multiply(input[:, i], input[:, j])
                )
        interaction_term = tf.reshape(interaction_term, [-1, 1])

    with tf.variable_scope('output'):
        y = tf.math.add(interaction_term, linear_term)

    return y
  • 论文
  • 相关文章

张俊林:推荐系统召回四模型之二:沉重的FFM模型

AFM

  • 原理

FM会让一个特征固定一个特定的向量,当这个特征与其他特征做交叉时,都是用同样的向量去做计算。这个是很不合理的,因为不同的特征之间的交叉,重要程度是不一样的。如何体现这种重要程度,之前介绍的FFM模型是一个方案。另外,结合了attention机制的AFM模型,也是一种解决方案。

  • 公式

  • 损失函数

(交叉熵损失函数)

  • 使用细节

(同LR)

  • 实现方法
  • 论文

《Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks》

  • 相关文章

梁勇:推荐系统遇上深度学习(八)--AFM模型理论和实践

Embedding+MLP(FNN、PNN、NFM、ONN)

FNN

  • 原理

FNN是2016年提出的一种基于FM预训练Embedding的NN模型,其思路也比较简单;FM本身具备学习特征Embedding的能力,DNN具备高阶特征交叉的能力,因此将两者结合是很直接的思路。FM预训练的Embedding可以看做是“先验专家知识”,直接将专家知识输入NN来进行学习。注意,FNN本质上也是两阶段的模型,与Facebook在2014年提出GBDT+LR模型在思想上一脉相承。

  • 公式

FM+MLP

  • 损失函数

(交叉熵损失函数)

  • 使用细节

(同LR)

  • 实现方法
  • 论文
  • 相关文章

PNN

  • 原理

PNN是2016年提出的一种在NN中引入Product Layer的模型,其本质上和FNN类似,都属于Embedding+MLP结构。作者认为,在DNN中特征Embedding通过简单的concat或者add都不足以学习到特征之间复杂的依赖信息,因此PNN通过引入Product Layer来进行更复杂和充分的特征交叉关系的学习。PNN主要包含了IPNN和OPNN两种结构,分别对应特征之间Inner Product的交叉计算和Outer Product的交叉计算方式。

  • 公式

product layer 中每个节点是两两Field的embedding对应的“product”结果,而非所有Field的。根据 product 函数的不同选择,PNN也有不同实现,这里的想象空间就很多了。文中尝试了相对常见的向量内积(inner product)和外积(outer product),对应 IPNN 和OPNN。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

NFM

  • 原理

特征交叉方式:NFM将PNN的Product Layer替换成了Bi-interaction Pooling结构来进行特征交叉的学习。

  • 公式

Bi-interaction Pooling:

编辑

添加图片注释,不超过 140 字(可选)

编辑

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

ONN

  • 原理

ONN是2019年发表的CTR预估,我们知道PNN通过引入不同的Product操作来进行特征交叉,ONN认为针对不同的特征交叉操作,应该用不同的Embedding,如果用同样的Embedding,那么各个不同操作之间就会互相影响而最终限制了模型的表达。

  • 公式

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

Wide&Deep

  • 原理

Wide And Deep是2016年Google提出的用于Google Play app推荐业务的一种算法。其核心思想是通过结合Wide线性模型的记忆性(memorization)和Deep深度模型的泛化性(generalization)来对用户行为信息进行学习建模。

  • 公式

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

DeepFM

  • 原理

我们知道FM只能够去显式地捕捉二阶交叉信息,而对于高阶的特征组合却无能为力。DeepFM就是在FM模型的基础上,增加DNN部分,进而提高模型对于高阶组合特征的信息提取。DeepFM能够做到端到端的、自动的进行高阶特征组合,并且不需要人工干预。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 公式
  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

DCN

  • 原理

特征交叉方式:Deep&Cross其实也属于双路并行的模型结构,只不过提出了一种新的模型叫做Cross Net来替代DeepFM中的FM部分。DNN本身虽然具备高阶交叉特征的学习能力,但其对于特征交叉的学习是隐式的、高度非线性的一种方式,因此作者提出了Cross Net,它可以显式地进行特征的高阶交叉,CrossNet相比于DNN的优势主要在于:

公式:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 公式
  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

xDeepFM

  • 原理

xDeepFM全称为eXtreme Deep Factorization Machine,可以看出其是在DeepFM基础上进行了改进。xDeepFM的贡献主要在于提出了压缩交互网络(Compressed Interaction Network),与DCN相同的是,都提出了要cross feature explicitly;但不同的是,DCN中的特征交叉是element- wise的,而CIN中的特征交叉是vector-wise的。

  • 公式

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

AutoINT

  • 原理

将self_attention机制引入到推荐场景中。

  • 公式

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 损失函数
  • 使用细节
  • 实现方法
  • 论文

参考文献:

深入FFM原理与实践

万字长文梳理CTR预估模型发展过程与关系图谱

https://www.bookstack.cn/read/huaxiaozhuan-ai/README.md

阿里妈妈技术:WSDM 2022 | 点击率模型特征交叉方向的发展及CAN模型介绍

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CTR预估算法之FM, FFM, DeepFM及实践
点击率(Click through rate)是点击特定链接的用户与查看页面,电子邮件或广告的总用户数量之比。 它通常用于衡量某个网站的在线广告活动是否成功,以及电子邮件活动的有效性。 点击率是广告点击次数除以总展示次数(广告投放次数)
全栈程序员站长
2022/07/01
5430
CTR预估算法之FM, FFM, DeepFM及实践
深度学习基础知识 | 上
MLP网络是一种应用最为广泛的一种网络,其中DNN就是属于MLP网络,它是一个前向结构的人工神经网络,输入一组向量向前传播输出向量,网络结构如下:
昱良
2019/07/04
6670
CTR学习笔记&代码实现3-深度ctr模型 FNN->PNN->DeepFM
这一节我们总结FM三兄弟FNN/PNN/DeepFM,由远及近,从最初把FM得到的隐向量和权重作为神经网络输入的FNN,到把向量内/外积从预训练直接迁移到神经网络中的PNN,再到参考wide&Deep框架把人工特征交互替换成FM的DeepFM,我们终于来到了2017年。。。
风雨中的小七
2020/04/24
1.7K6
CTR学习笔记&代码实现3-深度ctr模型 FNN->PNN->DeepFM
算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(上篇)
在广告、推荐系统CTR预估问题上,早期的完全规则方法被过渡到以LR为代表的机器学习方法,为了充分发挥组合特征的价值,在相当长一段时间里,业界热衷于使用LR+人工特征工程。但人工组合特征成本高昂 ,在不同任务上也难以复用。2010年FM因子分解方法的出现解决了人工组合特征的困境,2014年Facebook提出的GBDT+LR也给出了一种利用树模型特点构建组合特征的思路。不过随着深度学习的崛起,2015年以后,借助非线性自动组合特征能力的深度模型,开始成为业内的主流。从经典DNN到结合浅层的Wide&Deep,用于CTR预估的深度模型在近些年间百花盛开,各种交叉特征建模方法层出不穷,Attention机制也从其他研究领域引入,帮助更好的适应业务,提升模型的解释性。在这进化路线之下,核心问题离不开解决数据高维稀疏难题,自动化组合特征,模型可解释。我们梳理了近些年CTR预估问题中有代表性的模型研究/应用成果,并对部分经典模型的实现原理进行详细剖析,落成文字作为学习过程的记录。
炼丹笔记
2021/05/14
5.3K0
算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(上篇)
CTR神经网络特征交叉汇总!
本篇文章把之前一个月学习的网络特征交叉的文章结合自己平时实践的经验梳理一遍,方便今后学习回顾。
炼丹笔记
2021/05/14
1.3K0
CTR神经网络特征交叉汇总!
推荐系统炼丹笔记3:排序篇,一本家谱
第3期,排序篇 本文介绍在排序阶段交叉模块的思考和基于LR+GBDT、FM等开始的排序模型的演变,后续将继续梳理成相关系列。本文小编大部分内容摘自炼丹笔记之前的汇总.....实在是太懒了。
炼丹笔记
2021/12/02
6900
推荐系统炼丹笔记3:排序篇,一本家谱
​大厂技术实现 | 腾讯信息流推荐排序中的并联双塔CTR结构 @推荐与计算广告系列
双塔模型是推荐、搜索、广告等多个领域的算法实现中最常用和经典的结构,实际各公司应用时,双塔结构中的每个塔会做结构升级,用CTR预估中的新网络结构替代全连接DNN,本期看到的是腾讯浏览器团队的推荐场景下,巧妙并联CTR模型应用于双塔的方案。
ShowMeAI
2021/11/24
3.5K1
​大厂技术实现 | 腾讯信息流推荐排序中的并联双塔CTR结构 @推荐与计算广告系列
CTR学习笔记&代码实现4-深度ctr模型 NFM/AFM
这一节我们总结FM另外两个远亲NFM,AFM。NFM和AFM都是针对Wide&Deep 中Deep部分的改造。上一章PNN用到了向量内积外积来提取特征交互信息,总共向量乘积就这几种,这不NFM就带着element-wise(hadamard) product来了。AFM则是引入了注意力机制把NFM的等权求和变成了加权求和。
风雨中的小七
2020/05/08
1.5K0
CTR学习笔记&代码实现4-深度ctr模型 NFM/AFM
谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)
今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望能帮大家梳理推荐系统、计算广告领域在深度学习方面的前沿进展。
数据派THU
2019/06/28
6320
谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)
浅谈推荐,从FM到深度学习
大家好,上一篇文章当中我们介绍了Embedding对于推荐系统模型的作用,介绍了FFM和AFM的基本原理。今天我们继续来介绍FM,介绍一下FM之后的几个重要的迭代版本,以及它的发展方向。
TechFlow-承志
2021/04/16
1.4K0
浅谈推荐,从FM到深度学习
CTR学习笔记&代码实现5-深度ctr模型 DeepCrossing -> DCN
之前总结了PNN,NFM,AFM这类两两向量乘积的方式,这一节我们换新的思路来看特征交互。DeepCrossing是最早在CTR模型中使用ResNet的前辈,DCN在ResNet上进一步创新,为高阶特征交互提供了新的方法并支持任意阶数的特征交叉。
风雨中的小七
2020/05/20
2.2K0
CTR学习笔记&代码实现5-深度ctr模型 DeepCrossing -> DCN
炼丹知识点:深度网络特征交叉方法汇总
本篇文章把神经网络特征交叉的文章结合自己平时实践的经验梳理一遍,方便今后学习回顾。
炼丹笔记
2022/05/23
2.2K0
炼丹知识点:深度网络特征交叉方法汇总
深度CTR预估模型的演化之路
在计算广告和推荐系统中,点击率(Click Through Rate,以下简称CTR)预估是一个重要问题。在CTR预估任务中(以下简称CTR任务),我们通常利用user信息、item信息和context信息来预测user对item的CTR。
锅逗逗
2022/08/01
7470
深度CTR预估模型的演化之路
互联网广告CTR预估新算法:基于神经网络的DeepFM原理解读
CTR(Click-Through-Rate)即点击通过率,是互联网广告常用的术语,指网络广告(图片广告/文字广告/关键词广告/排名广告/视频广告等)的点击到达率,即该广告的实际点击次数除以广告的展现量。
用户1737318
2018/09/28
1.3K0
互联网广告CTR预估新算法:基于神经网络的DeepFM原理解读
谷歌、阿里们的杀手锏:三大领域,十大深度学习CTR模型演化图谱
今天我们一起回顾一下近3年来的所有主流深度学习CTR模型,也是我工作之余的知识总结,希望能帮大家梳理推荐系统、计算广告领域在深度学习方面的前沿进展。
AI科技大本营
2019/07/03
1.1K0
谷歌、阿里们的杀手锏:三大领域,十大深度学习CTR模型演化图谱
【推荐系统】深入理解推荐系统:无需人工特征工程的xDeepFM
作为【推荐系统】系列文章的第十五篇,将以“xDeepFM”作为今天的主角,中科大、北大与微软合作发表在 KDD’18 的文章:《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》。本文主要对xDeepFM进行详细描述,并进行代码实现。
黄博的机器学习圈子
2021/07/07
1.2K0
【推荐系统】深入理解推荐系统:无需人工特征工程的xDeepFM
常见计算广告点击率预估算法总结
本文主要介绍了CTR(Click-Through Rate)预估模型中各个算法的原理、优缺点以及应用实践。包括传统的基于指数型分布的模型、基于线性模型以及基于深度学习模型的CTR预估。作者还对各种算法的优缺点进行了分析,并介绍了一些实际应用中的技巧和经验。
段石石
2017/09/13
4.9K0
常见计算广告点击率预估算法总结
推荐系统遇上深度学习(八)--AFM模型理论和实践
在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系,因此学者们通过Deep Network来建模更高阶的特征之间的关系。
石晓文
2018/07/25
2.3K1
推荐系统遇上深度学习(八)--AFM模型理论和实践
推荐系统遇上深度学习(七)--NFM模型理论和实践
在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次的关系或者说多个特征之间的交互关系,因此学者们通过Deep Network来建模更高阶的特征之间的关系。
石晓文
2018/07/25
1.7K0
推荐系统遇上深度学习(七)--NFM模型理论和实践
算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(下篇)
在广告、推荐系统CTR预估问题上,早期的完全规则方法被过渡到以LR为代表的机器学习方法,为了充分发挥组合特征的价值,在相当长一段时间里,业界热衷于使用LR+人工特征工程。但人工组合特征成本高昂 ,在不同任务上也难以复用。2010年FM因子分解方法的出现解决了人工组合特征的困境,2014年Facebook提出的GBDT+LR也给出了一种利用树模型特点构建组合特征的思路。不过随着深度学习的崛起,2015年以后,借助非线性自动组合特征能力的深度模型,开始成为业内的主流。从经典DNN到结合浅层的Wide&Deep,用于CTR预估的深度模型在近些年间百花盛开,各种交叉特征建模方法层出不穷,Attention机制也从其他研究领域引入,帮助更好的适应业务,提升模型的解释性。在这进化路线之下,核心问题离不开解决数据高维稀疏难题,自动化组合特征,模型可解释。我们梳理了近些年CTR预估问题中有代表性的模型研究/应用成果,并对部分经典模型的实现原理进行详细剖析,落成文字作为学习过程的记录。
炼丹笔记
2021/05/14
2.1K0
算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(下篇)
推荐阅读
相关推荐
CTR预估算法之FM, FFM, DeepFM及实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验