推荐算法之FM(因子分解机)与FFM

前言

关于FM和FFM的知识有很多,比如召回层或者排序层亦或者是多路召回、统一召回。这些内容以后也会写相应的文章来进行详细的讲解,在这篇文章中只是将这两种算法的基本原理以及公式讲清楚就足够了。

一、POLY2模型

在进行FM以及FFM模型讲解之前,先讲解一下POLY2模型。前面的文章讲过逻辑回归,虽然这是一个非常优秀的算法,但是仅仅依靠单一特征来进行判定的情况下,就会造成信息损失的问题,所以我们还需要进行多维度特征交叉。针对特征交叉问题POLY2模型进行特征的暴力组合来解决这类问题。数学形式如下所示:

推荐算法之FM(因子分解机)与FFM_第1张图片

在公式中模型对所有特征都进行了两两交叉,并对所有的特征组合进行了权重赋予w,但是这样还存在着一些致命问题,比如POLY2模型仍然是线性模型,并且参数数量是n²。在互联网数据中向量往往是非常稀疏的,POLY2进行无差别的特征交叉这就会导致原本就很稀疏的向量变得更加稀疏,从而导致模型无法训练。在这些问题的基础上,我们今天的主角FM就闪亮登场了。⭐⭐⭐

二、FM模型

其实我相信来选择看FM模型讲解文章的小伙伴,应该很大部分不是第一次接触这个模型,其实这个模型的原理很简单,但是不管是现在很火的DNN以及MLP目前很大程度上离不开FM模型的思想。

推荐算法之FM(因子分解机)与FFM_第2张图片

 如图所示,和POLY2不同的是FM模型也直接引入任意两个特征的二阶特征组合,FM对于每个特征,学习一个大小为k的一维向量,于是,两个特征x_i和 x_j的特征组合的权重值,通过特征对应的向量 v_i和v_j的内积来表示。其实这和矩阵分解一样,也算是embedding的鼻祖了。其实到这里FM模型也就是基本完了,接下来说一下为什么要这么做吧。FM的基本原理就是为每一个特征向量赋予了一个“隐向量”,在进行特征交叉的时候直接使用特征向量的隐向量进行交叉,这样即免去了稀疏向量造成的无法训练问题,也将参数量降到了n*k,k为隐向量的大小。

这一部分内容我纠结了很长时间要不要详解,这不仅是对小伙伴们的一种折磨,这也是对我自己的一种折磨。

你可能感兴趣的:(推荐算法,算法,机器学习)