推荐模型-上下文感知-2015:FFM模型【在FM基础上引入特征域】【每个特征对应的不是唯一一个隐向量权重,而是一系列,与每个特征域都计算出一个隐向量权重】【FM:O(kn);FFM:O(knf)】

本文主要是介绍推荐模型-上下文感知-2015:FFM模型【在FM基础上引入特征域】【每个特征对应的不是唯一一个隐向量权重,而是一系列,与每个特征域都计算出一个隐向量权重】【FM:O(kn);FFM:O(knf)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Yuchin Juan et al. “Field-aware Factorization Machines for CTR Prediction” in RecSys 2016.

https://github.com/rixwew/pytorch-fm

2015年,Criteo基于FM提出的FFM在多项CTR预估大赛中夺魁,并被Criteo、美团等公司深度应用在推荐系统、CTR预估等领域。

FFM算法,全名 Field-aware Factorization Machines ,整整比FM算法多了一个F!多出来的F意为Field

相比FM模型,FFM模型引入了特征域感知(field-aware)这个概念,使模型的表达能力更强了。
在这里插入图片描述
FM、FFM模型只具备二阶特征交叉的能力。Deep Crossing模型可以通过调整神经网络的深度进行特征之间的“深度交叉”,这也 是 Deep Crossing名称的由来。
在这里插入图片描述

(式 2-22 ) 是 FFM的数学形式的二阶部分。其与FM的区别在于隐向量由原 来 的 变 成 了 也 /2 ,这意味着每个特征对应的不是唯一一个隐向量,而是一组 隐向量。当税特征与税特征进行交叉时,税特征会从税的这一组隐向量中挑出与特征税的域心对应的隐向量%后进行交叉。同理,/ 2也会用与税的域方对应的隐向量进行交叉。

这里所说的域( field ) 具体指什么呢?简单地讲,“域”代表特征域,域内 的特征一般是采用one-hot编码形成的一段one-hot特征向量。例如,用户的性别 分为男、女、未知三类,那么对一个女性用户来说,采用one-hot方式编码的特 征向量为[0,1,0],这个三维的特征向量就是一个“性别”特征域。将所有特征域 连接起来,就组成了样本的整体特征向量。

下面介绍Criteo FFM的论文⑹中的一个例子,更具体地说明FFM的特点。 假设在训练推荐模型过程中接收到的训练样本如图2-11所示。
在这里插入图片描述
其中,Publisher、Advertiser、Gender 是三个特征域,ESPN、NIKE、Male 分别是这三个特征域的特征值(还需要转换成one-hot特征)。

如 果 按 照 F M 的原理,特 征 ESPN、NIKE和 M ale都有对应的隐向量 WESPN,WNiKE,WMaie,那么ESPN特征与NIKE特征、ESPN特征与Male特征做交 叉的权重应该是WESPN , WNIKE和WESPN e WMale。其中,ESPN对应的隐向量WESPN在 两次特征交叉过程中是不变的。

而 在 FFM 中,ESPN与 NIKE、ESPN与 M ale交叉特殊的权重分别是 WESPN,A . WNIKE,P 和 WESPN,G • Malpo
细心的读者肯定已经注意到,ESPN在与NIKE和 Male交叉时分别使用了不 同的隐向量WESPN,A和WESPN,G,这 是 由 于 N IK E和 M ale分别在不同的特征域 Advertiser(A)和 Gender(G)导致的。

在 FFM模型的训练过程中,需要学习〃个特征在7个域上的左维隐向量,参 数 数 量 共 九 个 。在训练方面,FFM的二次项并不能像FM那样简化,因此其 复杂度为kn2o 一

相比FM, FFM引入了特征域的概念,为模型引入了更多有价值的信息,使 模型的表达能力更强,但与此同时,FFM的计算复杂度上升到奶2 ,远大于FM的如。在实际工程应用中,需要在模型效果和工程投入之间进行权衡。
在这里插入图片描述

从 POLY2到 FFM的模型演化过程

在这里插入图片描述
在这里插入图片描述




参考资料:
RS笔记:传统推荐模型之FFM (引入特征域的概念) [2015 Criteo]
推荐系统召回四模型之二:沉重的FFM模型
深入FFM原理与实践
FFM模型详解

这篇关于推荐模型-上下文感知-2015:FFM模型【在FM基础上引入特征域】【每个特征对应的不是唯一一个隐向量权重,而是一系列,与每个特征域都计算出一个隐向量权重】【FM:O(kn);FFM:O(knf)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128788

相关文章

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境