7种经典推荐算法模型的应用进行特征

本文调研了推荐系统里的经典推荐算法,结合论文及应用进行分析、归纳并总结成文,既是自己的思考过程,也可当做以后的翻阅手册。

前言

个性化推荐,是指通过分析、挖掘用户行为,发现用户的个性化需求与兴趣特点,将用户可能感兴趣的信息或商品推荐给用户。本文调研了推荐系统里的经典推荐算法,结合论文及应用进行分析、归纳并总结成文,既是自己的思考过程,也可当做以后的翻阅手册。俗话说学而时习之,人的认识过程是呈螺旋式上升的,特别是理论应用到实践的过程,理论是实践的基础,实践能反过来指导人对理论的认识,我相信在将下文所述的算法应用到业务中的实践过程也将刷新我在总结此文时的认识。

个性化推荐系统是一项系统工程,为便于聚焦描述,本文不涉及模型的训练及部署等工程问题,仅对推荐算法原理进行分析和其解决的问题进行总结。

为方便分析,本文取大家购物时常遇到的商品推荐模型的某些特征进行举例:

USER侧特征

ITEM侧特征

交互行为

pk

性别

天猫会员等级

商品价格

销量

是否点击

1

T1

22223

2

T3

33333

25651

0

特征可简单分为两类:

1.连续特征。如商品价格/销量时长

2.类别特征。如性别/天猫会员等级

对于连续的数值特征,可直接在模型中作为数值参与计算(大部分情况下需要进行归一化等处理)。而对于类别特征,一般是不能直接作为数值参与计算的,通常将其进行Hash散列编码或者one-hot编码。

以one-hot编码为例,将以上训练数据进行预处理。

性别男

性别女

天猫会员等级T1

天猫会员等级T3

预处理之后,可以看到所有的数据已经进行的数值化,可以进行数学运算了。

接下来将介绍各算法模型是如何利用这些数据进行学习的。

LR

算法原理

逻辑回归LR(LogisticRegression)模型作为经典的机器学习分类模型,以其可解释性强、实现简单、线上高效等优点在线上应用中被大量使用。逻辑回归模型主要有两部分构成:

1.线性回归

2.逻辑函数

在机器学习中,线性回归模型可记为:

而逻辑函数使用的为sigmoid函数:

由(1)和(2)可推出LR模型的数学表达式为

在线性回归模型(1)中,是具体的某一个特征值,是该特征值的权重,是模型的输出。该公式可以直白的解释为模型的输出结果是由输入进行线性加权求和得到的。而逻辑函数(2)的作用是将线性回归模型的输出映射到[0,1],输出一个概率值。商品推荐的场景中如用户对某个item进行点击记为1,未点击记为0。

解决的问题

LR是一个基本的回归模型,可以对输入进行一些线性运算得到一个预测的输出值。预测值可以是用户点击某个商品的概率,也可以是用户下单的概率,其含义具体业务具体分析。

FM

FM(FactorizationMachine)。LR作为一个基础的回归模型,主要原理是通过对各个特征进行线性加权得到预测值,但是其并没有考虑组合特征对模型的影响,比如一名单身女性在晚上观看李佳琦直播概率显然是大于一名妈妈的,这里面包含的组合特征单身女性-晚上在LR中就体现不到。因此相比LR仅对一阶特征进行建模,FM引入了二阶特征,增强了模型的学习能力和表达能力。

FM的数学表达式如下:

如果FM仅仅是在模型的表达式上加入了二阶特征,它的应用绝不会这么广泛,只从式(4)中就可以看出表达式上其实相对于LR的改进是很简单的:在模型中引入输入特征两两组合进行乘积就行了。但是这样会引入一个很大的问题:参数的数目直接从个爆炸增长为个,这对于特征维度动辄上千上万数量级的推荐系统来说是断然不能接受的。

面对这么大的参数矩阵很容易想到将其进行矩阵分解,我们首先观察一下参数矩阵

可以看到参数矩阵是实对称矩阵,可以想到正定矩阵是可以很优雅的进行分解的:

特别地,在稀疏矩阵中的情况下,便可满足式(6)的近似相等。

设,则式(4)中的模型参数可表示为。

因此限定参数矩阵为正定矩阵的情况下,FM的二阶特征的表达式可推导如下:

FM通过引入二阶特征实现了模型学习能力及表达能力的提升,并且利用正定矩阵和稀疏矩阵的性质将二阶特征的计算降低至线性复杂度,也因此成为工业界常用的特征工程算法。

FFM

FFM(Field-awareFactorizationMachine)。从名字上看,相较于FM,FFM多了一个F,在实现上也是如此。

FFM的数学表达式如下:

从式(8)可以看出FFM相比于FM的不同点在于二阶特征组合的系数上,FFM的权重矩阵比FM多了一维。其算法思想是这样的:以前言中的商品推荐的训练数据举例,在进行one-hot编码时,我们将不同的字段的特征进行编码然后拉平送进模型进行训来,比如字段天猫会员等级T1和天猫会员等级T3这俩字段被独立为两个独立的特征。然而实际情况却是这俩字段其实是对同一个字段天猫会员等级的不同描述。因此在FFM中引入了field的概念:每一维的特征都有对应的field,在进行二阶特征组合时某一维特征对于不同field的特征其所对应的隐向量是不同的。假设所有特征共包含f个filed,则FFM权重矩阵,相比于FM的权重矩阵,多出的维便对应着FFM中引入的field的数目。

需要说明的是,FM可以看做是FFM的特例:所有特征属于同一个field。

WDL

WDL(Wide&DeepLearning)。其核心思想是结合线性模型(如上文的LR)的记忆能力和DNN模型的泛化能力来提升模型的整体能力。

其网络结构图如下:

其中包括

1.wide部分:wide部分是普通的线性模型,其表达式可参见式(1)

2.deep部分:deep部分由一个3层的神经网络组成。其输入是对原始的稀疏特征(如ID类特征)进行一次embedding后的结果。每一层的公式如下:

3.输出:输出部分将线性模型(Wide)和DNN(Deep)模型的输出结果进行加和作为整个模型的loss进行反向传播来完成联合训练。

结合了线性模型对一阶特征和和深度模型对高阶特征的学习能力来整体提高模型的表达能力。

DeepFM

WDL可以看做是LR+DNN,那么DeepFM就可以看做是FM+DNN。相比于WDL做出的改进,DeepFM主要是将WDL中Wide模块由LR替换为了FM。

其网络结构如图所示:

可以看到相对于WDL其做了以下改进:

1.引入FM结构代替LR。完成对一阶二阶特征的学习避免了WDL中人工特征工程过程。见式(4)。

2.FM和DNN共享Embedding层。减少了额外的计算开销。

在减去人工特征工程的前提下,通过Wide部分和Deep部分共享Embedding,可以提高模型的训练速度和模型的特征学习能力。

DcN

DCN(Deep&CrossNetwork)如其名字中cross所示,其主要完成了完全去手工特征交叉的工作。

其中代替DeepFM中FM模块的核心CrossNetwork网络结构如下:

其中:

进而可推出

可以看出CrossNetwork中每一层的输出都是由与某一标量进行相乘的结果。因此:

1.每层的输出和同维

完全舍弃了人工特征工程过程,并且可以显示指定特征交叉阶数。

xDeepFM

xDeepFM中,进行vector-wise特征交叉的结构如下:

对于每一层的输出

其中

1.代表了第层的输出

2.代表了第k层输出的vector个数

3.表示两向量对应元素两两相乘,如

4.表示第层第个向量的向量的权重矩阵

至此,xDeepFM便实现了vector-wise的特征交叉过程。相比于DCN,其第的输出仅包含了k+1阶特征。因此,其需要将每层的输出进行sum-pooling后DNN的输出加和到一起作为loss进行反向传播来完成联合训练。

提出了一种vector-wise的高阶特征交叉方式。

小结

本文以解决问题的思路介绍了推荐系统里的经典算法演进过程,可以看到每种算法的出现都是为了解决某种特定的问题。学术上评价一个算法的好坏大都在于其精度,而在工业界中,更看重的是一个算法精度与性能的trade-off。比如2013年微软在NLP领域提出的双塔模型,被应用到推荐系统后经久不衰,到现在仍然在各大公司推荐系统里发光光热,究其原因:双塔模型上线有多方便/跑的有多快,谁用谁知道...

THE END
1.算法一种算法分类方式及其应用算法应用在计算机科学领域,算法是解决问题的有效方法,而对算法进行分类有助于理解它们的特性、优劣以及在不同场景下的应用。常见的算法分类方法,包括按设计思想、问题类型、数据结构和应用领域等,每一类算法会对应有其典型和实际应用。 算法的出现是为了解决问题和简化复杂的任务。它们提供了一种系统的方法来执行特定的计算或操https://blog.csdn.net/wnm23/article/details/138451523
2.算法的应用嘲范文算法的应用场景范文 算法在各个领域中都有广泛的应用。以下是一些常见的应用场景: 1.数据分析与机器学习:算法被广泛应用于数据分析和机器学习领域。在数据分析方面,算法可以帮助处理和分析大量的数据,从中提取有用的信息和模式。在机器学习方面,算法用于训练模型,预测和分类数据,以及进行无监督学习和强化学习等任务。 https://wenku.baidu.com/view/dd3325293f1ec5da50e2524de518964bcf84d2e9.html
3.90%的算法都基于这六个算法思想递归算法、贪心算法、回溯算法、分治算法、动态规划和枚举算法是常见的算法思想,各自具有不同的特点和适用场景。通过示例问题的介绍,我们可以更好地理解这些算法思想的应用。在实际应用中,我们需要根据问题的特点选择合适的算法思想来解决问题,并综合考虑时间复杂度、空间复杂度和算法的可行性等因素。通过深入理解和掌握这https://m.w3cschool.cn/article/96194468.html