CNAN知识图谱辅助推荐系统

CNAN知识图谱辅助推荐系统

文章介绍了一个基于KG的推荐系统模型,代码也已开源,可以看出主要follow了KGNN-LS 。算法流程大致如下:

img

1. 算法介绍

算法除去attention机制外,主要的思想在于:user由交互过的item来表示、item由交互过的user交互过的item表示。如下图:

img

即user自身是不具备embedding表示的,完全靠KG部分。 这样的好处在于可以很方便的处理新增加的user,并不需要重新训练新用户的embedding。

user的initial entity set(即该user交互过的item id在KG的id)定义为:

img

item的initial entity set定义为:

img

�� 是item交互过的user交互过的item集合,公式3将item id转化为在KG的id,即对齐操作。

由此,我们相当于得到了user、item的邻居set,再由这些邻居set在KG中延伸出 � 阶邻居做聚合,第 � 阶tail entity集合与三元组集合定义为:

img

img

符号 � 代表某个user或item。如下图所示,多个Layer即代表多阶邻居:

img

这一步在算法执行中会占据相当大的时间。

2.聚合方式

对于某个triplet (��ℎ,�,���) 而言,我们定义从tail entity ��� 沿着 � 聚合到head entity �ℎ� 得到的attentive embedding �� :

img

img

img

CKAN的聚集首先将不同layer(总共 � 个layer)的三元组分别聚集得到 �� 、再将处于相同layer的 �� 累加到一起作为该layer的表示:

img

接着,除去这 � 个向量外,还会将initial entity set的embedding累加起来作为第0阶layer表示:

img

对于target item而言,它自身也是entity,所以单独多引入一个origin embedding:

img

因此,target user和target item拥有如下embedding set:

img

最后聚合target user/target item的embedding set得到final embedding。正如图一的Knowledge-aware Attentive Network所示。聚合的方式有三种:

img

可以看出CKAN的聚集和其他的GNN算法不同,一般的GNN聚集是聚集多次、最后多阶信息都会聚集在target node上。训练采用cross-entropy loss。

3.实验

实验对比如下:

img

loss。

3.实验

实验对比如下:

[外链图片转存中…(img-XHaKhNr4-1709550222389)]

数据集均是采用KGNN-LS使用的数据集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenShift AI - 部署并使用 LLM 模型

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.15 RHODS 2.7.0 的环境中验证 文章目录 安装 OpenShift AI 环境安装 Minio 对象存储软件配置 Single Model Serving 运行环境创建项目和 Workbench准备模型和配置 Model Server访问 LLM 模…

arm-linux-gnueabi、arm-linux-gnueabihf 交叉编译器区别

1、arm-linux-gnueabi: 使用软件浮点(软浮点)。这意味着所有的浮点运算都将由软件库来处理,而不会利用硬件中的浮点运算单元。因此,生成的目标代码包含了对软件浮点库的调用。 2、arm-linux-gnueabihf: 使…

c++八股文:c++新特性

文章目录 [toc] 1.C11的新特性有哪些2.智能指针3.类型推导4.左值和右值5.nullptr6.范围for循环7.lambda表达式参考 1.C11的新特性有哪些 语法的改进 (1)统⼀的初始化⽅法 (2)成员变量默认初始化 (3)auto关…

mybatis中#{}和${}的区别?

#{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。 Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值。 Mybat…

DCTNet

DCTNet http://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E9%A2%91%E5%9F%9F%E4%B8%AD%E7%9A%84CNN/CVPR%202020%20%E5%9C%A8%E9%A2%91%E5%9F%9F%E4%B8%AD%E5%AD%A6%E4%B9%A0%E7%9A%84DCTNet/ 一个对输入图像进行频域转换和选择的方法,达到…

python实现手机号归属地查询

手机上突然收到了某银行的短信提示,看了一下手机的位数,正好是11位。我一想,这不就是标准的手机号码吗?于是一个想法涌上心头——用python的库实现查询手机号码归属地查询自由。 那实现的效果如下: 注:电…

达梦数据库基础操作(一):用户操作

达梦数据库基础操作(一):用户操作 1 达梦运行状态 SELECT banner as 版本信息 FROM v$version;1.2 达梦版本号 SELECT banner as 版本信息 FROM v$version;1.3 用户相关操作 默认用户名密码:SYSDBA/SYSDBA 注意:在哪个数据库下创建的用户…

2.3_3 进程互斥的硬件实现方法

文章目录 2.3_3 进程互斥的硬件实现方法(一)中断屏蔽方法(二)TestAndSet指令(三)Swap指令 总结(四)互斥锁 2.3_3 进程互斥的硬件实现方法 学习提示: 1.理解各方法的原理 …

宝塔Linux面板迁移网站数据的详细步骤是什么?

宝塔Linux面板迁移网站数据的详细步骤是什么? 准备工作:确保宝塔面板处于最新版本并与服务器环境一致。如果需要迁移到其他机器,需要将迁入服务器的宝塔面板信息和API秘钥填写好。秘钥的有效期为7天,建议在使用后手动关闭接口以保…

Python从0到100(二):Python语言介绍及第一个Pyhon程序

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

springcloud:3.3测试重试机制

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用:http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http:/…

Vue 3 中如何使用全局 API?

Vue 3 中的全局 API 使用详解 Vue 3 相较于 Vue 2 在全局 API 的使用上有了较大的变化。Vue 3 引入了新的全局 API 创建方式,并通过 createApp 方法替代了 Vue 2 中的 new Vue()。这种变化使得 Vue 3 在全局 API 的使用上更加灵活,也更好地支持了 tree-…

UNIapp实现局域网内在线升级

首先是UNIapp 生成apk 用Hbuilder 进行打包 可以从网站https://www.yunedit.com/reg?gotocert 使用自有证书,目测比直接使用云证书要快一些。 发布apk 网站 用IIS发布即可 注意事项中记录如下内容 第一、需要在 iis 的MiMe 中添加apk 的格式,否则无法…

如何本地创建websocket服务端并发布到公网实现远程访问

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

如何实现飞书与金蝶无缝对接,提升业务效率与客户满意度?

一、客户介绍 某贸易有限公司是一家专业从事进口葡萄酒和高端烈酒销售的企业。在市场竞争日益激烈的今天,该公司始终坚持以客户为中心,以市场为导向,不断创新和进步。公司不仅注重传统销售渠道的拓展,还积极拥抱互联网&#xff0…

processing绘制笑脸

笑脸效果图: processing代码: void setup(){size(1000,1000);//Canvas sizebackground(#ffcc33);//Canvas background color } void draw(){ strokeWeight(12);//face-width12px fill(#ffffcc);//face arc(500,500,200,200,0,TWO_PI);//face-size strok…

Python中的自然语言处理和文本挖掘

在Python中,自然语言处理(NLP)和文本挖掘通常涉及对文本数据进行清洗、转换、分析和提取有用信息的过程。Python有许多库和工具可以帮助我们完成这些任务,其中最常用的包括nltk(自然语言处理工具包)、spaCy…

统计C语言代码行数的pyton代码

首先是白嫖以下大神的代码:统计python代码行数小工具_linecount工具-CSDN博客 然后,让ChatGPT帮我改为如下的完整代码: import os from tkinter import Tk, Label, Button, filedialog def open_file(file_path, encoding): try: file op…

【推荐算法系列十八】:DSSM 召回算法

参考 推荐系统中 DSSM 双塔模型汇总(二更) DSSM 和 YouTubeDNN 都是比较经典的 U2I 模型。 U2I 召回 U2I 召回也就是 User-to-Item 召回,它基于用户的历史行为以及用户的一些个人信息,对系统中的候选物品进行筛选,挑…

备考2024年上海高考数学:历年选择题真题练一练(2014~2023)

今天距离2024年高考还有三个多月的时间,今天我们来看一下2014~2023年的上海高考数学的选择题,从过去十年的真题中随机抽取5道题,并且提供解析。 后附六分成长独家制作的在线练习集,科学、高效地反复刷这些真题,吃透真题…