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

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

时间:2024-04-11 22:00:31浏览次数:24  
标签:项目 推荐 用户 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/wephilos/p/18119942

相关文章

  • 基于内容的电影推荐算法研究
    引言今天读的文章为一篇名为《基于内容的电影推荐算法研究》的文章,文章提出了一种基于内容的电影推荐算法,通过分析电影特征和用户兴趣,实现更精准的电影推荐。文章中使用到了TF-IDF向量化方法,将电影类型和导演信息转化为特征向量,然后使用余弦相似度来衡量电影之间的相关性,接下来......
  • 深入理解MD5算法:原理、应用与安全
    第一章:引言导言在当今数字化时代,数据安全和完整性变得至关重要。消息摘要算法是一种用于验证数据完整性和安全性的重要工具。在众多消息摘要算法中,MD5(MessageDigestAlgorithm5)因其快速、广泛应用和相对较高的安全性而备受关注。本书将深入探讨MD5算法的原理、应用和安全性,帮......
  • IDEA中Live Templates和Postfix Completion的用法
     前言 IDEA中代码生成的方式有两种LiveTemplatesPostfixCompletion这两种方式中,第一种基本每一个IDE都支持,但是支持第二中的很少。LiveTemplates输出模板1、sout,最基本的输出语句,快速生成System.out.println();2、soutp,快速生成参数输出语句。3、soutm,快速生成......
  • 超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。......
  • IOS开发——构建版本发布到TestFlight后邀请人员安装App测试流程
    关于打包上传TestFlight详见: IOS开发Archives打包后构建版本发布到TestFlight全流程。这里详细说明发布到TestFlight后邀请人员安装App进行测试。1.创建测试组:登录上AppStoreConnect之后,选择App,切换到TestFlight界面,点击左侧导航中”内部测试“栏目右边蓝色的添加图标......
  • 实用算法模板——滑动窗口
    为了更好的说明这个问题,我们借用acWing上的一道题目模拟样例:解法一:使用stl中的双端队列求解解法二:使用数组模拟队列,运行速度更快如果还有疑问,可参考:C15【模板】单调队列滑动窗口最值_哔哩哔哩_bilibili希望对你有所帮助,感谢查看!......
  • Deep Deterministic Policy Gradient(DDPG)算法讲解笔记
    DDPGDeepDeterministicPolicyGradient,基于actor-critic模型提出了一个有效的valuebased连续型空间的RL算法,引入了一些帮助训练稳定的技术。基础:DQN,Batchnormm,Discretize,微积分backgroundDQN改进的推广Policybased方法(TRPO)已经在actionspace取得突破传统disc......
  • 算法训练营Day08-LeetCode344. 反转字符串 && 541. 反转字符串 II && 151. 反转字符串
    344.反转字符串题目链接:LeetCode344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题思路:字符串首尾字符交换即可完成反转。定......
  • 元启发式算法库 MEALPY 初体验-遗传算法为例
    简介官网:MealPY官网开源许可:(GPL)V3MEALPY简介官网简介翻译MEALPY(MEta-heuristicALgorithmsinPYthon)是一个提供最新自然启发式元启发算法的Python模块,它是最大的此类Python模块之一。这些算法模仿自然界中的成功过程,包括生物系统以及物理和化学过程。mealPy的目......
  • 算法笔记0411
    1.在C++中,set是一种关联容器,用于存储已排序的键值对,其中每个键都是唯一的。在上面的代码片段中,set<int>s;声明了一个整数类型的set,命名为s,它将自动按照元素值进行排序。set<int>::iteratorit;声明了一个名为it的迭代器,用于遍历set中的元素。迭代器是用于访问容器元素的通用......