深度学习面经 - FM、FFM、DeepFM系列

简介:FM、FFM和DeepFM等都是用于解决推荐系统和CTR预测等问题的机器学习模型,能够进行一些特征交叉的工作,也是必备的一些知识点。下面整理了一些关于它们在面试中常问的一些知识点。

简单描述下FM、FFM、DeepFM的联系与区别?

答:FM是一种基于因子分解的模型,用于解决稀疏特征下的预测问题。它通过学习特征之间的交互关系来捕获特征的二阶组合特征。FM可以有效地处理高维稀疏数据,并且参数规模与特征数量和特征维度相关,适用于处理稀疏数据的推荐问题。

FFM是FM的一种扩展,它引入了"Field"的概念,将特征分组到不同的Field中。在传统FM中,所有特征都被视为同一组,而FFM将不同Field中的特征之间的交互建模,更好地捕获了特征之间的非线性关系。FFM适用于处理大规模高维度稀疏数据,并且在处理带有高基数特征的数据时表现更优。

DeepFM是将深度神经网络与FM模型相结合的一种模型。它同时考虑了FM模型的高阶特征交互和深度神经网络的非线性表示学习能力。DeepFM首先通过FM部分来学习特征的低阶交互特征,然后将原始输入和FM部分的输出送入神经网络部分,进一步学习特征的高阶组合特征。由于引入了深度神经网络,DeepFM可以更好地学习数据的抽象特征表示,适用于处理更复杂的数据模式和更大规模的数据集。

FM和LR有什么关系吗?

答:我觉得它其实就是对LR这个模型做的一个有化改进,因为LR我们知道,它的每一个特征之间都是独立输出的,需要手动的交叉特征比较麻烦,而FM通过对任意的两个特征之间进行交叉来达到这个目的,从它的公式的表示上,我们也可以很容易的看出来,它的目标函数由前面的一个LR加上后面的一个两个向量vectore的内积组成的一个交叉项,就是在后面这一部分完成了特征的组合。FM的目标函数是:代表每一个特征xi可以学出一个向量vi,每一个特征xj可以学出一个向量vj。

写一下FM的公式?它的时间复杂度是多少?是否可以做优化?

答:FM的公式如下所示: alt

<vi,vj>是输入特征i,j之间的交叉参数,vi和vj都是k维向量。 总体来说,FM的公式是一个通用的拟合方差,可以采用不同的损失函数用于解决回归、分类的问题,可以用MSE来做回归,也可以用交叉熵损失来做分类,直观上来看,FM的复杂度是O(kn^2),但是FM可以进行化简,化简成一个和的平方 - 平方的和这样一个形式。具体如下:化简完的时间复杂度为O(kn)。 alt

最直接的想法就是直接把FM得到的结果放进sigmoid中输出一个概率值,由此做CTR预估,事实上我们也可以做召回。由于FM模型是利用两个特征的Embedding做内积得到二阶特征交叉的权重,那么我们可以将训练好的FM特征取出离线存好,之后用来做KNN向量检索。

FM中如何处理数值型变量?如何处理multi-hot分类变量?

答:FM模型与FFM模型天然为类别型特征设计,如果不处理数值型特征,以年龄为代表,那1岁和99岁的在二阶特征交叉部分得到的结果差距极大。相当于对隐向量做了缩放。 基于以上理由要对数值型特征进行离散化处理。离散化处理的方式有很多可以等距分桶,等频分桶,也可以根据业务知识分桶。

FM和多项式核SVM的区别?

多项式核的SVM的公式如下: alt

可以看到虽然和FM模型的表达式很相似。区别在于SVM的二元特征交叉参数是独立的,比如说它的交叉参数是Wij,而FM中<vi,vj>不是相互独立的,是相互影响的。多项式SVM,交叉的多个特征需要在训练集上共现才能被学习到,否则该对应的参数为0,这样的话对于测试集上的情况而言就失去了意义。因此在稀疏的条件下,共现很难,整体性能表现不佳。而FM通过向量化的交叉,可以学习到不同特征之间的交互,进而提取到更深层次的抽象意义。

了解FFM吗?简单介绍下?

答:FFM模型其实就是在FM模型的基础上,引入了Field这个概念,在fm中,一个特征x与其他的特征交叉使用的是同一种embedding。而FFM它会事先将特征按照一定的规则分为不同的field,特征x属于某一个特定的field,每个特征将会被映射成多个embedding,每个embedding对应一个field,当两个向量做特征组合的时候,用两者对应的field的embeddi

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白机器学习面试指南 文章被收录于专栏

林小白的机器学习指南,从本人面试的机器学习算法岗位出发,对机器学习“八股文”做详细的介绍、推导;

全部评论

相关推荐

08-13 13:54
门头沟学院 Java
被卡学历了简历挂,绷不住了...
去哪儿旅行呢:估计看你有字节实习也不会去
投递4399游戏等公司10个岗位
点赞 评论 收藏
分享
人间雪:简历最好只要一页,除非你牛逼到一页都写不下了
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
为啥美团有的笔试可以AI做题啊。。。。我们怎么就不行
碧海蓝涛:因为ai也做不出来
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务