构建企业级推荐系统:算法、工程实现与案例分析
上QQ阅读APP看书,第一时间看更新

7.3.2 FM与SVM的联系

SVM可以表示为输入x变换后的向量与模型参数w的内积:,这里的φ:Rn→Ω,表示将输入向量映射到一个复杂的空间,φ通过内积与核函数(kernel function)建立关联:

下面分线性核函数和多项式核函数两种情况来说明SVM与FM之间的关系。

1.线性核函数

最简单的线性核函数是:Kl(x,z):=1+<x,z>,该核函数对应的映射为

线性核函数的SVM模型方程可以写为

这对应无二阶交叉项的FM,这就是将在7.5.1节中介绍的高阶分解机。

2.多项式核函数

多项式核函数的SVM可以建模自变量的高阶交叉特征,它的核函数是

当d=2(二阶交叉特征)时,对应的映射(其中可行的一个)为

这时二阶多项式核函数的SVM模型方程为

其中,(对称矩阵,symmetric matrix)。

从二阶多项式核的SVM的模型方程来看,它与FM模型方程的主要区别有两点,一是SVM二阶交叉项的参数是独立的(如是独立的),而FM中二阶交叉项是有关联的,<vi,vj>与<vi,vk>之间相关,都依赖vi;二是SVM有变量与自己的交叉(如等),而FM没有。

3.线性核和多项式核下SVM存在的问题

下面来说明在数据稀疏的情况下,为何SVM无法很好地学习模型。以隐式反馈的协同过滤(特征的值为0或者1)来说,利用用户特征和标的物特征这两类特征来训练模型,预估用户对标的物的偏好。用户特征是n(用户数)维的,标的物特征是m(标的物数)维的,这时每一个样本的特征只有两个特征非零,其他都为零(该用户所在的列及该用户有过行为的标的物这列非零)。数据是相当稀疏的(2/(m+n)的数据非零,一般m、n是非常大的,所以非常稀疏)。

针对上面提到的协同过滤数据,线性SVM模型等价为=w0+wu+wi。从第4章的内容可以知道,该模型非常简单,仅仅整合了用户和标的物的偏差,没有用户和标的物嵌入向量的内积项,因此非常容易训练,但是效果不会很好。

同样地,针对上面的协同过滤案例,二阶多项式核的SVM的模型方程现在变为

从上式可以看到,其实表达的都是用户相关的特征,我们可以将它们合并为一项,同理,也可以归并在一起。通过归并,最终模型变为

一般来说,大多数情况下一个用户只对某个标的物进行一次隐式反馈,因此针对划分在测试集中的(u,i)对,在训练集中没有数据与之对应,这时,我们无数据用于训练求参数。因此在隐式协同过滤场景下,二阶多项式核的SVM无法很好地利用二阶交叉特征,只能训练出用户和标的物的bias(wu,wi),最终效果其实跟线性SVM是一样的。

看完上面的讲解及案例介绍,下面总结一下FM与SVM的主要差异点。

·如果是稀疏数据,SVM模型相互独立的高阶交叉参数无法得到很好的训练,而FM由于二阶交叉项的参数是通过分解得到的,参数之间是有关联的,所以更容易训练,特别是在数据稀疏的情况下,其他交叉项的训练数据可以用于训练,因此效果相对更好。

·FM模型可以直接学习,而SVM往往通过它的对偶形式进行学习。

·FM的模型方程与训练数据无关,而SVM在预测时依赖部分训练数据(支持向量)。

到此,讲完了FM与矩阵分解及SVM之间的关系及区别,本章参考文献[2]中有关于FM与其他更多模型之间的关系介绍,感兴趣的读者可以阅读进行深入学习。