首页 > 编程语言 >基于注意力机制与改进TF-IDF的推荐算法

基于注意力机制与改进TF-IDF的推荐算法

时间:2024-01-30 10:46:05浏览次数:33  
标签:项目 推荐 用户 TF 算法 IDF 注意力

前言

本篇文章是2020年8月发表于《计算机工程》的一篇期刊论文,文章名称《基于注意力机制与改进TF-IDF的推荐算法》。

文章针对传统推荐系统主要依赖用户对物品的评分数据而无法学习到用户和项目的深层次特征的问题,提出基于注意力机制与改进TF-IDF的推荐算法(AMITI)。将双层注意力机制引入并行的神经网络推荐模型,提高了模型对重要特征的挖掘能力。

摘要

针对传统推荐系统主要依赖用户对物品的评分数据而无法学习到用户和项目的深层次特征的问题,提出基于注意力机制与改进TF-IDF的推荐算法(AMITI)。通过将双层注意力机制引入并行的神经网络推荐模型,提高模型对重要特征的挖掘能力。基于用户评分及项目类别改进TF-IDF,依据项目类别权重将推荐结果分类以构建不同类型的项目组并完成推荐。实验结果表明,AMITI算法能提高对文本中重要内容的关注度以及项目分配的注意力权重,有效提升推荐精度并在实现项目组推荐后改善推荐效果。

概述

本文提出一种基于注意力机制与改进TF-IDF的推荐算法AMITI。将注意力机制引入卷积神经网络(Convolutional Neural Network,CNN)中,在卷积层前加入注意力网络,对经过预处理的项目文本信息进行重新赋权。将多层全连接神经网络学习到的用户特征向量和项目特征向量输入到第2层注意力机制中,使多层感知机(Multilayer Perceptron,MLP)对注意力分数进行参数化。在完成推荐任务后,通过将用户评分和项目类别与TF-IDF结合,分析不同项目类型在推荐结果中的权重,获取用户对不同项目类型的偏好程度,并对推荐结果进行分类。

AMITI推荐算法

在NCF推荐模型的基础上将用户和项目的属性信息作为输入数据u:{u1,u2,...un},例如,用户ID、年龄、性别等;项目属性信息v:{v1,v2,...vn},例如,项目ID、类型、标题等。AMITI模型架构如图所示。

image

引入双层注意力机制,一层用于与CNN结合构建子网络,使CNN学习项目文本中的重点内容;另一层以用户及项目特征向量作为输入数据,利用注意力机制为用户历史交互项目分配个性化权重,得到不同项目对当前预测偏好所起的作用。将推荐结果分组,以项目组的形式向用户展示推荐结果,增强推荐内容的有序性。

学习用户和项目潜在特征

为改善推荐系统中数据稀疏的问题,利用用户和项目的属性信息进行评分预测。将用户及项目属性信息经过数据预处理后输入到嵌入层对属性信息进行编码,嵌入层将输入的稀疏向量映射为稠密的低维嵌入向量,得到用户和项目属性的嵌入表示pu和qv。在训练刚开始的时候,嵌入是简单的随机选择,随着训练的进行,每个嵌入的向量都会得到更新,以帮助神经网络执行其任务。将用户和项目的嵌入向量pu、qv输入到并行的多层全连接神经网络中,分别学习用户和项目非文本属性的潜在特征向量。

image

其中:f(×)为tanh激活函数;wn和bn分别为需要学习的权值矩阵和偏置。

引入注意力机制的卷积神经网络

对于项目属性的文本信息如项目标题,为了增强网络对文本中重点内容的学习能力,将注意力机制与CNN结合构成提取文本特征的子网络。文本卷积神经网络构成如图所示,由注意力层、卷积层、池化层、全连接层组成。

image

注意力层通过对每个项目文本的词向量矩阵赋予注意力权重以得到更新后的词向量矩阵。将项目文本内容通过嵌入层得到词向量矩阵E∈Rnxd,其中d为词向量的维度,即把每一个词映射为d维向量xj∈Rd,n为单词的个数;F∈Rsxd表示目标用户ui浏览过的所有项目所携带文本信息的词向量矩阵,xi为第i个词的词向量表示xi∈Rd。计算目标用户词向量矩阵F中每个词汇的词向量表示xi与项目所有文本词向量矩阵E中每个词汇xj的注意力分数。a(xi,xj)=vTaR(wa[xi+xj])其中:vTa,wa为训练参数。

预测评分生成

传统的神经网络推荐模型在预测层通常执行用户特征的隐表示p̂u和项目特征的隐表示q̂j之间的交互以得到最终的预测评分。由于该模型缺乏对推荐任务的定制优化,对用户所有历史项目的平等处理会限制其表示能力,例如,在用户进行电影点播时,被推荐电影可能只与用户播放历史中的部分电影相关,而传统的电影推荐方式通常会把用户播放历史中所有的电影作为上下文进行推荐,这与用户的实际偏好不符。传统的神经网络推荐模型忽视了用户历史项目中不同项目对预测下一个项目所起的作用不同,因此准确率较低。

在AMITI模型的预测层,利用神经注意力网络区分历史项目的重要性来克服传统神经网络推荐模型的局限性。学习到用户特征的隐表示p̂u和项目特征的隐表示q̂j作为注意力层的输入,学习目标用户对不同项目的关注度,不同关注度对预测下一项目所起的作用不同。

TF-IDF的改进

TF-IDF常被用于文本分类和信息检索,通常仅考虑文档数量和关键词在文档中出现的频率,而当字词拥有评分数据时无法充分利用评分数据更准确地计算TF-IDF值。例如,利用TF-IDF计算用户ui观看电影中喜剧类型gj的TF-IDF值时,仅将喜剧类型gj在用户ui浏览历史电影集和整个数据集中出现的频率代入计算,并未利用用户对喜剧类电影的评分数据。当喜剧类型gj在用户浏览历史中出现频率较低,但用户对这类电影的评分却较高时,采用传统的TF-IDF方法无法准确地获取用户对喜剧类型gj的偏好程度。将评分数据引入到TF-IDF方法中,在评估字词重要程度的同时,避免丢失评分较高的字词。

AMITI算法描述

利用深度神经网络结合注意力机制能有效提升推荐算法对用户和项目潜在特征的提取能力,并缓解数据的稀疏性问题。依据项目类型分组将推荐结果推荐给用户。AMITI 算法整体实现步骤如下:


输入 用户属性信息u:{u1,u2,...un},un表示用户的第n个属性;项目属性信息v:{v1,v2,...vn},vn表示项目的第n个属性
输出 生成K个项目组,每个项目组含D个同类项目
步骤1 对用户属性和项目属性进行数据预处理,将其转换成数字类型。
步骤2 用户属性和项目ID及类型属性输入嵌入层,得到低维稠密的嵌入向量pu和qv。将pu和qv分别输入到并行的多层全连接层中进行特征学习,得到用户特征p̂u和项目非文本属性向量q̂v
步骤3 对项目名称做卷积处理,通过注意力机制对电影名称的词向量矩阵重新赋权,得到更新后的词向量矩阵Msxdatt
步骤4 将词向量矩阵Msxdatt输入卷积神经网络中提取项目名称特征并生成特征qtext,再利用tf.concat()函数合并项目各属性特征得到最终的项目特征q̂j
步骤5 使用注意力机制为每个项目分配个性化权重âij,得到更新后的项目特征q̂i
步骤6 将用户隐含特征p̂u与项目隐含特征q̂i作内积计算得到预测评分ŷui
步骤7 输入指定用户产生Top-N个推荐结果,利用改进TF-IDF分析用户对不同项目类型的偏好程度值Sujgi
步骤8 根据偏好程度Sujgi值将项目类型降序排列,取前K个类型作为待推荐项目组的组名,K即为推荐项目组的数量。
步骤9 在每个项目组加入D部与组名对应的同类电影,并按每部电影的预测评分降序排列。最终进行由K个项目组构成,且每个项目组包含D部同类型电影的项目组进行推荐。


结尾

春节快到了,在这里先小小地祝福一波朋友们,大家新的一年事事顺意。
另外,愿世间昌平,愿海晏河清。

明儿个见喽。

2024-01-30 10:32:58 星期二

标签:项目,推荐,用户,TF,算法,IDF,注意力
From: https://www.cnblogs.com/wephiles/p/17995828

相关文章

  • 算法模板 v1.5.1.20240130
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 文心一言 VS 讯飞星火 VS chatgpt (189)-- 算法导论14.1 6题
    六、用go语言,在OS-SELECT或OS-RANK中,注意到无论什么时候引用结点的size属性都是为了计算一个秩。相应地,假设每个结点都存储它在以自己为根的子树中的秩。试说明在插入和删除时,如何维护这个信息。(注意,这两种操作都可能引起旋转。)文心一言:在OS-SELECT和OS-RANK中,我们维护一个树形结......
  • (算法)高精度运算
    为什么要有高精度就是因为当数字长度很长的时候都超过了longlong了那么我们就可以通过开数组,集合等方式运算,其原理就是小学生的竖式运算,没想到一个竖式运算竟然可以这么恶,现在的算法已经折磨了后面的路不好走了……先来搞一下+,-,*,/的高精度运算(都是高进度之间的运算),其实就是进位,取......
  • 如何评价搜索算法的好坏?多角度解析
    前言大家好,我是chowley,搜索算法无处不在,程序员中比较高级的算法工程师,也大多数是做搜推广方向的,今天我就简单讲解一下,如何评价搜索算法!评价搜索算法搜索算法影响着用户的搜索体验和信息获取效率。在评价搜索算法的好坏时,需要从多个角度综合考量。本文将从准确性、排序质量、响......
  • day27 代码随想录算法训练营 39. 组合总和
    题目:39.组合总和我的感悟:还是没太理解这个index和i的区别感觉要继续听继续做剪枝要进行排序,这题,我先理解到不剪枝的版本就行 代码示例:classSolution:defcombinationSum(self,candidates:List[int],target:int)->List[List[int]]:res=[]......
  • WebSocket和RESTful API区别
    1.WebSocket和RESTfulAPI区别WebSocket和RESTfulAPI是用于在客户端和服务器之间进行通信的不同协议。RESTfulAPI(RepresentationalStateTransfer)是一种使用HTTP协议进行通信的架构风格。它基于客户端-服务器模型,通过使用不同的HTTP动词(GET、POST、PUT、DELETE等)对资源进行......
  • notepad怎么保存utf-8格式 菜单栏"编码”下拉菜单中选择“UTF-8” 或者Encoding选择 U
    notepad怎么保存utf-8格式菜单栏"编码”下拉菜单中选择“UTF-8”或者Encoding选择UTF-8,或者菜单栏-格式->以UTF-8无BOM格式编码要在Notepad中保存UTF-8格式,可以按照以下步骤操作:1.打开Notepad,然后新建一个文本文档。2.将要保存为UTF-8格式的文本复制粘贴到Notepad中。3.点......
  • UTF-8格式编码的文件分为带BOM和不带BOM windows下编程,Linux下编程建议使用“UTF-8无
    UTF-8格式编码的文件分为带BOM和不带BOMwindows下编程,Linux下编程建议使用“UTF-8无BOM格式,“建议使用”UTF-8带BOM格式“Notepad++支持“UTF-8无BOM格式”和“UTF-8带BOM格式”两种UTF-8。一直以来不知道二者有什么区别。程序员它们的区别是:UTF-8带BOM格式,就是在文件头添加......
  • 传统Item-Based协同过滤推荐算法改进
    前言今天要读的论文为一篇于2009年10月15日发表在《计算机研究与发展》的一篇会议论文,论文针对只根据相似性无法找到准确可靠的最近邻这个问题,提出了结合项目近部等级与相似性求取最近邻的新方法;此外针对系统中新加入的项目,因为其上评分信息的匾乏,求得的最近邻往往是不准确的,为此......
  • 二分算法
    二分算法个人感想洛谷二分题单基本完成,发现二分确实是比较模板的方式解答题目,难点往往是寻找出答案的单调性和如何高效验证答案的正确性。二分个人感觉就是枚举的优化,在时间复杂度上的极大优化,有一种暴力的美.目前发现的不足对题目的理解太浅,有时很难看懂题目的意思,理解有问......