广告推荐模型2:因子分解机(Factorization Machines, FM)

目录

[1. FM模型要解决的核心问题](#1. FM模型要解决的核心问题)

[2. FM模型的核心思想](#2. FM模型的核心思想)

[3. FM模型的原理与公式](#3. FM模型的原理与公式)

a) 模型公式 模型公式)

b) 计算优化 计算优化)

4.一个详细的例子:预测用户点击游戏广告的概率

5.FM在广告系统中的优缺点总结


1. FM模型要解决的核心问题

在广告推荐和CTR预估中,我们最常遇到的数据特点是:

  • ​高维稀疏性​ :特征通常来自用户的性别、年龄、地域,广告的类别、来源等,这些特征经过One-Hot编码后会变成一个维度极高(可能上百万维)的向量。但每个样本(例如一次广告展示)中,只有极少数的特征是非零的(例如一个来自北京的青年男性用户),绝大部分特征都是0。
  • 特征组合​ :决定用户是否点击一个广告的,往往不是单个特征,而是多个特征的组合。例如,"男性用户"和"游戏广告"组合在一起,点击率可能会很高;而"女性用户"和"游戏广告"组合在一起,点击率可能就偏低。捕捉这些特征之间的交互作用至关重要。

​传统的模型(如逻辑回归)的困境:​

逻辑回归模型本质上是一个线性模型,无法自动捕捉特征交互。为了让它能学习特征组合,工程师必须手动进行特征工程,例如将"性别"和"广告类别"组合成一个新的特征"性别-广告类别交叉特征"。这种方式存在巨大问题:

  1. 难以穷举​ :在超高维特征下,有价值的组合特征可能非常多,人工难以发现所有有效的组合。
  2. 计算爆炸​ :组合后的特征维度是指数级增长的,模型训练的计算和存储成本无法承受。
  3. ​稀疏性下的失效​ :对于从未出现过的特征组合(例如某个地区的某个小众爱好),由于在训练数据中没有样本,模型无法学习其权重。

​FM模型就是为了优雅地解决上述问题而提出的。​

2. FM模型的核心思想

FM的核心思想是:​​将特征交互矩阵进行矩阵分解,用低维稠密向量来表征每个特征,从而解决稀疏数据下的特征组合学习问题。​

简单来说,它不再为每一对特征组合 (xi, xj)学习一个独立的权重 Wij(这在稀疏数据下基本学不好),而是为​​每个特征​ ​学习一个​​K维的隐向量(Latent Vector)​ ​。然后,两个特征交互的权重就由它们对应的隐向量的内积 〈Vi, Vj〉来估计。

​这样做的好处是:​

即使特征 i和特征 j在训练数据中从未同时出现过(比如"北京用户"和"某款冷门游戏"),我们仍然可以估计它们组合的权重,因为我们有从其他组合中学到的 V_北京V_冷门游戏向量。这极大地提升了模型的泛化能力。

3. FM模型的原理与公式

a) 模型公式

FM模型的方程如下(以二阶交叉为例):

我们来分解一下这个公式:

  1. 常数项​ ():全局偏置。
  2. 一阶线性项​ ():类似于逻辑回归,衡量每个特征独自对目标的影响。
  3. 二阶交叉项​ ():这是FM的精髓。它建模了所有两两特征之间的交互作用。
    • Vi是特征 i的隐向量,是一个长度为 k的稠密向量。
    • 〈Vi, Vj〉是两个向量的点积,其结果代表了特征 i和特征 j的组合权重。
b) 计算优化

直接计算二阶项的时间复杂度是 O(kn²),对于高维特征来说很慢。FM论文中通过数学变换将其优化到了 O(kn),使其非常高效:

这个变换是FM能投入实际应用的关键,它让计算量只与特征数量 n和隐向量长度 k成正比。

4.一个详细的例子:预测用户点击游戏广告的概率

我们继续使用LR例子中的场景,但这次用FM模型来解决。用户是23岁的男性Alice,广告是《王者荣耀》游戏。

第一步:特征表示(Feature Representation)

特征工程和LR一样,我们需要将类别特征进行One-Hot编码,形成稀疏特征向量。假设我们的特征库只有6个特征,那么这次广告请求可以表示为:

X = [x_user_male=1, x_user_age=23, x_hist_game_click=3, x_ad_category_game=1, x_time_evening=1, x_os_ios=1]

注意 :在工业界,这个向量的长度可能是几百万维,但大部分值为0,只有少数几个为1或某个连续值。这种极端稀疏性是广告/推荐领域的典型特征。

第二步:模型架构 - FM如何工作

FM模型的公式如下:

关键思想 :FM没有为每一对特征组合 (i, j) 直接学习一个权重 (在稀疏数据下,很多 会因为没有共现而无法训练),而是通过学习两个k维的隐向量 v_iv_j,用它们的点积来表示这个权重。

第三步:隐向量(Embedding)的奇妙之处

假设隐向量维度 k=2。模型为我们的6个特征都分别学习了一个2维的隐向量:

  • v_1 (user_male) = [0.2, 0.6]

  • v_2 (user_age=23) = [0.1, -0.3] (连续特征也有对应的隐向量)

  • v_3 (hist_game_click=3) = [0.9, 0.4]

  • v_4 (ad_category_game) = [0.5, 0.7]

  • v_5 (time_evening) = [0.3, 0.1]

  • v_6 (os_ios) = [-0.2, 0.5]

现在,我们来看一个具体的组合。我们想计算特征 user_male (i=1) 和特征 ad_category_game (j=4) 这个组合的权重。

  • 在LR中,我们需要事先手动创建这个组合特征 x_male_game 并希望数据能学习到它的权重 w_male_game

  • 在FM中,这个权重是动态计算出来的:<v_1, v_4> = (0.2 * 0.5) + (0.6 * 0.7) = 0.1 + 0.42 = 0.52

这个 0.52 就是模型认为"男性用户"和"游戏广告"这个组合对"点击"的贡献强度。 这个值会在模型训练过程中不断更新优化。

第四步:解决稀疏性问题 - FM的强大泛化能力

假设在训练数据中,从来没有出现过 用户使用iOS广告类别为游戏 同时出现的情况。那么在LR模型中,权重 w_os_ios_game 永远为0,模型无法对这个未知组合做出判断。

但在FM模型中:

  • 特征 os_ios (v_6 = [-0.2, 0.5]) 可能通过和其他特征(如 time_evening)的交互,已经学到了一些信息。

  • 特征 ad_category_game (v_4 = [0.5, 0.7]) 也通过和 user_malehist_game_click 的交互学到了很多信息。

  • 当模型遇到这个从未出现过的组合时,它可以直接计算隐向量的点积来得到一个合理的权重估计:<v_6, v_4> = (-0.2*0.5) + (0.5*0.7) = -0.1 + 0.35 = 0.25

这意味着,FM模型即使面对从未出现过的特征组合,也能做出相当准确的预测! 这种泛化能力是其最大的优势。

第五步:效率问题 - 数学变换的魔力

直接计算所有两两特征组合,复杂度是O(n²),在特征百万维的场景下是不可行的。FM通过一个数学变换(推导过程面试不要求必会),将二阶项的计算复杂度优化到了O(kn),变得和线性模型一样高效!

最终公式变换为:

这个公式允许我们高效地计算二阶项。

5.FM在广告系统中的优缺点总结

优点:

  1. 自动特征交叉:无需人工参与,自动学习所有二阶特征组合,解放了生产力。

  2. 强大的泛化能力:通过隐向量,能够对未出现过的特征组合进行有效预测,这在极度稀疏的广告场景下至关重要。

  3. 高效的计算性能:通过数学变换,时间复杂度优化到O(kn),可用于工业级大数据场景。

缺点:

  1. 仅限于二阶交叉:虽然二阶交叉很重要,但更高阶的组合(如"年轻男性在晚上使用iOS设备看游戏广告")可能也包含重要信息,标准FM无法捕获。(后续的DeepFM等模型解决了这个问题)

  2. 隐向量内积不一定是最优:点积运算可能不是衡量两个特征组合关系的最优方式。

FM模型的核心思想是用隐向量的点积 来代替单一的组合特征权重。这解决了LR模型在稀疏数据下无法学习未见特征组合的问题,实现了自动化的二阶特征交叉,并且通过数学优化保证了计算效率。它是推荐系统从手工时代走向自动化时代的一个里程碑式模型。

相关推荐
机器之心15 分钟前
谷歌nano banana正式上线:单图成本不到3毛钱,比OpenAI便宜95%
人工智能·openai
兰亭妙微16 分钟前
从线到机:AI 与多模态交互如何重塑 B 端与 App 界面设计
人工智能·小程序·交互·用户体验设计公司
MansFlower25 分钟前
Gemini 2.5 Flash Image Preview:nano banana
人工智能
机器之心32 分钟前
拒稿警告,靠大模型「偷摸水论文」被堵死,ICLR最严新规来了
人工智能·openai
算家计算1 小时前
“下一代”图像模型——ComfyUI-Flux-Krea本地部署教程,体验划时代的图像质量
人工智能·开源·flux
算家计算1 小时前
国务院发布“人工智能+”行动意见,算力基建或将迎来风口!
人工智能·云计算·资讯
johnny2331 小时前
文本转语音TTS工具合集(下)
人工智能
艾醒2 小时前
大模型面试题剖析:大模型微调与训练硬件成本计算
人工智能·后端·算法
三花AI2 小时前
风口真的要来了,国务院关于深入实施“人工智能+”行动的意见
人工智能·开源
LLM精进之路2 小时前
上海AI实验室突破扩散模型!GetMesh融合点云与三平面,重塑3D内容创作
人工智能·深度学习·机器学习·语言模型·transformer