论文简译 GCN-Int:基于图卷积网络交互的点击率预测模型

在这里插入图片描述

摘要

      推荐系统能够解决信息过载的问题,越来越受到学术界和业界的关注。在众多的方法中,点击率预测模型在预测用户对特定商品的注意力方面起着重要的作用。预测点击率通常采用高维稀疏特征,预测结果的准确性在很大程度上依赖于高阶特征的组合。因此,提出了从稀疏的高维原始特征中寻找低维表示的方法,并挖掘了有意义的特征组合方式,以提高模型的精度。然而,点击率预测模型通常有两个问题。一是不能很好地提取非欧几里德特征的特征交互。另一个原因是很难解释特征交互的内在含义。本文提出了一种基于图卷积网络交互的GCN-int模型来解决上述问题。该模型简化了多特征之间复杂的交互,较好地表达了高阶特征之间的交互,提高了特征交互的可解释性。在公共电影推荐数据集和我们自己的IPTV电影推荐数据集上的实验结果表明,本文提出的GCN-int模型与现有模型相比具有更高的精度和效率。

关键词

推荐系统、GCN-int、IPTV平台数据、点击率预测、功能交互

1.概述

      推荐系统可以追溯到Tapestry,这是施乐公司在1992年设计的一个协同过滤电子邮件系统,用于解决帕洛阿尔托研究中心的信息超载问题。同年,戈德伯格提出了“推荐系统”的概念。通过预测用户的偏好,推荐系统可以缓解信息超载的压力。为了帮助人们获得他们需要的有效信息,推荐系统被广泛应用于电子商务平台、电子政务平台和娱乐网站,如图书推荐、音乐推荐、电影推荐等。此外,互联网协议电视(Internet Protocol Television, IPTV)平台也采用了推荐系统,因为嵌入式数据采集软件可以分析电视观众的观看模式。
      “召回与排序”是推荐系统的主流架构。回忆策略大致可分为以下两类:基于规则的召回和基于向量的召回。召回层基于召回策略,从海量数据中快速获取推荐条目的候选集。然后,在排序层对候选集进行进一步排序,得到最终的推荐项。一般情况下,在查全率层根据用户的个性化偏好获得候选集,然后在排名层通过预测项目的点击率进行排序,所以排名层使用的模型可能不会对特定用户进行预测。点击率(CTR)预测模型是应用广泛的排名模型,它可以预测一个用户点击一部电影的概率。在早期,CTR被应用于搜索广告。由于CTR具有良好的预测能力,在推荐系统中得到了广泛的应用。在CTR预测领域,人们一直在努力寻找高维稀疏特征的低维表示及其有意义的组合,以提高模型的准确性。然而,**现有的CTR预测模型存在两个问题:**现有的CTR预测模型不能很好地提取高阶特征之间的相互作用,且特征相互作用无法解释。此外,模式识别、语音识别、自然语言处理等近年来新出现的技术处理的数据大多在欧几里得空间中,该空间具有空间连续性,可以用矩阵表示。使用卷积神经网络(CNN)或递归神经网络(RNN)网络的方法可以很容易地提取欧几里德结构数据。而在点击率预测中,特征多为多领域分类特征,不具有时空连续性,难以对此类非结构化特征进行特征交互和特征提取。卷积网络(GCN)的出现使得从非欧几里得数据中提取特征成为可能。通过将GCN引入到点击率预测模型中,可以解决上述问题。
      本工作的贡献总结如下:
1)提出了一种基于图卷积网络交互的网络点击率预测模型(GCN-int),该方法能很好地提取非欧空间中的高阶特征。
2)我们在IPTV平台数据上构建了一个IPTV数据集,并在IPTV数据集和两个公共数据集上进行了电影推荐实验。实验结果证明了GCN-int的有效性和可解释性。
本文的其余部分组织如下。第二部分讨论了推荐系统、点击率预测模型和图卷积网络的相关工作。第三节介绍了GCN-int的三个模块。第四节简要介绍了实验中使用的数据集和评价指标。第五节评价了GCN-int在上述数据集上的性能,并讨论了模型性能优异的原因和存在的不足。最后,第六部分对本文进行总结。

2.相关工作

A.推荐系统

      传统上,推荐系统可以分为三大类:基于内容的推荐系统、协同过滤推荐系统和混合推荐系统。
      在实际应用中,混合推荐系统得到了广泛的应用。混合推荐系统旨在通过组合各种推荐算法来提高推荐的准确性。常用的混合方法有加权法、级联法等。混合推荐算法虽然提高了推荐系统的准确率,但也增加了计算复杂度。此外,如何处理不同模块之间的协作也是混合推荐算法最难解决的问题之一。

B.点击率预测模型

      早期的点击率预测任务大多采用Logistic Regression (LR),该模型以其简单、高性能成为业界使用最广泛的点击率预测模型。然而,LR缺乏学习功能交互的能力。为了克服这一局限性,Oentaryo等人提出了一种基于因子分解的点击率预测模型(FM)。该模型不仅考虑了单个特征的信息,还考虑了二阶特征相互作用的信息,二阶特征相互作用的信息由两个潜在向量的点积表示。FM的出现解决了LR中数据稀疏导致的参数学习不足的问题。但是FM的缺点是每个特征只学习一个唯一的潜在向量。实际上,当结合不同场的特征时,潜向量的分布可能会有所不同。
      近年来,FM与DNN相结合已成为CTR预测的主流方法。FM和DNN的结合主要有两种方式:并行结构和串行结构。

C.图卷积网络

      图卷积网络是由Kipf和Welling提出的,该方法为图结构数据的处理提供了一种新的思路,并将图像的卷积方法应用于具有拓扑关系的图结构数据。GCN工作致力于从图结构数据中提取特征。通过学习图结构中各节点之间的相互作用和传播方式,可以实现多层级邻居之间的信息传递。这个过程是通过多层神经网络的叠加来实现的。
      为了更全面全面地探索图的结构,Yang等人提出了最短路径图注意网络(SPAGAN)。该模型采用基于路径的注意方法,明确考虑中心节点与其高阶邻居之间产生最小代价或最短路径的节点序列的影响,从而进一步更有效地聚合来自遥远邻居的信息。SPAGAN模型虽然可以有效地挖掘图的高阶关系,但在大多数情况下,图的多个异质关系混合在一条边中,导致模型学习的特征不准确。
      点击预测的关键问题是如何有效地组合特征来提高模型预测的准确性。如上所述,许多学者提出了多种特征交互的方法,但目前的点击率预测模型还存在两个问题:一是很难很好地提取非欧几里得特征的特征交互。二是难以解释特征交互的内在含义。将GCN引入到点击预测模型中,有助于解决上述问题。
本文结合以往的经验,结合图神经网络的特点,提出了一种基于图卷积网络交互(GCN-int)的网络点击率预测模型。GCN-int利用图卷积网络实现了更有效的特征高阶交互。基于图结构,可以实现更灵活、更显式的特征交互,提高了特征交互的可解释性。

3.基于GCN的CTR预测模型

A.输入和嵌入模块

      在点击率预测中,项目特征可分为数值特征和类别特征。数值特征可以直接输入到模型中,而分类特征在输入到模型中之前需要进行处理。对于分类特征,输入数据经过一次热编码后将成为高维、多场、稀疏的向量。如果将这些向量直接输入到模型中,不仅会造成计算资源的浪费,还会导致参数学习不足,降低模型的精度。通常的解决方法是将不同域的特征转换为嵌入向量,从而将高维稀疏向量降维为低维密集特征。嵌入向量为:
在这里插入图片描述
      其中ei表示第i个字段的嵌入向量。M表示字段的个数。通过场嵌入模块,将之前的高维稀疏向量转换为低维密集向量,输入模型进行计算。

B.功能交互模块

      有效的特征交互方式可以节省人工特征工程的成本,提高模型预测的准确性。Logistic回归模型假设每个特征是独立的,不考虑特征之间的相关性。然而,这两个特征是相互关联的。
      GCN是光谱卷积的一阶近似,由多层卷积网络组成。每个卷积层只处理一阶邻域信息,通过叠加多个卷积层可以实现高阶邻域的信息传输。GCN中各卷积层的传播方式如下:
在这里插入图片描述
      其中,D是一个度矩阵,A为邻接矩阵,H (T)为T层的激活单位矩阵,第0层位单位阵。
GCN-int的架构如下图所示:
GCN-int的架构
      将各领域的特征视为图神经网络中的节点。因此,每个特征之间的交互可以理解为图中每个节点之间的交互。这样,一个项目的特征和它们之间的交互就形成了一个特征图。多个项目对应于多个特征交互图。从这个角度来看,使用GCN进行特征交互可以增强特征交互的可解释性。
      与黑箱结构的深度神经网络相比,图神经网络可以用来观察哪些特征相互作用。
      通过特征交互模块,每个域的嵌入向量聚合其邻居节点的状态信息,实现特征交互的目的。特征交互模块的输出为:
在这里插入图片描述
其中m为域的个数,T为卷积层的个数。

C.预测模块

      预测模块通过GCN特征交互模块将每个域的嵌入向量连接在一起,得到一个m × D维向量,其中m为域的个数,D为嵌入向量的大小。GCN-int模型使用sigmoid函数输出[0,1]之间的分数,表示用户点击的可能性:
在这里插入图片描述
其中,HT是T层实体的隐藏表示矩阵。W是权值矩阵,b是偏差向量。GCN-int的损失函数为Logloss,定义为:
在这里插入图片描述
      为了防止过拟合,gcns -int模型也在每一层之后使用批归一化和Dropout层。对于训练,dropout ratio r被设置为0.5。激活功能为RELU。更重要的是,剩余该模型还引入了网络[31],可以防止由于深度网络层数增加而引起的网络退化,并保证深度网络至少具有与浅层网络相同的拟合能力。

4.实验设置

      我们评估了提出的GCN-int,并通过三个数据集展示了其在电影推荐方面的性能:Criteo,Avazu和我们的IPTV数据集。在本节中,我们将介绍实验中使用的数据集和评估指标。

A.数据集

      为了体现GCN-int的客观性,我们在实验中使用了两种数据集。一个是公共数据集。另一个是我们自己构建的IPTV数据集。Criteo和Avazu是学者们常用来研究点击预测模型的公共数据集。
两个公共数据集的统计:Criteo和Avazu。
      另外,参照以上两个公共数据集,我们从两个月IPTV节目观看的历史数据中构建了IPTV数据集。查看中使用的数据IPTV数据集是全省IPTV平台的单集点播节目。
在这里插入图片描述

B.评价标准

      为了估计所提模型的性能,我们在实验中采用了两种常用的CTR预测指标:AUC[32]和Logloss。以上两个指标在CTR预测中被识别,可以从两个不同的角度评价模型的性能。

5.实验和讨论

A.实验结果

      在本节中,我们分别进行了四组实验:GCN-int在公共数据集上的性能,GCN-int在IPTV数据集上的性能,GCN-int的敏感性实验,以及不同模型的效率比较。
在这里插入图片描述

B.讨论

      首先,GCN-int基于GCN实现了更有效的高阶特征交互。其次,基于图结构的特征交互更加灵活。最后,将特征交互以图的形式呈现,提高了特征交互的可解释性,这是其他结构无法模拟的。
      在实际应用场景中,不同特征之间的交互作用对模型精度的贡献应该是不同的。如果能根据相互作用过程中的贡献自适应调整不同特征相互作用的权重,则可进一步提高gcn的准确性。

6.总结

      本文提出了一种基于图卷积网络的网络点击率预测模型。
      在GCN-int中,每个域的特征以及不同特征之间的相互作用被表示为特征关系图。高阶特征交互由图卷积网络,提高了特征交互的可解释性。在两个公共数据集和IPTV数据集上对电影推荐场景进行了实验。结果表明,与现有模型相比,该模型具有更高的精度和效率,能够更好地捕捉高阶特征之间的交互作用。此外,如果考虑到不同特征交互的权重,模型可能会有更好的性能。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Pytorch中实现基于GCN/GAT/Chebnet的交通流预测,可以参考以下步骤: 1. 数据预处理:读入交通流数据,构建交通网络,将节点和边转换为矩阵表示。 2. 模型定义:定义GCN/GAT/Chebnet神经网络模型,包括输入层、隐藏层、输出层等。 3. 模型训练:使用交通流数据进行模型训练,通过计算损失函数来优化模型参数。 4. 模型测试:使用测试集数据进行模型测试,预测交通流情况,计算预测值与实际值之间的误差。 下面是一个基于GCN的交通流预测模型的Pytorch代码示例: ```python import torch import torch.nn as nn import torch.nn.functional as F class GCN(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(GCN, self).__init__() self.linear1 = nn.Linear(input_dim, hidden_dim) self.linear2 = nn.Linear(hidden_dim, output_dim) def forward(self, x, adj): x = F.relu(self.linear1(torch.matmul(adj, x))) x = self.linear2(torch.matmul(adj, x)) return x ``` 该模型包括两个线性层,其中第一个线性层将输入节点特征乘以邻接矩阵,然后通过ReLU激活函数得到隐藏层的输出,第二个线性层将隐藏层的输出再次乘以邻接矩阵得到最终的输出。 在训练过程中,需要定义损失函数和优化器,如下所示: ```python criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) ``` 然后,使用交通流数据进行模型训练,如下所示: ```python for epoch in range(num_epochs): outputs = model(features, adj) loss = criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item())) ``` 在模型测试阶段,可以直接使用模型进行预测,如下所示: ```python with torch.no_grad(): test_outputs = model(test_features, adj) test_loss = criterion(test_outputs, test_labels) print('Test Loss: {:.4f}'.format(test_loss.item())) ``` 以上是基于GCN的交通流预测模型的Pytorch代码示例,类似的代码可以用于实现基于GAT/Chebnet的交通流预测模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值