三、FM模型

  1. 推荐系统面临的问题是评分预测问题。给定用户集合 三、FM模型 - 图1 、物品集合 三、FM模型 - 图2 ,模型是一个评分函数:

    三、FM模型 - 图3

    三、FM模型 - 图4 表示用户 三、FM模型 - 图5 对物品 三、FM模型 - 图6 的评分。

    其中已知部分用户在部分物品上的评分:三、FM模型 - 图7 。目标是求解剩余用户在剩余物品上的评分:

    三、FM模型 - 图8

    其中 三、FM模型 - 图9三、FM模型 - 图10 的补集。

    • 通常评分问题是一个回归问题,模型预测结果是评分的大小。此时损失函数采用MAE/MSE 等等。

      也可以将其作为一个分类问题,模型预测结果是各评级的概率。此时损失函数是交叉熵。

    • 当评分只有 01 时,这表示用户对商品 “喜欢/不喜欢”,或者 “点击/不点击”。这就是典型的点击率预估问题。

  2. 事实上除了已知部分用户在部分物品上的评分之外,通常还能够知道一些有助于影响评分的额外信息。如:用户画像、用户行为序列等等。这些信息称作上下文 context

    对每一种上下文,我们用变量 三、FM模型 - 图11 来表示,三、FM模型 - 图12 为该上下文的取值集合。假设所有的上下文为 三、FM模型 - 图13 ,则模型为:

    三、FM模型 - 图14

    上下文的下标从 3 开始,因为可以任务用户 三、FM模型 - 图15 和商品 三、FM模型 - 图16 也是上下文的一种。

    如下图所示为评分矩阵,其中:

    三、FM模型 - 图17

    所有离散特征都经过特征转换。

    三、FM模型 - 图18

  3. 上下文特征 context 类似属性 property 特征,它和属性特征的区别在于:

    • 属性特征是作用到整个用户(用户属性)或者整个物品(物品属性),其粒度是用户级别或者物品级别。

      如:无论用户 “张三” 在在评分矩阵中出现多少次,其性别属性不会发生改变。

    • 上下文特征是作用到用户的单个评分事件上,粒度是事件级别,包含的评分信息更充足。

      如:用户 ”张三“ 在评价某个电影之前已经看过的电影,该属性会动态改变。

    事实上属性特征也称作静态画像,上下文特征也称作动态画像。业界主流的做法是:融合静态画像和动态画像。

    另外,业界的经验表明:动态画像对于效果的提升远远超出静态画像。

3.1 模型

  1. Multiverse Recommendation 基于矩阵分解技术求解该问题,它将原始的评分矩阵分解为一个小的矩阵 三、FM模型 - 图19三、FM模型 - 图20 个因子矩阵 三、FM模型 - 图21

    三、FM模型 - 图22

    其中:

    三、FM模型 - 图23

    这种方式存在三个问题:

    • 计算复杂度太高:假设每个特征的维度都是 三、FM模型 - 图24 ,则计算复杂度为 三、FM模型 - 图25 。一旦上下文特征数量 三、FM模型 - 图26 增加,则计算复杂度指数型增长。
    • 仅能对离散型 categorical 上下文特征建模:无法处理数值型特征、离散集合型 categorical set 特征。
    • 交叉特征高度稀疏:这里执行的是 K 路特征交叉(前面的 POLY2 模型是两路特征交叉),由于真实应用场景中单个特征本身就已经很稀疏,K 路特征交叉使得数据更加稀疏,难以准确的预估模型参数。
  2. Fast Context-aware Recommendations with Factorization Machines 论文提出了 FM 算法来解决该问题。

    POLY2 相同FM 也是对二路特征交叉进行建模,但是FM 的参数要比 POLY2 少得多。

    将样本重写为:

    三、FM模型 - 图27

    FM 模型为:

    三、FM模型 - 图28

    其中 三、FM模型 - 图29 是交叉特征的参数,它由一组参数定义:

    三、FM模型 - 图30

    即:

    三、FM模型 - 图31

    模型待求解的参数为:

    三、FM模型 - 图32

    其中:

    • 三、FM模型 - 图33 表示全局偏差
    • 三、FM模型 - 图34 用于捕捉第 三、FM模型 - 图35 个特征和目标之间的关系
    • 三、FM模型 - 图36 用于捕捉 三、FM模型 - 图37 二路交叉特征和目标之间的关系。
    • 三、FM模型 - 图38 代表特征 三、FM模型 - 图39representation vector,它是 三、FM模型 - 图40 的第 三、FM模型 - 图41 列。
  3. FM 模型的计算复杂度为 三、FM模型 - 图42 ,但是经过数学转换之后其计算复杂度可以降低到 三、FM模型 - 图43

    三、FM模型 - 图44

    因此有:

    三、FM模型 - 图45

    其计算复杂度为 三、FM模型 - 图46

  4. FM 模型可以用于求解分类问题(预测各评级的概率),也可以用于求解回归问题(预测各评分大小)。

    • 对于回归问题,其损失函数为MSE 均方误差:

      三、FM模型 - 图47

    • 对于二分类问题,其损失函数为交叉熵:

      三、FM模型 - 图48

      其中:

      • 评级集合为 三、FM模型 - 图49 一共两个等级
      • 三、FM模型 - 图50 为样本 三、FM模型 - 图51 预测为评级 三、FM模型 - 图52 的概率,满足:

    三、FM模型 - 图53

    损失函数最后一项是正则化项,为了防止过拟合,三、FM模型 - 图54 。其中 三、FM模型 - 图55 为参数 三、FM模型 - 图56 的正则化系数,它是模型的超参数。

    可以针对每个参数配置一个正则化系数,但是选择合适的值需要进行大量的超参数选择。论文推荐进行统一配置:

    • 对于 三、FM模型 - 图57,正则化系数为 三、FM模型 - 图58 ,这表示不需要对全局偏差进行正则化。
    • 对于 三、FM模型 - 图59,统一配置正则化系数为 三、FM模型 - 图60
    • 对于 三、FM模型 - 图61,统一配置正则化系数为 三、FM模型 - 图62
  5. FM 模型可以处理不同类型的特征:

    • 离散型特征 categoricalFM 对离散型特征执行 one-hot 编码。

      如,性别特征:“男” 编码为 (0,1),“女” 编码为 (1,0)

    • 离散集合特征 categorical setFM 对离散集合特征执行类似 one-hot 的形式,但是执行样本级别的归一化。

      如,看过的历史电影。假设电影集合为:“速度激情9,战狼,泰囧,流浪地球”。如果一个人看过 “战狼,泰囧,流浪地球”, 则编码为 (0,0.33333,0.33333,0.33333)

    • 数值型特征 real valuedFM直接使用数值型特征,不做任何编码转换。

  6. FM 的优势:

    • 给定特征 representation 向量的维度时,预测期间计算复杂度是线性的。

    • 在交叉特征高度稀疏的情况下,参数仍然能够估计。

      因为交叉特征的参数不仅仅依赖于这个交叉特征,还依赖于所有相关的交叉特征。这相当于增强了有效的学习数据。

    • 能够泛化到未被观察到的交叉特征。

      设交叉特征 “看过电影 A 且 年龄等于20” 从未在训练集中出现,但出现了 “看过电影 A”相关的交叉特征、以及 “年龄等于20”相关的交叉特征。

      于是可以从这些交叉特征中分别学习 “看过电影 A”representation“年龄等于20”representation,最终泛化到这个未被观察到的交叉特征。

3.2 ALS 优化算法

3.2.1 最优化解

  1. FM 的目标函数最优化可以直接采用随机梯度下降 SGD 算法求解,但是采用 SGD 有个严重的问题:需要选择一个合适的学习率。

    • 学习率必须足够大,从而使得 SGD 能够尽快的收敛。学习率太小则收敛速度太慢。

    • 学习率必须足够小,从而使得梯度下降的方向尽可能朝着极小值的方向。

      由于 SGD 计算的梯度是真实梯度的估计值,引入了噪音。较大的学习率会放大噪音的影响,使得前进的方向不再是极小值的方向。

    论文提出了一种新的交替最小二乘 alternating least square:ALS 算法来求解 FM 目标函数的最优化问题。

    SGD 相比ALS 优点在于无需设定学习率,因此调参过程更简单。

  2. 根据定义:

    三、FM模型 - 图63

    对每个 三、FM模型 - 图64 ,可以将 三、FM模型 - 图65 分解为 三、FM模型 - 图66 的线性部分和偏置部分:

    三、FM模型 - 图67

    其中 三、FM模型 - 图68三、FM模型 - 图69 无关。如:

    • 对于 三、FM模型 - 图70 有:

      三、FM模型 - 图71

    • 对于 三、FM模型 - 图72 有:

      三、FM模型 - 图73

    • 对于 三、FM模型 - 图74 有:

      三、FM模型 - 图75

    因此有:

    三、FM模型 - 图76

    考虑均方误差损失函数:

    三、FM模型 - 图77

    最小值点的偏导数为 0 ,有:

    三、FM模型 - 图78

    则有:

    三、FM模型 - 图79

  3. ALS 通过多轮次、轮流迭代求解 三、FM模型 - 图80 即可得到模型的最优解。

    • 在迭代之前初始化参数,其中: 三、FM模型 - 图81 通过零初始化, 三、FM模型 - 图82 的每个元素通过均值为0、方差为 三、FM模型 - 图83 的正太分布随机初始化。

    • 每一轮迭代时:

      • 首先求解 三、FM模型 - 图84 ,因为相对于二阶交叉的高阶特征,低阶特征有更多的数据来估计其参数,因此参数估计更可靠。

      • 然后求解 三、FM模型 - 图85。这里按照维度优先的准确来估计:先估计所有 representation 向量的第 1 维度,然后是第 2 维,… 最后是第 d 维。

        这是为了计算优化的考量。

3.2.2 计算优化

  1. 直接求解 ALS 的解时复杂度较高:在每个迭代步中计算每个训练样本的 三、FM模型 - 图86三、FM模型 - 图87

    对于每个样本,求解 三、FM模型 - 图88三、FM模型 - 图89 的计算复杂度为:

    • 计算 三、FM模型 - 图90 的复杂度为 三、FM模型 - 图91 ,计算 三、FM模型 - 图92 的复杂度为 三、FM模型 - 图93
    • 计算 三、FM模型 - 图94 的复杂度为 三、FM模型 - 图95 ,计算 三、FM模型 - 图96 的复杂度为 三、FM模型 - 图97
    • 计算 三、FM模型 - 图98 的复杂度为 三、FM模型 - 图99 ,计算 三、FM模型 - 图100 的复杂度为 三、FM模型 - 图101

    因此求解 三、FM模型 - 图102 的计算复杂度为 三、FM模型 - 图103

  2. 有三种策略来降低求解 三、FM模型 - 图104 的计算复杂度,从 三、FM模型 - 图105 降低到 三、FM模型 - 图106 ,其中 三、FM模型 - 图107 表示平均非零特征的数量:

    • 利用预计算的误差项 三、FM模型 - 图108 降低 三、FM模型 - 图109 的计算代价 。
    • 利用预计算的 三、FM模型 - 图110 项降低交叉特征的 三、FM模型 - 图111 的计算代价。
    • 利用数据集 三、FM模型 - 图112 的稀疏性降低整体计算代价。
  3. 预计算误差项 三、FM模型 - 图113

    定义误差项:

    三、FM模型 - 图114

    考虑到 三、FM模型 - 图115 ,则有:

    三、FM模型 - 图116

    因此如果计算 三、FM模型 - 图117 的计算代价较低,则计算 三、FM模型 - 图118 的计算复杂度也会降低。

    • 首先对每个样本,计算其初始误差:

      三、FM模型 - 图119

      考虑到 三、FM模型 - 图120 的计算复杂度为 三、FM模型 - 图121 ,因此 三、FM模型 - 图122 的计算复杂度为 三、FM模型 - 图123

    • 当参数 三、FM模型 - 图124 更新到 三、FM模型 - 图125 时,重新计算误差:

      三、FM模型 - 图126

      计算代价由 三、FM模型 - 图127 决定 (根据下面的讨论,其计算复杂度为 三、FM模型 - 图128 )。

  4. 预计算 三、FM模型 - 图129 值:

    如果能够降低计算 三、FM模型 - 图130 的代价,则整体计算复杂度可以进一步降低。由于 三、FM模型 - 图131 的复杂度为 三、FM模型 - 图132 ,因此重点考虑 三、FM模型 - 图133 的计算复杂度。

    重写 三、FM模型 - 图134 ,有:

    三、FM模型 - 图135

    定义:

    三、FM模型 - 图136

    因此如果计算 三、FM模型 - 图137 的计算代价较低,则 三、FM模型 - 图138 的计算复杂度也会降低。

    • 对每个样本、每个representation 向量维度计算初始 三、FM模型 - 图139 值:

      三、FM模型 - 图140

      计算复杂度为 三、FM模型 - 图141

    • 当参数 三、FM模型 - 图142 更新到 三、FM模型 - 图143 时,重新 三、FM模型 - 图144 值:

      三、FM模型 - 图145

      计算代价为 三、FM模型 - 图146

    • 一旦得到 三、FM模型 - 图147 ,则有:

      三、FM模型 - 图148

      计算代价为 三、FM模型 - 图149

  5. 数据集 三、FM模型 - 图150 的稀疏性:

    根据:

    三、FM模型 - 图151

    • 对于 三、FM模型 - 图152 ,其计算复杂度为 三、FM模型 - 图153

      三、FM模型 - 图154

    • 对于 三、FM模型 - 图155, 我们只需要迭代 三、FM模型 - 图156三、FM模型 - 图157 的样本,即 三、FM模型 - 图158 的样本。

      因此每次更新只需要使用部分样本。总体而言,整体复杂度为 三、FM模型 - 图159 ,其中 三、FM模型 - 图160 表示平均非零特征的数量。

3.2.3 算法

  1. ALS 优化算法:

    • 输入:

      • 训练样本 三、FM模型 - 图161
      • 三、FM模型 - 图162 随机初始化的方差 三、FM模型 - 图163
    • 输出:模型参数 三、FM模型 - 图164

    • 算法步骤:

      • 参数初始化:

        三、FM模型 - 图165

      • 初始化 三、FM模型 - 图166

        三、FM模型 - 图167

      • 迭代直至目标函数收敛或者达到指定步数,每一轮迭代过程为:

        • 更新 三、FM模型 - 图168

          三、FM模型 - 图169

        • 更新 三、FM模型 - 图170

          三、FM模型 - 图171

        • 更新 三、FM模型 - 图172

          外层循环为 三、FM模型 - 图173 ,内层循环为 三、FM模型 - 图174 。这是为了充分利用 三、FM模型 - 图175

          三、FM模型 - 图176

  2. 论文实验给出了 SGDALS 优化算法的比较结果。可以看到:

    • SGD 的优化效果很大程度上取决于学习率和迭代次数。

      当精心挑选合适的学习率、足够大的迭代次数(根据验证集执行早停策略从而防止过拟合),SGD 可以达到 ALS 的效果。

    • ALS 不需要精心的、耗时的搜索合适的学习率,就可以达到很好的效果。

    三、FM模型 - 图177