坠入深渊的传统之发展——FM、FFM、GBDT+LR

我很好奇

如果我们将深度学习之前的算法称之为传统算法,那么毫无疑问,回顾这几十年各类算法的发展,基本都是一个从简到繁的过程,从最开始的弱数学,演变为越来越多的数学工具加入其中。在这一点上,和物理学很像,我们高中时学的物理很少涉及特别复杂的数学运算,但是大学时学的就已经融入各种数学公式了...于是乎,推荐领域在引入深度学习之前的发展路线,大抵也是类似的...

FM模型

正如上一篇文章说的,逻辑回归作为一个简单好用的模型,优点很多,但是缺点也很明显,它的表达能力不够强,因为它无法进行特征交叉和特征筛选这些高级操作,这样,有时候不仅会造成信息的损失,甚至可能会导致得出错误的结论。一个著名的例子就是“辛普森悖论”。

辛普森悖论

在对样本集合进行分组研究的时候,在分组比较中占有优势的一方,在总评中有时反而是失势的一方,这种有悖常理的现象,被称之为“辛普森悖论”。


pixiv 250米长的办公桌

很多人知道P站吧,不是那个黄色网站哈,是那个日本年轻人最想加入的公司pixiv,它的付费会员的图片排序里有三个选项:男性最受欢迎,女性最受欢迎和全站最受欢迎,且看下面两个表中的数据:

表1: 男性用户

图片 点击 曝光 点击率
图片A 8 530 1.51%
图片B 51 1520 3.36%

表2:女性用户

图片 点击 曝光 点击率
图片A 201 2510 8.01%
图片B 92 1010 9.11%

容易看出,不论是男性用户还是女性用户,对图片B的点击率都高于A,显然,不管是点击哪个按钮,图片B都应该排在图片A的前面。
事实真的如此吗?okay,让我们忽略性别这个维度,来看一下全站的数据:

表3: 全站数据

图片 点击 曝光 点击率
图片A 209 3040 6.88%
图片B 143 2530 5.65%

我的天,图片A的点击率居然比图片B高了,如果按照这个排序,显然会跟之前分组的排序截然不同,这就是著名的“辛普森悖论”。

在上面的例子中,分组实验相当于使用“性别”+“item id”的组合特征计算点击率,而汇总实验则使用“item id”这一单一特征计算点击率。汇总实验对高危特征进行了合并,这造成了大量有效信息的损失,因此无法正确刻画数据模式。

逻辑回归只是简单的对单一特征进行简单的加权,很难自动进行特征交叉生成高维组合特征,因此表达能力较弱,以至于可能得出“辛普森悖论”这样的错误结论,于是改造LR模型可谓是迫在眉睫。

POLY2

既然LR模型无法自动的进行特征交叉,那咱就手动组合特征呗,然而这个手动组合特征的工作即时对于有颇有经验的运营也颇为棘手,人工的方法无疑是低效的,而且人的经验也具有局限性。就这?显然,对于算法工程师来说这不是个问题,人工组组不来,那就用“暴力”组合的方式来对特征进行组合不就好了嘛!这就是POLY2模型,它的数学形式如下:
POLY2(w,x) = \sum^n_{j_1=1}\sum^n_{j_2=j_1+1}w_{h(j_1,j_2)}x_{j_1}x_{j_2}
从公式容易看出,改模型对所有特征进行了两两交叉,并对所有的特征组合赋予权重w_{h(j_1,j_2)} .
POLY2通过暴力组合特征的方式,在一定程度上解决了特征组合的问题,其训练方式与逻辑回归并无区别,便于工程上的兼容,但是它存在两大缺陷:
1.互联网上的类别数据往往采用one-hot编码,因此特征向量十分稀疏,这种无选择的暴力组合无疑特征稀上加稀,导致大部分交叉特征的权重缺乏有效的训练数据进行训练,模型无法收敛。
2.权重参数数量由n增加到n^2,极大增加了训练复杂度。

sos团

FM

为了解决FM模型的缺陷,2010年,Rendle提出了FM模型,它在POLY2公式的基础上做了点微小的改造,以下是其数学形式:
FM(w,x) =w_0 + \sum_{i=1}^n w_ix_i + \sum^n_{j_1=1}\sum^n_{j_2=j_1+1}(w_{j_1}·w_{j_2})x_{j_1}x_{j_2}
哈哈,它巧妙的将单一权重w_{h(j_1,j_2)}换成了向量内积w_{j_1}·w_{j_2} ,这简直就和矩阵分解中用隐向量代表user和item的做法异曲同工呀!! 与此同时,FM把POLY2模型n^2 级别的参数个数减少到了nk (k为特征维度,n>>k),极大的降低了训练开销。不仅如此,隐向量的引入,对解决数据稀疏问题也很有帮助,比如对于(a,b)这样的组合特征的权重,在POLY2中只有(a,b)同时出现在一个训练样本中时才能得到训练,但是在FM中能在类似(a,c),(b,d) 这样的特征组合中进行学习,这大幅降低了模型对数据稀疏性的要求,甚至就算从未出现过(a,b)这样的样本,它的权重同样因为其他含有a,b的组合被学习到了,这真是太棒了。相比于POLY2,FM虽然丢失了某些特征组合的精度,但是泛化能力得到极大的提高。
在工程方面,FM不失实时性和灵活性,相对于后来用的深度学习模型更加容易部署和线上服务。

FFM

FFM在FM的基础上引入了特征域感知的概念,使模型的表达能力变得更强,其数学形式如下:
FFM(w,x) =w_0 + \sum_{i=1}^n w_ix_i + \sum^n_{j_1=1}\sum^n_{j_2=j_1+1}(w_{j_1,f_2}·w_{j_2,f_1})x_{j_1}x_{j_2}
观察公式,不难发现,它与FM的区别在于隐向量由原来的w_{j_1} 变成了w_{j_1,f_2},而这个f 实际上就是特征域的特征。比如说,当x_{j_1}特征和x_{j_2}特征进行交叉时,会将x_{j_1}特征与x_{j_2}的特征域特征f_2的特征x_{j_1,f_2}x_{j_2}特征与与x_{j_1}的特征域特征f_1的特征w_{j_2,f_1}进行交叉。
噗,这样说起来特别的迷糊....还是举个具体的例子吧......
比如咱是在做游戏的推荐,现在我们有这样一个样本:

游戏名 厂商 类型 价格
ICEY 心动网络 Steam移植 18

每个特征类型作为一个特征域,于是这里有4个特征域:

对应Field 编个Index
游戏名 f1 1
厂商 f2 2
类型 f3 3
价格 f4 4

实际的值呢对应着4中特征:

对应的特征值 编个Index
ICEY x1 a
心动网络 x2 b
Steam移植 x3 c
18 x4 d

下面,我们对这四种特征进行两两的FFM交叉就是:
w_{a,2}·w_{b,1}·x_1·x_2 + w_{a,3}·w_{c,1}·x_1·x_3 + w_{a,4}·w_{d,1}·x_1·x_4 + w_{b,3}·w_{c,2}·x_2·x_3 + w_{b,4}·w_{d,2}·x_2·x_4 + w_{c,4}·w_{d,3}·x_3·x_4
相当于,划分为多少个特征域,相应就有多少个隐向量。在FFM训练过程中,需要学习n个特征在f个域上的k维隐向量,参数个数就是nfk个,因为二次项并不能像FM那样进行简化,因此其复杂度就是kn^2 .也就是说,为了引入更多有价值的信息,FFM的计算复杂度从FM的kn上升到了kn^2,因此在实际工程中用到的话,其模型效果和工程投入之间需要权衡。

GBDT+LR模型

正如前文所言,FFM的计算复杂度已经相当的高了,如果再增加3个特征的交叉的话复杂度就实在太高了,对于更高维的特征组合无能为力。于是就需要通过其他方式来处理高维特征组合的问题。于是Facebook在2014年提出了GBDT+LR的解决方案。

那么GBDT+LR到底做了些什么呢?简言之,就是利用GBDT自动进行特征的筛选和组合,进而生成新的离散特征向量,再将其作为LR模型的输入来预估CTR。而其中GBDT和LR实际上是独立的两部分,训练也是分开训练的,因此不存在如何将LR的梯度回传到GBDT这类的复杂问题,鉴于上篇文章我们已经介绍过LR了,这里主要介绍一下GBDT是个什么东西。

GBDT的基本结构是决策树组成的树林,学习方式是梯度提升。

GBDT的基本结构

作为集成模型,它预测的方式是将所有的子树结果加起来:
D(x) = d_{tree1}(x) + d_{tree2}(x) + ...

GBDT通过逐一生成决策子树的方式来逐渐构建整个树林,它利用样本标签值与当前树林预测值之间的残差来生成新的子树。
假设当前已经生成了3颗子树,则当前的预测值为
D(x) = d_{tree1}(x) + d_{tree2}(x) + d_{tree3}(x)

那么要构建的第4颗树,使当前的预测结果为当前预测与第3颗树结果之和,从而使拟合函数
f(x)
进一步逼近真实值:
f(x) = D(x) + d_{tree4}(x)

理论上,如果可以无限生成决策树,那么GBDT可以无限逼近由所有训练样本组成的目标拟合函数,从而减小预测误差。

利用训练好的GBDT模型,就可以很方便的将新特征转化为向量,具体过程如下图:


GBDT+LR

上图,我们看GBDT这一部分,列举了n颗子树,每颗子树有一些叶子节点,输入一个训练样本后,它会先后落入各个子树的叶子节点,比如子树1的第1个节点,那它的特征向量就是[1,0,0] ,同理子树2是[0,0,1,0] ... 最后把所有子树的向量串连起来就得到了样本的特征向量。

思考一下GBDT的结构,不难看出,决策树的深度决定了特征交叉的阶数。如果决策树的深度为4,这通过3次节点分裂,最终的叶子节点实际上是进行三阶特征组合的结果,如此强的特征组合能力显然是FM系列模型所不具备的。但是正如上面提到的,GBDT可以不断生成树从而无限逼近,因此它很容易过拟合,并且这种特征转换方式损失了大量特征的数值信息,因此并不能简单的说GBDT的特征交叉能力强它就比FFM牛逼。在模型的选择和条是上,永远是多种因素共同作用的结果。

搞过深度学习的人,又没有发现...这个用GBDT生成特征向量的方式和Embedding十分像...都是利用一个模型来自动的提取特征...这也印证了推荐系统的逐渐使用深度学习的发展趋势~

传统已经陷入深渊,时代需要寻求新的发展。
下一篇我们开始探讨深度学习的应用了...

参考资料

  1. 王喆的《深度学习推荐系统》
  2. 部分图片来自google图片搜索没考究其来源,侵删...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354