学习FM算法之前,作为小白,在面对一堆带有FM名字的算法时总是一脸茫然,FFM(Field-aware
Factorization Machines)就是其中让我头疼的一个。但是静下心来,认真学习FFM之后,反而觉得并
不是想像中的那么晦涩难懂。这篇文章就记录一下我对FFM算法的理解,但是个人水平十分有限,有不
对的地方,还请大家指出,不胜感激!
1 FFM简介
1.1 提出的动机
通过上一篇文章(因子分解机(FM)简介及实践),我们了解到FM通过两个向量对原始的二阶特征组
合权重矩阵 进行分解,进而缓解了稀疏数据对权重更新的影响,如公式1所示:
假设现有一组人工构造的CTR数据,其大致格式如下图所示,其中“+”代表该广告在展示过程中被点击的
次数,“-”代表没有被点击的次数,“Publisher”列代表的是发放广告的平台,而“Advertiser”列代表的是
不同的广告主。
那么对于一条数据:
FM算法在进行预测时,它的二阶项可以表示为:
从中可以看出,每项特征都通过一个隐向量来与其他特征的隐向量进行组合,进而实现特征与特征之间
的组合关系。以ESPN为例,在组合另外两个特征时均以相同的一个权重 与其他两个特征的权重
和 进行组合。这里需要说明一点的是,因为"Publisher"特征中包含三个取值,即“ESPN”、
“Vogue”和“NBC”,在实际做的时候会通过one-hot编码将类别变量“Publisher”编码出一个3维的特征向
量,特征向量中的每一维对应一个特征的具体取值,即使用三个类别中的哪一个。因此,在公式2中,
出现的是 而不是 。
评论0