背景

数据输入

以一个广告分类的问题为例,根据用户画像、广告位以及一些其他的特征,来预测用户是否会点击广告(二分类问题)。数据如下:

Clicked Country Sex Ad_type
1 USA Female Movie
0 China Female Game
1 China Male Game

Clicked?是分类值,表明用户是否点击了此广告。1表示点击,0表示未点击。而Country,Sex,Ad_type则是Categorical特征(类别特征),一般都是进行one-hot编码处理。

将上面的离散特征数据进行one-hot编码以后(假设Country,Sex,Ad_type类别只有图中几种),如下图所示

Clicked Country=USA Country=China Sex=Male Sex=Female Ad_type=Movie Ad_type=Game
1 1 0 0 1 1 0
0 0 1 0 1 0 1
1 0 1 1 0 0 1

显然可以看出,特征从最初的3个变成了现在的6个。而实际工程当中,由于有的Categorical特征维度会非常大(比如地区等),如果采用One-Hot编码,那么互联网公司的动辄上亿个特征的数据集就是这么来的了。

例如,第一条输入的样本数据就是x=[1,0,0,1,1,0]

演变

LR

在说FM之前,先介绍一下最基本的一个模型–LR,可以说LR是点击率(click through rate,以下简称CTR)预估的开山鼻祖。LR模型简单易懂,将数据的一阶特征进行线性组合后再压缩到0~1的概率范围内进行分类。LR模型具有很强的可解释性,权重因子的大小说明了对应特征对预测结果影响大小。但也是因为LR模型太简单,只能做输入特征的一阶线性组合,所以需要进行复杂的特征工程,用人工的方法进行特征交叉组合,再进入LR模型中。可以说特征工程加广义线性模型LR的做法在2005年到2015年间广泛统治着工业界的CTR预估。

LR模型的具体形式如下:

而最终的CTR预估值为

可以从另一个角度来看待LR模型,其就是一个单层的神经网络,将输入值与各自的权重系数相乘后进行累加,再经过一个sigmod神经单元,将输出值由 (−∞,+∞)压缩到值域为 (0,1)范围内的概率值。

为方便叙述,之后的sigmoid就不再加了

poly2

在一般的线性模型中,是各个特征独立考虑的,没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。最简单的以电商为例,一般女性用户看化妆品服装之类的广告比较多,而男性更青睐各种球类装备。那很明显,女性这个特征与化妆品类服装类商品有很大的关联性,男性这个特征与球类装备的关联性更为密切。如果我们能将这些有关联的特征找出来,显然是很有意义的。

通过引入二阶多项式,如式的模型考虑了特征之间的相互关系。

有些地方可能这样描述:

这个公式很好理解,就是把所有的特征都进行组合再给予权值,但这个公式存在一个问题,二阶项参数的训练依赖于大量非零的样本。然而,在实际应用场景中,数据空间十分稀疏,训练得到的二阶交叉项参数是存在很大偏差的。

FM

为了解决上述因特征空间稀疏带来的参数不准确的问题,FM借助矩阵分解的思想,对二阶交叉项的系数矩阵进行了分解

故FM的公式如下

其中k≪n,本来需要训练的n×n个参数,现在只需要训练n×k个。

这个公式的时间复杂度是O(kn^2),通过下方化简可以达到O(kn)

 构成一个完整的对称矩阵,是这个对称矩阵的对角线,是这个对称矩阵的上三角部分=1/2(完整矩阵-对角线)。第一步就是这样得出。

第一步到第二步是把内积拆开写。

j 没有关系,i 没有关系,所以

第二步到第三步是这样来的:然后再用刚刚上边的等式代入,就会得到第三步的公式。

从神经网络角度窥探FM

笔者之前发现DeepFM的模型中的FM部分的架构图看起来跟FM公式不太一样,但是按照模型图构建的表达式计算出来的数值和FM公式计算出来的竟然是一样的,于是我就开始猛推,果然两者是一样的。数学底子差,不免要把公式拆到底,但这样真的非常直观。其实这就是FM模型在神经网络角度的解读。

从神经网络的角度来进一步审视FM模型,可以发现隐藏在公式后面的FM本质其实是embedding加interaction

FM的二阶部分在神经网络角度的架构图如下:

在DeepFM中也是这样表达的。

假设特征域有三个,每个域的深色又代表取值为1,浅色代表取值0

实际上,FM的二阶部分的公式是这样描述的下边就来证明公式和上边模型的等价性。

现在来看图片,每个特征域都embedding出一个长度为5 的向量,是这样做的

第一个域:,其中x1,x2组成一个1×2的矩阵,v1,v2组成一个2×5的矩阵,相乘得到1×5的矩阵

=[x1v11+x2v21,x1v12+x2v22,x1v13+x2v23,x1v14+x2v24,x1v15+x2v25]

同理,第二个域其中x3,x4,x5组成一个1×3的矩阵,v3,v4,v5组成一个3×5的矩阵,相乘得到1×5的矩阵

=[x3v31+x4v41+x5v51,x3v32+x4v42+x5v52,x3v33+x4v43+x5v53,x3v34+x4v44+x5v54,x3v35+x4v45+x5v55]

第三个域我不再赘述。

这三个域对应的embedding的向量两两内积相加

我们以前两个向量内积为例,二者点乘,依次拆开得到:

x1v11(x3v31+x4v41+x5v51) + x2v21(x3v31+x4v41+x5v51) + x1v12(x3v32+x4v42+x5v52) + x2v22(x3v32+x4v42+x5v52) +

....... + x1v15(x3v35+x4v45+x5v55) + x2v25(x3v35+x4v45+x5v55)

抽出含有x1x3的项 :x1x3(v11v31+v12v32+v13v33+v14v34+v15v35)=x1x3<v1,v3>

同理抽出其他项,发现前两个域的内积等于<v1,v3>x1x3 + <v1,v4>x1x4 + <v1,v5>x1x5 + <v2,v3>x2x3 + <v2,v4>x2x4 + <v2,v5>x2x5

如果把所有域对应的向量的内积加起来,就会发现<v1,v3>x1x3 + <v1,v4>x1x4 + <v1,v5>x1x5 + <v2,v3>x2x3 + <v2,v4>x2x4 + <v2,v5>x2x5 + ...+ <v10,v5>x10x5 = 不同特征域的x_i,x_j的<v_i,v_j>x_i  x_j 的和

回想一下FM的公式,FM是把x_j和x_i的<v_i,v_j>x_i x_j 全部求和(x≠j)。

因为,是独热,所以,同一个特征域的那一项其实是零,非零项只会出现在x_i 和 x_j都不为0 的时候。所以他们两者是没差别的。

公式里的V矩阵的k在这里=5。参数是10×5的。模型图里用的参数分别是2×5,3×5,5×5的,组在一起也是10×5。

仔细看图容易发现,其实embedding产生的向量只是由特征域中取值1的特征生成的,因为取值0的特征对他没有贡献。也就是说其实embedding之后的向量其实就是不等于0的x_i所对应的v_i,图中有效贡献用彩线标明。上边embedding的向量之间的内积其实也就是v_i和v_j的内积。在图中用彩色也有标注。这又符合了   FM公式推导的<v_i,v_j>x_i x_j只有都不为零的x才对最后结果有贡献  这一点 。

容易发现公式和模型图计算出的其实是相等的。

作者在设计FM算法时本意是将交互因子分解为两个特征向量权重的内积 ,但这却在另一方面引入了embedding思想。这一点在之后的DeepFM等 模型中被广泛应用,可以说FM为后面DL大行其道打通了一条坦途,这应该也是作者始料未及的。

因子分解机FM算法(Factorization Machine)相关推荐

  1. 保持函数依赖的模式分解可以减轻或解决什么_推荐系统玩家 之 因子分解机FM(Factorization Machines)...

    前言 因子分解机 (Factorization Machines) 是CTR预估的重要模型之一.自2010年被提出后,得到了大规模的应该,也是美团和头条做推荐和CTR预估的方法之一.要讲述因子分解机F ...

  2. 【机器学习】因子分解机(FM) 原理及在召回中的应用(python实现)

    FM 原理及在召回中的应用(python实现) 1. 综述 为了学习推荐系统的召回模型,首先梳理了一下FM模型,权当是学习笔记,记录一下. FM(factor Machine,因子分解机)算法是一种基 ...

  3. 推荐系统入门(三):矩阵分解MF因子分解机FM(附代码)

    推荐系统入门(三):矩阵分解MF&因子分解机FM(附代码) 目录 推荐系统入门(三):矩阵分解MF&因子分解机FM(附代码) 一. 矩阵分解MF 1. 隐含语义分析技术 1.1 隐语义 ...

  4. FM(Factorization Machine)因式分解机 与 TensorFlow实现 详解

    1,线性回归(Linear Regression) 线性回归,即使用多维空间中的一条直线拟合样本数据,如果样本特征为: \[x = ({x_1},{x_2},...,{x_n})\] 模型假设函数如下 ...

  5. 因子分解机(FM)家族

    写在前面的话   在深度学习(Deep Learning,以下简称DL)大行其道的今天,因子分解机(Factorization Machines,以下简称FM)以其模型简单.可解释性强等优点在搜索广告 ...

  6. 6、因子分解机FM介绍

    前言 在进行CTR(click through rate)预估时,除了单个特征外,通常要进行特征组合,FM算法是进行特征组合时的常见算法. 因子分解机(Factorization Machine),是 ...

  7. 深度学习核心技术精讲100篇(六)-keras 实战系列之推荐系统FM(Factorization Machine)算法

    前言 博主在之前的文章中介绍过使用keras搭建一个基于矩阵分解的推荐系统,而那篇文章所介绍的方法可能只是一个庞大推荐系统中的一小环节.而对于工业级别的推荐系统,面对极其庞大的产品种类数量,一步就输出 ...

  8. (一)因式分解机(Factorization Machine,FM)原理及实践

    因子分解机(Factorization Machine),是由Konstanz大学(德国康斯坦茨大学)Steffen Rendle(现任职于Google)于2010年最早提出的,旨在解决大规模稀疏数据 ...

  9. 机器学习算法(三):FFM(Field-aware Factorization Machine)(域分解机模型)

    目录 1 FFM算法来源 2 举例说明FFM算法的细节 3 基于FFM的逻辑回归模型 3.1 损失的逻辑回归模型 3.2 ∅(w,xp)的求导过程 3.3 示例 4 优化方法:Bi-FFM算法 1 F ...

最新文章

  1. 2013年F5应用交付高峰论坛北京站落幕
  2. ASP.NET验证码C#
  3. CSP认证201312-5 I’m stuck![C++题解]:dfs、两次dfs
  4. Scrapy Architecture overview--官方文档
  5. JVM - 剖析Java对象头Object Header之指针压缩
  6. Lesson 02:变量、数据类型
  7. 工作组环境中配置WSUS客户端
  8. Spring @ControllerAdvice @ExceptionHandler
  9. 使用PowerDesigner做数据库设计(一)
  10. JS多个对象添加到一个对象中
  11. 北京市(朝阳区)(西城区)(海定区)正则表达式(代码保存)
  12. mysql中正则表达式的用法_mysql之正则表达式的用法
  13. 订单扣款却又被系统删除?携程回应:酒店系统故障导致
  14. python办公实例100例-Python 100例(上)
  15. 解密《一个操作系统的实现》这本书
  16. 金税盘组件接口调用方法
  17. VTK学习笔记(二十三)vtk空间几何变换
  18. 内窥镜胶囊(胶囊内镜)硬件方案(二)
  19. Python数据可视化Part 5-Matplotlib 3D图片与投影教学-代码详解
  20. ​LeetCode刷题实战623:在二叉树中增加一行

热门文章

  1. Android手机连接笔记本电脑上网 linux环境
  2. ZYNQ-AX7020学习笔记
  3. phpstudy本地配置教程You don't have permission to access解决
  4. 我叫mt4服务器维护中,我叫MT4:7月11日凌晨维护公告
  5. 知识普及:HTML 5到底是个什么东西
  6. 【笔记】ARM架构和ARM芯片(三)
  7. iOS开发除了XCode还需要掌握的8个重要工具,让您开发更容易
  8. dell 720 raid 配置
  9. 微信小程序毕业设计 基于微信体育馆场地预约小程序系统开题报告
  10. 2021-04-10 仿牛客网第六章