【论文笔记】TEM:结合GBDT叶节点嵌入的可解释推荐模型

2024-02-07 13:30

本文主要是介绍【论文笔记】TEM:结合GBDT叶节点嵌入的可解释推荐模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 本文主要介绍了发表在WWW2018的论文《TEM: Tree-enhanced Embedding Model for Explainable Recommendation》,利用GBDT叶子节点进行嵌入表示来获得一个具有解释性的推荐模型

本文来源:RecLismCat https://zhuanlan.zhihu.com/p/96124874

3 TREE-ENHANCED EMBEDDING METHOD

首先提出TEM,它结合MF用于稀疏数据建模和GBDTs用于交叉特征学习的优点。还讨论了可解释性,分析了其复杂性。

3.1 Predictive Model

给定一个user u ,一个item i,和他们的特征向量

将它们作为输入,TEM预测user-Item偏好:

其中,前两项是与FM相似的特征偏差,第三项是TEM的核心部分。参数Θ用于建模交叉特征影响。

3.1.1 Constructing Cross Features

与在学习过程中不透明地捕捉交叉特征效应的嵌入式方法不同,我们最初的考虑是让交叉特征是显式的并且是可解释的。在工业中广泛使用的一种解决方案是手工制作交叉特性,然后将它们输入一个可解释的方法,该方法可以了解每个交叉特性的重要性,例如逻辑回归。例如,我们可以通过交叉特征变量age和traveler style的所有值来获得二阶交叉特征。但是,这种方法的难点在于它是不可伸缩的。为了对高阶特征交互进行建模,必须将多个特征变量交叉在一起,从而导致复杂性呈指数级增长。虽然通过谨慎的特征工程,如跨越重要的变量或值,可以在一定程度上控制复杂性,但开发有效的解决方案需要大量的领域知识,不容易适应领域。

为了避免这种劳动密集型的特性工程,我们利用GBDT(在2.2节中简要介绍)来自动识别有用的交叉特性。虽然GBDT并不是专门为提取交叉特征而设计的,但是考虑到一个叶节点代表一个交叉特征,并且树是通过优化对历史交互作用的预测来构建的,因此认为叶节点是有用的交叉特征是合理的。

形式上,我们定义GBDT为一系列决策树Q={Q1,Q2,...,Qs},其中,每一棵树将一个特征向量x映射到一个叶子节点上(有权重)。我们使用Ls定义第s棵树的叶子节点的数量。与原始的将激活的叶节点的权值累加作为预测的GBDT不同,我们将激活的叶节点作为交叉特征,并将其输入神经注意模型中进行更有效的学习。我们将交叉特征表示为一个多热向量q,它是多个单热向量(其中一个单热向量编码树的激活叶节点)的串联:

这里q是一个稀疏向量,其中值为1的元素表示激活的叶节点,q中的非零元素数量为S。

设q的大小为

  • 。例如,在图一中,有两个子树Q1(有五个叶子节点)和Q2(有三个叶子节点)。如果x分别以Q1和Q2的第二和第三叶节点结束,那么得到的多热向量q应该是[0,1,0,0,0,0,0,1]。令图1中的特征变量(x0

  • x5)和值(a0 ~ a5)的语义被列在表1中,那么q表示从x中提取的两个交叉特征。

3.1.2 Prediction with Cross Features

利用显式交叉特征,我们利用稀疏线性方法学习各交叉特征的重要性,选择最上面的交叉特征作为预测的解释。Facebook[22]之前的工作已经证明了这种解决方案的有效性,它将GBDT的叶节点输入到逻辑回归(logistic regression, LR)模型中。我们把这个解称为GBDT+LR。虽然GBDT+LR能够学习交叉特征的重要性,但它为所有用户- 项目对的预测分配了相同的交叉特征权重,这限制了建模的保真度。在实际应用中,具有相似人口统计特征的用户通常会选择相似的项目,但是它们是由不同的意图或原因驱动的。

例如,设(u, i, x)和(u’, i’, x’)是两个正的实例。假设x等于x’,那么这两个实例将具有与GBDT相同的交叉特征。由于每个交叉特征都有一个全局权重,与LR中的训练实例无关,预测的(u, i)和(u’, i’)将被视为同一顶交特性,不管实际的可能性原因中u选择i,u选择i’是不同的。为了确保可表达性,我们认为对不同的用户- 项目对交叉特征进行不同的评分是很重要的。在交叉特征上个性化权重,而不是使用全局加权机制。

神经推荐模型如Wide&Deep和NFM的最新进展可以允许交叉特征的重要性变得个性化。这是通过将user ID、item ID和交叉特征一起嵌入到共享的嵌入空间中,然后对嵌入向量执行非线性转换(例如,通过完全连接的层)来实现的。非线性隐含层强大的表示能力使得user ID、item ID和交叉特征之间的复杂交互能够被捕获。因此,当使用不同的用户- 项目对进行预测时,交叉特性的影响是不同的。然而,由于难以解释的非线性隐含层,这些方法无法解释交叉特征的个性化权重。因此,为了便于解释,我们必须放弃使用完全连接的隐藏层,尽管它们在现有方法中有助于模型的性能。

为了开发一种既有效又可解释的方法,我们介绍了TEM中的嵌入和注意力的两个基本成分。具体来说,我们首先将每个交叉特征与一个嵌入向量相关联,这样就可以捕获交叉特征之间的相关性。然后,我们设计了一种注意力机制,明确地对交叉特征上的个性化权重进行建模。最后,将用户ID、项目ID和交叉特征的嵌入集成在一起进行最终预测。虽然TEM是一种浅层模型,没有完全连通的隐层,但利用嵌入和注意使其具有很强的表示能力和有效性。接下来,我们将阐述TEM的两个关键组成部分。

**嵌入 **

给定由GBDT生成的交叉特征q,我们将每一个交叉特征j投影都嵌入项链

,其中k是嵌入尺寸。在这个操作之后,我们获得了一个嵌入向量集合

。由于q是一个只有少量非零元素的稀疏向量,我们只需要在预测中包含非零特征的嵌入,也就是说

,其中,

。我们使用Pu和qi来定义用户嵌入和物品嵌入。

与LR使用标量对特征进行加权相比,将交叉特征嵌入到向量空间有两个优点。首先,使用嵌入学习可以捕获特性之间的相关性,例如,经常同时出现的特性可能产生类似的嵌入,这可以缓解数据稀疏性问题。其次,它提供了一种将GBDT的输出与基于嵌入式的协同过滤无缝集成的方法,这比模型预测的后期融合更灵活(例如,在[49]中使用FM来增强GBDT)。

**注意力 **

受之前工作的启发[9,46],我们通过为每个交叉特征的嵌入分配一个关注的权重,明确地捕获了交叉特征在预测中的不同重要性。在这里,我们考虑两种方法来聚合交叉特征的嵌入,平均池化和最大池化,以获得一个统一的表示e(u, i,V)的交叉特征:

其中,wuil是一个可训练的参数,表示第 l 个交叉特征在构成统一表示时的注意力权值,重要的是,它是个性化的,因为它依赖于(u, i)。

虽然上述解决方案似乎是合理的和可解释的,但问题是,对于(u, i)对以前从未同时发生过的情况,无法估计注意力权重。另外,w的参数空间太大,总共有UIL权值(其中u、I和L分别表示user数量、item数和q的大小),这对于实际应用来说是不切实际的。为了解决泛化和可伸缩性问题,我们将建模wuil看作一个依赖于u、i和l的嵌入的函数,而不是从数据中自由地学习wuil。受最近成功使用多层感知器(MLP)来学习关注权重的启发,我们同样使用MLP来参数化wuil。我们将这个MLP叫做注意力网络,被定义为以下形式:

其中,W是权重矩阵,b是隐藏层的偏差,a控制隐藏层的大小。h将隐含层投射到输出的关注权值中。我们使用rectifier作为激活函数,并使用softmax对关注权值进行归一化。图3说明了我们注意力网络的架构,我们将a称为注意力大小。

最终预测

在建立了注意力嵌入后,我们得到了一个用于交叉特征的统一嵌入向量e(u, i,V)。为了结合CF建模,我们将e(u, i,V)与

连接起来,pu qi将MF重新组合起来,用以对用户ID和项目ID之间的交互进行建模。然后我们应用线性回归将连接的向量投射到最终的预测中。这就引出了TEM的预测模型:

其中,r1和r2是最终线性回归层的权重。

可以看出,我们的TEM是一个浅层的可加性模型。为了解释预测,我们可以很容易地评估每个组件的贡献。

3.2 Learning

类似于最近关于神经协同过滤[21]的工作,我们将项目推荐任务作为一个二元分类问题来解决。具体来说,将观察到的用户- 项目交互分配给目标值1,否则为0。我们优化pointwise log loss,这能够迫使预测分数更加接近目标值。

其中σ是激活函数,限制预测在(0,1)。为了清楚起见,这里省略了正则化项(我们在观察到过拟合时调整了L2正则化)。注意,优化其他目标函数在技术上也是可行的,比如点态回归损失[20,41,42]和排名损失[9,33,44]。在这项工作中,我们使用log loss作为TEM的一个演示。

由于TEM由两个级联模型组成,所以这两个模型都经过了优化相同的log损失的训练。我们首先训练GBDT,它贪婪地适合于整个训练数据[10]上的可加树。在得到GBDT的交叉特征后,我们使用minibatch Adagrad[16]对基于嵌入的预测模型进行了优化。每个小批包含随机的正实例和随机配对的负实例。与[21]的最优设置一样,我们将一个积极的实例与四个消极的实例进行配对,从经验上显示了良好的性能。

完)

这篇关于【论文笔记】TEM:结合GBDT叶节点嵌入的可解释推荐模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687877

相关文章

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC