DeepFM算法详解-推荐算法中的皇冠

概述

DeepFM是一种推荐领域炙手可热的算法,在非常多大家熟识的互联网公司都有落地场景。对于DeepFM最佳的阐述一定是来自于它的原始的论文。

地址:https://arxiv.org/pdf/1703.04247.pd

DeepFM算法详解-推荐算法中的皇冠_第1张图片

然后再介绍下推荐算法的本源,推荐其实是一个典型的二分类场景。在推荐算法中需要做的事情无非是把一个商品或者广告推送给一个人,然后预测出来这个人喜欢或者不喜欢。这里最难的不是如何实现分类,而是特征的提取。

而特征的提取又分为低阶特征和高阶特征。举个简单的例子什么叫低阶特征,比如一个人n天买了m个馒头,我们可以提取一个特质表示这个人每天的馒头消耗量m/n,这个特征只考虑了2个原始特征的交叉,所以是一个低阶特征。那高阶特征顾名思义,可以通过一个特征表示非常多原始特征的交叉,这也是深度学习所擅长的。

论文中指出,无论是低阶特征还是高阶特征,都有它自己的价值,都对推荐准确性有着很大的影响。而如何利用好低阶和高阶的特征,就是DeepFM最大的特点。

 

DeepFM与其它算法的比较

 

通过第一节,大家了解到推荐其实是特征利用的一种博弈。现在就通过特征利用程度介绍下DeepFM与其它算法的区别:

* 逻辑回归(LR):更多考虑线性特征,缺少特征交叉性和高阶特征

* DNN:考虑了高阶特征,缺少了对于低阶特征的考虑

* CNN:考虑近邻特征的关系。较单一,适合图片分类

* RNN:考虑更多的是数据时序性,较单一

* FM:考虑更多低阶特征,缺少高阶特征

* Wide&Deep:同时考虑了低阶特征和高阶特征,但是低阶特征需要手动交叉生成,对用户不友好

* DeepFM:兼顾了低阶和高阶特征,且计算过程中不需要用户干预

文中一份基于开源数据的测试结果也很有说服力:

 

DeepFM算法详解-推荐算法中的皇冠_第2张图片

 

DeepFM架构介绍

 

DeepFM这么牛,究竟是如何实现的呢?从架构上可以拆解成FM部分和DNN部分。

DeepFM算法详解-推荐算法中的皇冠_第3张图片

最底层是输入的稀疏原始特征(One-hot结果),将特征按照Field进行区分,不理解Field含义的同学请学习下FFM。接着进入了Embedding层,将特征限定到有限的向量空间。Embedding层启到一个压缩的作用,不然推荐场景数据是非常稀疏的,比如一个用户A到电商平台B买东西,A可能只购买了一个商品,但是电商平台B有1000个商品,那么购买产品这个特征通过one-hot衍生就是一个1000维度向量,而且在1000纬度里只有1维度有值。Embedding层会缓解参数爆炸。

接着进入FM层和DNN层,两者共用底层的embedding数据,所以效率很高,整个数据embedding只需要计算一次。

在FM层,主要的工作是通过特征间交叉得到低阶特征,以二阶特征为主。这里面指的注意的是,FM算法的特征交叉不是直接拿原始特征相互交叉计算,而是交叉特征因子分解后的结果,这样更能挖掘出特征深层的信息。

DeepFM算法详解-推荐算法中的皇冠_第4张图片

而在DNN层就没有特别多要说的点,就是利用深度学习数据的在网络间的传播性得到高阶特征。

DeepFM算法详解-推荐算法中的皇冠_第5张图片

那最终二分类结果怎么判定也是比较粗暴,利用一个sigmoid求和函数的方式,分别参考FM和DNN的结果做出判断:

总结

 

总体来看,DeepFM会在接下来引领推荐场景一段时间,毕竟这种既考虑低阶又考虑高阶特征的方式具有好的覆盖性,不过整体架构设计上我觉得没有特别多新颖的地方,个人还是很期待在算法领域有本质性突破的技术产生。

目前基于Tensorflow的版本已经比较成熟而且可以达到不错的效果。有兴趣的同学可以看看这个代码实现:

https://github.com/ChenglongChen/tensorflow-DeepFM

里面有数据可以下载,跑起来很简单~

你可能感兴趣的:(推荐算法,机器学习,DeepFM,机器学习)