一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机

一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机

提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。

王树森娓娓道来**《小红书的推荐系统》**
GitHub资料连接:http://wangshusen.github.io/
B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

基础知识:
【1】一文看懂推荐系统:概要01:推荐系统的基本概念
【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
【12】一文看懂推荐系统:排序01:多目标模型
【13】一文看懂推荐系统:排序02:Multi-gate Mixture-of-Experts (MMoE)
【14】一文看懂推荐系统:排序03:预估分数融合
【15】一文看懂推荐系统:排序04:视频播放建模
【16】一文看懂推荐系统:排序05:排序模型的特征
【17】一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间


提示:文章目录


Factorized Machine (FM) 因式分解机

前面的文章介绍了召回和排序模型,这节后面内容是特征交叉,在召回和排序中都会用到。

这节介绍最基础的factory machine缩写是FM

几年前FM在召回和排序中都很常用,但是现在FM已经不太常用了,

但大家不妨了解一下FM的思想,知道某些年特征交叉是怎么做的

在讲FM之前,我先讲一下线性模型,
在这里插入图片描述

设模型用到第一个特征,用D位向量X表示。

用下标表示向量中的元素,这是个线性模型,
在这里插入图片描述

公式中的B是偏移项,英文叫做bias。
第二项是对D个特征的连加,其中的W下标I表示每个特征的权重。
把线性模型的输出记作P,它是对目标的预估

为了方便,这里我没有用激活函数。

如果做二分类,可以用sigmoid激活函数,这个线性模型有D加一个参数,We到WD是权重,D是偏移项。

不难看出,线性模型的预测是特征的加权和

这个特征X1到XD只有相加,没有相乘,也就是说特征之间没有交叉

在推荐系统的应用中,特征交叉是很有必要的,可以让模型的预测更准确。
在这里插入图片描述

这个公式用到了二阶交叉特征,这两项跟前面一样,就是个简单的线性模型,

区别在后面,这里的Xi乘以XJ是两个特征的交叉,前面的u下标ij是权重,
这种特征交叉的话,两个特征不仅仅能相加,还能相乘,这样可以提升模型的表达能力。

举个例子,假设特征是房屋的大小,还有周边楼盘每平米的单价
目标是估计房屋的价格,
仅仅用房屋的大小和每平米的单价的加权和是估不准房屋价格的。
如果做特征交叉,让房屋大小和每平米单价这两个特征相乘,就能把房价估的很准,
这就是为什么交叉特征有用。

如果有这个特征,那么模型参数量正比于d 平方,
大多数的参数是交叉特征的权重u,如果d比较小,这样的模型没有问题,
但如果d很大,那么参数数量就太大了,计算代价会很大,而且容易出现over fitting。

接下来我们讨论如何减少参数数量,我们重点关注交叉特征的权重,

小u可以把所有的权重小u ij组成矩阵大U
在这里插入图片描述

小u ij是大U的第I行第j列上的一个元素。

矩阵大U有d行和d列,d是参数的数量大,U是个对称矩阵,
可以对矩阵大U做低值近似,用矩阵大V乘以大V转置
来近似矩阵大U
在这里插入图片描述

矩阵大V有d行,跟大U一样,
大V有k列,k远小于d,K是个超参数,由我们自己设置,k越大,大V乘以大V转置就越接近矩阵大U。

我们看一下权重小u ij,可以把它近似成Vi和Vj的内积。
在这里插入图片描述

我在图中标注一下,uij是矩阵大U的第i行,第j列上的元素,Vi是矩阵V的第i行,Vj是矩阵大V的第j行。

小u ij约等于这两个向量的内积,

把交叉特征的权重小u ij近似成向量vi和vj的内积,
那么模型就变成了下面的factories machine
在这里插入图片描述

唯一的区别就是在这里FM用向量vi和vj的内积作为交叉特征的权重

FM的参数数量是取成大V的大小等于bogO of kd。【数据结构中的复杂度表示方法】

k是超参数,远比d小

FM的好处在于参数数量更少,从big O of d square降低到了big O of kd,这样使得推理的计算量更小,而且不容易出现过拟合。

FM的原理很简单,我已经讲完了。

最后总结一下,FM是线性模型的替代品,凡是能用线性回归、逻辑回归的场景都可以用FM
就是在线性模型后面加上交叉项。
在这里插入图片描述

FM使用二阶交叉特征,因此模型的表达能力比线性模型更强,
尤其是在推荐系统中,交叉特征非常有用。
FM的效果显著比线性模型好,简单粗暴。
使用二阶交叉特征的话,参数数量是be goto square d。

特征数量FM的好处在于减少了参数数量,通过把小u ij近似为向量ui和vj的内积
FM把参数数量从big O of d square降低到了big O of kd

FM是上面那篇2010年论文提出的。

在那个时代,早期的推荐系统通常使用逻辑回归预估点击率。
在逻辑回归中用FM做特征交叉,在推荐系统中效果很好,流行了很长一段时间。

我的感觉是,现在FM在工业界推荐系统中已经过时了,我不清楚其他公司是不是还在用FM,反正我们小红书的召回排序早就下掉了FM。


总结

提示:如何系统地学习推荐系统,本系列文章可以帮到你

(1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
(2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
(3)今日推荐系统学习经验:现在FM在工业界推荐系统中已经过时了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值