因子分解机(Factorization Machines, FM)和字段感知因子分解机(Field-aware Factorization Machines, FFM)都是用于高维稀疏数据的模型,广泛应用于推荐系统、广告点击率预测等任务。两者在结构和实现上有许多相似之处,但也存在一些关键的不同点。下面详细介绍FM和FFM的异同点。
一、特征交互:
- FM通过隐向量来捕捉特征之间的交互作用。每个特征都有一个隐向量,特征交互的强度由隐向量的内积决定。
- FFM为每个特征在每个字段中引入一个单独的隐向量,从而能够区分不同字段间的特征交互。每个特征在不同字段中的隐向量不同,能够更细致地捕捉字段间的交互。
二、模型公式:
FM公式:
其中,表示特征的隐向量,表示隐向量的内积
FFM公式:
其中,表示第 个特征在字段 中的隐向量表示特征 在字段 与特征在字段 之间隐向量的内积。
三、优点:
FM模型优点:
- 能够高效地处理稀疏数据,捕捉特征之间的二阶交互。
- 参数数量较少,计算和存储效率较高。
FFM模型优点:
- 能够区分不同字段间的特征交互,捕捉字段间更细粒度的交互信息。
- 在广告点击率预测等任务中,表现通常优于FM。
四、缺点:
FM模型缺点:
- 不能区分不同字段间的特征交互,特征交互的权重是全局共享的,无法捕捉字段间的细粒度交互信息。
FFM模型缺点:
- 参数数量较多,计算和存储效率较低。
- 模型训练时间较长,对计算资源要求更高。
五、举例说明FM与FFM的差异性:
假设我们在做一个广告点击预测的任务,数据集包含以下字段和特征:
用户信息(字段1)
- 用户ID(特征1)
- 性别(特征2)
- 年龄段(特征3)
广告信息(字段2)
- 广告ID(特征4)
- 广告类别(特征5)
上下文信息(字段3)
- 设备类型(特征6)
- 浏览器类型(特征7)
- 时间段(特征8)
在这个例子中:
- 字段数(Field count):3(用户信息、广告信息、上下文信息)
- 特征数(Feature count):8(用户ID、性别、年龄段、广告ID、广告类别、设备类型、浏览器类型、时间段)
1、参数数量:
FM模型
在FM模型中,每个特征都有一个隐向量。例如,如果隐向量的维度是 kkk,那么每个特征都有一个 kkk 维的向量:
- 用户ID:
- 性别:
- 年龄段:
- 广告ID:
- 广告类别:
- 设备类型:
- 浏览器类型:
- 时间段:
总共有 个参数。
FFM模型:
在FFM模型中,每个特征在每个字段中都有一个单独的隐向量。假设隐向量的维度是 ,那么每个特征在每个字段中都有一个 维的向量:
用户ID:
- 在字段1中的隐向量:
- 在字段2中的隐向量:
- 在字段3中的隐向量:
性别:
- 在字段1中的隐向量:
- 在字段2中的隐向量:
- 在字段3中的隐向量:
依此类推,每个特征在每个字段中都有一个单独的隐向量。总共有 个参数。
2.内积计算
假设隐向量的维度 k=3k = 3k=3。每个特征都有一个 kkk 维的隐向量。假设特征取值如下:
- 用户ID = 1
- 性别 = 男(编码为0)
- 年龄段 = 18-24(编码为0)
- 广告ID = 10
- 广告类别 = 旅游(编码为0)
- 设备类型 = 手机(编码为1)
- 浏览器类型 = Chrome(编码为0)
- 时间段 = 早晨(编码为1)
FM模型
在FM中,每个特征都有一个隐向量。我们假设隐向量如下:
- 用户ID(特征1):
- 设备类型(特征6):
- 时间段(特征8):
我们只考虑非零特征,因此我们只计算这些特征间的交互。预测值的计算公式为:
对于隐向量的交互部分,计算如下:
特征值代入:
因此,FM模型的预测值的交互部分是2.04。
FFM模型
在FFM中,每个特征在每个字段中都有一个单独的隐向量。假设隐向量如下:
用户ID(特征1):
在字段1中的隐向量: (未使用)
在字段2中的隐向量:(未使用)
在字段3中的隐向量:
- 设备类型(特征6):
在字段1中的隐向量:
在字段2中的隐向量:(未使用)
在字段3中的隐向量:
- 时间段(特征8):
在字段1中的隐向量:
在字段2中的隐向量:(未使用)
在字段3中的隐向量:
= 0.1·0.4 + 0.2·0.5 + 0.3·0.6 = 0.32
= 0.1·0.7 + 0.2·0.8 + 0.3·0.9 = 0.50
= 0.4·0.7 + 0.5·0.8 + 0.6·0.9 = 1.22
因此,FFM模型的预测值的交互部分是0.32+0.50+1.22=1.84。