FM与FFM区分并举例计算特征交互

        因子分解机(Factorization Machines, FM)和字段感知因子分解机(Field-aware Factorization Machines, FFM)都是用于高维稀疏数据的模型,广泛应用于推荐系统、广告点击率预测等任务。两者在结构和实现上有许多相似之处,但也存在一些关键的不同点。下面详细介绍FM和FFM的异同点。

一、特征交互

  1.  FM通过隐向量来捕捉特征之间的交互作用。每个特征都有一个隐向量,特征交互的强度由隐向量的内积决定。
  2. FFM为每个特征在每个字段中引入一个单独的隐向量,从而能够区分不同字段间的特征交互。每个特征在不同字段中的隐向量不同,能够更细致地捕捉字段间的交互。

二、模型公式

FM公式:

$\hat{y}=w_0+\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left\langle\mathbf{v}_i, \mathbf{v}_j\right\rangle x_i x_j$

        其中,v_i表示特征i的隐向量,$\left\langle v_i, v_j\right\rangle$表示隐向量的内积

FFM公式:

$\hat{y}(\mathbf{x})=w_0+\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left\langle\mathbf{v}_{i, f_j}, \mathbf{v}_{j, f_i}\right\rangle x_i x_j$

        其中,$\mathbf{v}_{i, f_j}$表示第 i 个特征在字段 f_j​ 中的隐向量$\left\langle\mathbf{v}_{i, f_j}, \mathbf{v}_{j, f_i}\right\rangle$表示特征 i 在字段 f_j 与特征j在字段 f_i之间隐向量的内积。

三、优点

        FM模型优点:

  • 能够高效地处理稀疏数据,捕捉特征之间的二阶交互。
  • 参数数量较少,计算和存储效率较高。

        FFM模型优点:

  • 能够区分不同字段间的特征交互,捕捉字段间更细粒度的交互信息。
  • 在广告点击率预测等任务中,表现通常优于FM。

四、缺点

        FM模型缺点:

  • 不能区分不同字段间的特征交互,特征交互的权重是全局共享的,无法捕捉字段间的细粒度交互信息。

        FFM模型缺点:

  • 参数数量较多,计算和存储效率较低。
  • 模型训练时间较长,对计算资源要求更高。

五、举例说明FM与FFM的差异性:

        假设我们在做一个广告点击预测的任务,数据集包含以下字段和特征:

  1. 用户信息(字段1)

    • 用户ID(特征1)
    • 性别(特征2)
    • 年龄段(特征3)
  2. 广告信息(字段2)

    • 广告ID(特征4)
    • 广告类别(特征5)
  3. 上下文信息(字段3)

    • 设备类型(特征6)
    • 浏览器类型(特征7)
    • 时间段(特征8)

在这个例子中:

  • 字段数(Field count):3(用户信息、广告信息、上下文信息)
  • 特征数(Feature count):8(用户ID、性别、年龄段、广告ID、广告类别、设备类型、浏览器类型、时间段)

1、参数数量

FM模型

        在FM模型中,每个特征都有一个隐向量。例如,如果隐向量的维度是 kkk,那么每个特征都有一个 kkk 维的向量:

  • 用户ID:\mathbf{v}_{\text{userID}}
  • 性别:\mathbf{v}_{\text{gender}}
  • 年龄段:\mathbf{v}_{\text{ageGroup}}
  • 广告ID:\mathbf{v}_{\text{adID}}
  • 广告类别:\mathbf{v}_{\text{adCategory}}
  • 设备类型:\mathbf{v}_{\text{deviceType}}
  • 浏览器类型:\mathbf{v}_{\text{browserType}}
  • 时间段:\mathbf{v}_{\text{timeSlot}}

总共有 8 \times k个参数。

FFM模型:

        在FFM模型中,每个特征在每个字段中都有一个单独的隐向量。假设隐向量的维度是 k,那么每个特征在每个字段中都有一个 k 维的向量:

  • 用户ID:

    • 在字段1中的隐向量:\mathbf{v}_{\text{userID},1}
    • 在字段2中的隐向量:\mathbf{v}_{\text{userID},2}
    • 在字段3中的隐向量:\mathbf{v}_{\text{userID},3}
  • 性别:

    • 在字段1中的隐向量:\mathbf{v}_{\text{gender},1}
    • 在字段2中的隐向量:\mathbf{v}_{\text{gender},2}
    • 在字段3中的隐向量:\mathbf{v}_{\text{gender},3}

        依此类推,每个特征在每个字段中都有一个单独的隐向量。总共有 8 \times 3 \times k个参数。

2.内积计算

        假设隐向量的维度 k=3k = 3k=3。每个特征都有一个 kkk 维的隐向量。假设特征取值如下:

  • 用户ID = 1
  • 性别 = 男(编码为0)
  • 年龄段 = 18-24(编码为0)
  • 广告ID = 10
  • 广告类别 = 旅游(编码为0)
  • 设备类型 = 手机(编码为1)
  • 浏览器类型 = Chrome(编码为0)
  • 时间段 = 早晨(编码为1)
FM模型

        在FM中,每个特征都有一个隐向量。我们假设隐向量如下:

  • 用户ID(特征1):$\mathbf{v}_{\text {userID }}=[0.1,0.2,0.3]$
  • 设备类型(特征6):$\mathbf{v}_{\text {deviceType }}=[0.4,0.5,0.6]$
  • 时间段(特征8):$\mathbf{v}_{\text {timeSlot }}=[0.7,0.8,0.9]$

        我们只考虑非零特征,因此我们只计算这些特征间的交互。预测值的计算公式为:

$\hat{y}=w_0+\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left\langle\mathbf{v}_i, \mathbf{v}_j\right\rangle x_i x_j$

        对于隐向量的交互部分,计算如下:

$\begin{aligned} & \left(\mathbf{v}_{\text {userID }} \cdot \mathbf{v}_{\text {deviceType }}\right) x_{\text {userID }} x_{\text {deviceType }}+\left(\mathbf{v}_{\text {userID }} \cdot \mathbf{v}_{\text {timeSlot }}\right) x_{\text {userID }} x_{\text {timeSlot }}+\left(\mathbf{v}_{\text {device Type }} \cdot\right. \\ & \left.\mathbf{v}_{\text {timeSlot }}\right) x_{\text {deviceType }} x_{\text {timeSlot }}\end{aligned}$

$\begin{aligned} & \mathbf{v}_{\text {userID }} \cdot \mathbf{v}_{\text {deviceType }}=0.1 \cdot 0.4+0.2 \cdot 0.5+0.3 \cdot 0.6=0.04+0.10+0.18=0.32 \\ & \mathbf{v}_{\text {userID }} \cdot \mathbf{v}_{\text {timeSlot }}=0.1 \cdot 0.7+0.2 \cdot 0.8+0.3 \cdot 0.9=0.07+0.16+0.27=0.50 \\ & \mathbf{v}_{\text {device Type }} \cdot \mathbf{v}_{\text {timeSlot }}=0.4 \cdot 0.7+0.5 \cdot 0.8+0.6 \cdot 0.9=0.28+0.40+0.54=1.22\end{aligned}$

特征值代入:

$0.32 \cdot 1 \cdot 1+0.50 \cdot 1 \cdot 1+1.22 \cdot 1 \cdot 1=0.32+0.50+1.22=2.04$

因此,FM模型的预测值的交互部分是2.04。

FFM模型

        在FFM中,每个特征在每个字段中都有一个单独的隐向量。假设隐向量如下:

  • 用户ID(特征1):

                在字段1中的隐向量:\mathbf{v}_{\text{userID},1} = [0.1, 0.2, 0.3] (未使用)

                在字段2中的隐向量:\mathbf{v}_{\text{userID},2} = [0.1, 0.2, 0.3](未使用)

                在字段3中的隐向量:\mathbf{v}_{\text{userID},3} = [0.1, 0.2, 0.3]

  • 设备类型(特征6):

                在字段1中的隐向量:\mathbf{v}_{\text{deviceType},1} = [0.4, 0.5, 0.6] 

                在字段2中的隐向量:\mathbf{v}_{\text{deviceType},2} = [0.4, 0.5, 0.6](未使用)

                在字段3中的隐向量:\mathbf{v}_{\text{deviceType},3} = [0.4, 0.5, 0.6]

  • 时间段(特征8):

                在字段1中的隐向量:\mathbf{v}_{\text{timeSlot},1} = [0.7, 0.8, 0.9] 

                在字段2中的隐向量:\mathbf{v}_{\text{timeSlot},2} = [0.7, 0.8, 0.9](未使用)

                在字段3中的隐向量:\mathbf{v}_{\text{timeSlot},3} = [0.7, 0.8, 0.9]

$\begin{aligned} & \left(\mathbf{v}_{\text {userID }, 3} \cdot \mathbf{v}_{\text {deviceType }, 1}\right) x_{\text {userID }} x_{\text {deviceType }}+\left(\mathbf{v}_{\text {userID }, 3} \cdot \mathbf{v}_{\text {timeSlot }, 1}\right) x_{\text {userID }} x_{\text {timeSlot }}+ \\ & \left(\mathbf{v}_{\text {deviceType }, 3} \cdot \mathbf{v}_{\text {timeSlot }, 3}\right) x_{\text {deviceType }} x_{\text {timeSlot }}\end{aligned}$

$\mathbf{v}_{\text {userID }, 3} \cdot \mathbf{v}_{\text {deviceType }, 1}$ = 0.1·0.4 + 0.2·0.5 + 0.3·0.6 = 0.32

$\mathbf{v}_{\text {userID }, 3} \cdot \mathbf{v}_{\text {timeSlot }, 1}$  =  0.1·0.7 + 0.2·0.8 + 0.3·0.9 = 0.50

$\mathbf{v}_{\text {device Type }, 3} \cdot \mathbf{v}_{\text {timeSlot }, 3}$ =  0.4·0.7 + 0.5·0.8 + 0.6·0.9 = 1.22

因此,FFM模型的预测值的交互部分是0.32+0.50+1.22=1.84。

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值