什么是ffm模型?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是ffm模型?相关的知识,希望对你有一定的参考价值。

1、FFM理论

在CTR预估中,经常会遇到one-hot类型的变量,one-hot类型变量会导致严重的数据特征稀疏的情况,为了解决这一问题,在上一讲中,我们介绍了FM算法。这一讲我们介绍一种在FM基础上发展出来的算法-FFM(Field-aware Factorization Machine)。FFM模型中引入了类别的概念,即field。还是拿上一讲中的数据来讲,先看下图:

在上面的广告点击案例中,

“Day=26/11/15”、“Day=1/7/14”、“Day=19/2/15”这三个特征都是代表日期的,可以放到同一个field中。同理,Country也可以放到一个field中。简单来说,同一个categorical特征经过One-Hot编码生成的数值特征都可以放到同一个field,包括用户国籍,广告类型,日期等等。

在FFM中,每一维特征 xi,针对其它特征的每一种field fj,都会学习一个隐向量 v_i,fj。因此,隐向量不仅与特征相关,也与field相关。也就是说,“Day=26/11/15”这个特征与“Country”特征和“Ad_type"特征进行关联的时候使用不同的隐向量,这与“Country”和“Ad_type”的内在差异相符,也是FFM中“field-aware”的由来。假设样本的 n个特征属于 f个field,那么FFM的二次项有 nf个隐向量。而在FM模型中,每一维特征的隐向量只有一个。FM可以看作FFM的特例,是把所有特征都归属到一个field时的FFM模型。根据FFM的field敏感特性,可以导出其模型方程。

可以看到,如果隐向量的长度为 k,那么FFM的二次参数有 nfk 个,远多于FM模型的 nk个。此外,由于隐向量与field相关,FFM二次项并不能够化简,其预测复杂度是 O(kn^2)。下面以一个例子简单说明FFM的特征组合方式。输入记录如下:

这条记录可以编码成5个特征,其中“Genre=Comedy”和“Genre=Drama”属于同一个field,“Price”是数值型,不用One-Hot编码转换。为了方便说明FFM的样本格式,我们将所有的特征和对应的field映射成整数编号。

那么,FFM的组合特征有10项,如下图所示。

其中,红色是field编号,蓝色是特征编号。

2、FFM实现细节

这里讲得只是一种FFM的实现方式,并不是唯一的。

损失函数

FFM将问题定义为分类问题,使用的是logistic loss,同时加入了正则项

什么,这是logisitc loss?第一眼看到我是懵逼的,逻辑回归的损失函数我很熟悉啊,不是长这样的啊?其实是我目光太短浅了。逻辑回归其实是有两种表述方式的损失函数的,取决于你将类别定义为0和1还是1和-1。当我们将类别设定为1和-1的时候,逻辑回归的损失函数就是上面的样子。

随机梯度下降

训练FFM使用的是随机梯度下降方法,即每次只选一条数据进行训练,这里还有必要补一补梯度下降的知识,梯度下降是有三种方式的.

总给人一种怪怪的感觉。batch为什么是全量的数据呢,哈哈。

查看原文(原文用tensorflow代码实现FFM模型)

参考技术A 大五”模型(Five-Factor Model) “大五”是当代人格心理学的新型特质理论。经过几代人的发展和完善,其理论和研究模式已经由初具规模趋向成熟。主要做法是这样:首先把某一语系的所有描写人的词汇挑选出来,然后进行筛选、比较和匹配,根据语义将词分入不同的范畴组,制成词表,用这个词表让被试对自我或他人进行描述,最后对各个范畴求出相关,形成相关矩阵,再作因素分析。结果得到几个因素,取前几个载荷量大的因子作为人格的基本因素。 近年来许多这方面的研究表明,不论是用英语词汇还是用中文词汇,不论是让被试对自己还是对他人描述,不论采用什么因素抽取和旋转法,结果都是得到了五个主要因素,它们是:E:外向、有活力、热情;A:愉快、利他、有感染力;C:公正、拘谨、克制;N:神经质、消极情绪、神经过敏;O:直率、创造性、思路开阔。这五个因素的字母缩写为OCEAN,意味着“大五”系统的广泛代表性。 “大五”提出以后,与任何新生理论一样都遭到了毁誉参半的待遇。其中主要的异议有:FFM (Five-Factor Model )这种外部观察不足以理解人格和构建人格模型;FFM 支持者对于这个模型究竟是个什么东西莫衷一是;FFM假设人们在填写词表时会激活自我概念,但人们对自我的认识是不准确的;FFM对于人格过程没有任何贡献,而只是对于这些过程的结果提供了一些标签; FFM 所依赖的因素分析技术也是值得怀疑的…… 针对这些攻击, FFM的代表人物之一, McAdams积极地捍卫自己的理论。他首先承认人格不等于特质,但特质研究是有价值的,而且它可以进一步深化。为此他提出了人格研究的三部曲。第一步:找到先天性的特质(dispositional traits);第二步:把人格特质置入时间、地点、角色的情景中去(contextulizing);第三步:整合生活故事(life stories),从这方面去挖掘人格。 从目前来看,大多数人格心理学家都认为“大五”是有其贡献和价值的,但它却很难承担一个大理论的责任,从本质上说人格不可能简单归结为几个因素就了事。如果为了追求经济、简明的大理论而对人格的复杂性视而不见,这将使人格研究蒙受重大的损失。FFM 的实证研究只能说明人格中存在这样一些因子,但人格决不仅仅是这些因子,更何况FFM 远未揭示因素之间的交互作用,解答它们如何与情景交互作用,如何决定行为表现等关键问题。FFM充分体现了人格的静态性,然而人格最富魅力的动态过程却毫无涉及。还有因素分析的使用也有些纯技巧嫌疑,它也在某种程度上减少了 FFM的说服力。 总之,“大五”要作为人格研究所梦寐以求的大理论还不能令人满意,至少目前是这样。本回答被提问者采纳

推荐系统实践与思考-20201107

Q1: fm、ffm、nn等模型实现了特征交叉,还有必要人为构造交叉特征吗?

A1: 有必要!上述模型学习的是两个独立的特征embedding的交叉,先人为构造交叉特征再输入模型之后得到的是一个单独的embedding;在线上实践中,向nn模型中仅仅增加数个人工交叉特征即可实现百分位的auc提升;


Q2: 在构造样本时,有时只选取最大点击位置以上的数据作为样本,为什么?

A2: 是为了去除伪曝光样本。最大点击位置以上的数据肯定曝光过,反之则不然,无法判断用户是否真的感兴趣,这种思想即是above click;有关负样本使用可以参考最新论文:Embedding-based Retrieval in Facebook Search; 曝光未点击样本使用可以参考论文: Unclicked User Behaviors Enhanced Sequential Recommendation


Q3: 在视频推荐中短视频完成率天然就高,如何处理呢?

A3: 可以加入时长做样本调权;


Q4: 如何使用one-hot或者embedding表示多值特征?

A4: 特征的每个值都会有一个单独的编码,该特征最终的表示可以通过将多值的编码取sum或者avg;


Q5: 在离线auc都涨,但是ctr等线上指标没涨,为什么?

A5: 首先保证没有bug;然后check一下包含/去除0值之后的auc;最后再check一下是否有融合等其他逻辑把收益吃掉了;


Q6: 可以用曝光未点击的样本作为cvr负样本吗?

A6: 不可以,cvr计算的是转化率,必须先有点击才能有转化;cvr的负样本必须是点击未转化的;


Q7: 如何使用用户的dislike信息?

A7: 可以考虑将这部分样本过滤或者降权,或者作为负样本;


Q8: 如何避免模型一直放出相似的item?

A8: 可以增加更多特征,避免模型过于依赖少数特征;也可以在排序后(我司叫GR)阶段通过强插、探索、规则等方式增加多样性;


Q9: 如何使用时间信息,比如文章发布时间、用户注册时间等?

A9: 可以计算不同行为时间段内的信息(如有必要,结合分桶),这个是比较有效的特征;


Q10: 为什么工业界很少使用xgboost等树模型?

A10:

(1)需要大量统计特征,效果不一定好;

(2)不支持增量,每次都是全量计算;

(3)不支持embedding,容易过拟合;

(4)不支持多模态;

(5)nn可以做各种结构改变、拓展,树模型可拓展性较差;

(6)不支持大规模id特征;


注:以上是本蚁在日常工作中的实践&思考,部分内容来自浅梦的学习交流小组中成员们的讨论和解答,这是他创建了一个推荐相关的知识星球,如感兴趣,可以扫码加入



以上是关于什么是ffm模型?的主要内容,如果未能解决你的问题,请参考以下文章

19推荐系统10从FM到FFM-自动特征交叉的解决方案

推荐系统——FFM模型点击率CTR预估(代码,数据流动详细过程)

推荐系统系列:FFM理论与实践

前深度学习时代CTR预估模型的演化之路:从LR到FFM

FM/FFM

推荐系统实践与思考-20201107