你好,我是大壮。在 06 讲中,我们介绍了协同过滤(CF)算法,它主要通过用户行为构建用户物品共现矩阵,然后通过 CF 算法预测结果实现个性化推荐。其实,除了利用用户行为特征之外,我们还可以利用用户、物品自身特征等辅助信息进行结果预测。
基于物品特征的推荐问题,我们一般通过回归模型进行实现。首先,回归模型会通过算法预测出一个介于 0~1 之间的连续值,这个值代表一种可能性,然后推荐系统将得到的可能性通过排序的方式推荐给用户,最终实现个性化推荐。
因此,这一讲我们介绍一下基于物品特征的推荐算法的演进之路。
线性回归模型
在回归模型中,最简单的形式就是线性回归模型,它的表达式如下所示:
线性回归对于给定的输入 x,会输出一个数值 f(x)。为了消除常数项 b,我们可以令image.png,同时image.png,也就是说给 x 多加一项,使得它的值恒为 1,这时 b 就到了 w 中。于是,我们得到了线性回归模型方程的一个化简形式,如下所示:
对线性回归模型来说,它具有模型简单、可解释性强、运算速度快等优点,但也仅限于线性关系的拟合,如果变量之间是非线性的关系则不适用。
在线性回归模型的基础上,接着我们一起看下逻辑回归模型,它恰好能解决变量之间非线性关系的问题。
逻辑回归(LR)模型
逻辑回归模型预测的目标是一个概率,它的取值在 [0,1] 区间,而线性回归模型的值域在image.png区 间。因此,我们不能直接使用线性模型进行打分推荐,而是需要通过一个模型将线性模型的值域压入 [0,1] 区间。
此时,我们想到使用 Sigmoid 函数进行处理,它的表达式如下所示:
将线性回归模型的表达式代入 Sigmoid 函数后,我们将得到一个逻辑回归模型,它的表达式如下所示:
其实,逻辑回归模型还有另外一种表达式,如下所示:
逻辑回归模型相比协同过滤模型而言,它不单单考虑了用户的行为特征,还加入了年龄、性别等用户特征和时间、地点等物品特征,从而大大提升了模型表达能力。因此,它的优点是模型简单、训练开销小、可解释性强、易于并行化。
不过,线性回归模型和逻辑回归模型都存在一定缺陷,因为它们都是将各个特征进行独立考虑,并没有考虑到特征与特征之间的相互关系。因此,这两种模式的表达能力仍然比较弱,需要大量具备业务背景知识的人员进行人工特征筛选与交叉。
实际上,特征之间可能存在一定关联性。以 58 同城 APP 本地服务推荐为例,一般来说,查看“租车”品类的男性用户较多,而查看“保姆月嫂”品类的女性用户较多。从中我们可以看出,性别与本地服务的品类存在一定关联性。
如果我们能够找出这些特征之间的关联性,将大大提高个性化推荐的准确率。那有没有一种方法能让该模型自动找出这些特征之间的关联性呢?答案:有的,这就诞生了 POLY2 模型。
POLY2 模型
在逻辑回归模型的基础上,我们使用了一种暴力方式将所有特征实现了两两相交进行组合。于是,原来的 LR 模型变成了 POLY2 模型(Degree-2 Polynomial Margin),它的表达式为:
这里我们看到,表达式中的最后一项,POLY2 模型通过暴力的方式将所有的特征进行两两相交,表达了每两个单一特征之间的关系。
在该表达式中,只有第三项不为 0 时才有意义,而这种情况只有X1、X2都不为 0 时才能真正满足。
不过,在数据稀疏的情况下,满足交叉项不为 0 的样本将非常少。在训练样本不足的情况下,很容易导致参数w{ij} 训练不充分,从而使得推荐结果不准确,最终影响模型效果。因此,这种特征组合模式存在一定缺陷:
大大增加了特征维度:因为它会让模型复杂度由原来的 O(n) 上升到 image.png
模型不收敛:因为数据极度稀疏,模型在训练过程中很难收敛。
那有没有一种方法能在处理稀疏数据的同时保持特征之间的联系呢?基于这样的背景之下,因子分解机(FM)模型诞生了。
因子分解机(FM)模型
因子分解机(FM) 模型表达式如下所示:
在公式中,我们可以把 FM 模型看成由两部分组成:前两项是逻辑回归(LR)模型(因为前面已经介绍过了,这里就不赘述了),第三项为二阶特征组合,意思是该模型对每个输入特征都需要学习一个低维的隐向量表达V(即深度神经网络中的向量表征)。
这里我们把原先的w{ij} 换成了V{i} 和 V{j} 的点积,V{i} 表示对 x{i} 这个特征的隐向量表达,V{j} 表示对 x{j}这个特征的隐向量表达,特征组合权重是通过各自单一特征的隐向量内积进行体现。
然而,这样的特征交叉会存在什么问题呢?以 58 同城 APP 本地服务租车业务的用户为例,根据平台用户画像,会出现性别、偏好车型、偏好品牌等特征。而一个特征和其他特征进行二阶特征组合时,可能会出现同一个特征向量共享的情况(比如性别与偏好车型组合、性别与偏好品牌组合共享了同一个特征向量),这就使得模型表达能力十分有限。
此时,如果我们对不同的性别使用不同的隐向量表征,模型将会变得更细致,表达能力也将变得更强,这就涉及接下来要介绍的域感知因子分解机(FFM)模型。
域感知因子分解机(FFM)模型
在因子分解机(FM) 模型的基础上,我们引入了一个场(Field)的概念,从而形成了一个新模型——FFM(Field Factorization Machine),它的表达式如下所示:
通过将因子分解机(FM) 模型的二阶项隐向量由原来的变成image.png,原来的 V{j} 变成了image.png。此时,每个特征不再对应一个隐向量,而是对应一组不同域的隐向量。image.png特征与image.png特征进行交叉时,image.png特征会从image.png的一组隐向量中挑出与特征image.png的域 f2 对应的隐向量image.png 进行交叉,同理 image.png也会与image.png的域 f1 对应的隐向量进行交叉。
相比 FM 而言,因为 FFM 引入了一个场的概念,使得该模型产生了更多辅助信息,表达能力更强了。此时,我们可以把 FM 看作只有一个场的 FFM。
前面我们讲述了逻辑回归(LR)模型主要通过人工进行特征组合,为了解决人工经验的不足,实现自动发现有效的特征并进行特征组合,从而缩短特征挖掘的实验周期,于是衍生出了因子分解机(FM)等高维复杂模型。
FM 模型主要通过隐变量的方式发现两两特征之间的组合关系,不过这种特征组合仅限于两两特征之间。于是,更加复杂的组合模型——GBDT 模型诞生了,它主要用来解决高维特征组合问题。
梯度提升决策树(GBDT)模型
梯度提升决策树(GBDT)模型算是传统机器学习算法中拟合能力最强的算法之一,它通过采用基于函数的线性组合实现了多轮迭代,并在每轮迭代后产生一个弱分类器,最后每个分类器在上一轮分类器的残差基础上进行训练。
一般来说,集成学习会选择分类回归树(CART)作为弱分类器,且每个分类回归树的深度不会很深,最终总分类器通过将每轮训练得到的弱分类器进行加权并求和得到一个结果,具体表达式如下所示:
其中,后面的表示决策树,即弱分类器;M 表示树的个数,即 M 棵树的结果相加。
有了 GBDT 模型的基础,我们再来看看超过二阶特征组合的高维特征组合问题的解决方法。
GBDT+LR 组合模型
GBDT+LR 模型利用 GBDT 自动进行特征筛选和组合,进而生成新的离散特征向量,然后我们将该特征向量当作逻辑回归(LR)模型的输入,最终产出预测结果。
一般来说,逻辑回归(LR)模型本身比较适合处理线性可分的数据,而不适合处理拟合非线性数据。如果我们想让逻辑回归(LR)模型处理拟合非线性数据,就可以利用 GBDT 产生特征的组合。因为该模型对非线性分布数据具备了整体拟合能力,它能通过算法自动、高效地寻找到有效的特征组合,并产生三阶以上的特征组合结果,而 FM、FFM显然不具备如此强的特征组合能力。
此时,我们看到了端到端训练及隐向量技术等深度学习模型的影子,也就是说 GBDT+LR 开启了特征工程模型化的趋势。
到这里,关于推荐系统传统算法模型的演进就全部讲完了。
小结与预告
《道德经》中说:“道常无为而无不为,侯王若能守之,万物将自化”,“无为”是“道”的核心价值观。
对于机器学习领域来说,长期以来,我们都是通过人工的先验知识寻找和组合特征,大大耗费了算法研发人力成本。正所谓有多少人工就有多少智能,这也就偏离了算法技术的“道”。而如何通过模型演化,“无为”地(自动、高效)寻找和组合特征是算法界的道。因此,从 08 讲开始,我们将沿着算法的“道”,深入讲解推荐系统中最引人入胜的深度学习算法。
对于推荐系统传统算法模型,你是否还有不同的见解?欢迎在留言区与我互动、交流。
另外,如果你觉得本专栏有价值,欢迎分享给更多好友哦~