“域”概念的提出
本篇的模型是FFM,全称是Field-aware Factorization Machine。作者认为,FM中虽然对特征做了高阶(一般是二阶)交叉,但是有一个弊端:在实际场景中,特征的领域(Field)很可能不同,比如性别、品牌、国籍等,向量在不同域的表示应该不一样才对,FM只用一个向量Embedding来表示特征,也就意味着在与其他特征做交叉的时候,使用的是同一个向量,这显然是不合理的。
所以,FFM引入了域(Field)的概念,做法就是每个特征不再使用单一向量表示,而是 f f f个向量,这里的 f f f就是域的个数。
特征交叉
介绍完了FFM的概念,下面用一个例子来讲一讲FFM是如何做特征交叉的,原理很简单。看下面这个例子,假设某个训练样本拥有“发行商-广告商-性别”三个维度的特征,如下图所示:
Publisher - P | Advertiser - A | Gender - G |
---|---|---|
ESPN | NIKE | MALE |
如果是FM做特征交叉,回想一下,FM是给每个特征初始化一个向量(Embedding),然后用内积来表示这一对向量之间的关系,所以表达式应该是:
w E S P N ∗ w N I K E + w E S P N ∗ w M a l e + w N I K E ∗ w M a l e w_{ESPN} * w_{NIKE} + w_{ESPN} * w_{Male} + w_{NIKE} * w_{Male} wESPN∗wNIKE