【2021/反事实/POI推荐】Improving location recommendation with urban knowledge graph

news2024/11/15 12:47:59

文章全文首发:码农的科研笔记(公众号)


原文:https://arxiv.org/abs/2111.01013

1 动机

位置推荐定义为推荐地理位置给用户,现有推荐无法无法很好的建模地理位置属性,这导致推荐结果是次优的。同时作者希望消除 POI (Point-of-Interest) 推荐中的geographical bias (即用户所选择的场所, 可能不是纯兴趣导向的, 而很大程度受距离远近的影响).

2 方法

算法所提框架

首先构建城市知识图(UrbanKG) (具有兴趣点的地理信息和功能信息)。之后在两个子图上进行信息传播,以获取兴趣点和用户的表示。然后,我们通过反事实学习来融合两部分表征(利用图网络提取特征, 利用 TIE (Total Indirect Effect) 来消除 geographical bias )以获得最终预测。

  • Urban Knowledge Graph Construction:上述模型开始是一个有向图结构,其表示为下图所示。这个图节点类型包含7种(例如:business area、region、brands)和16种关系(例如 locateAt、NearBy)。例如下面 (Apple Store East Nanjing Road, BrandOf, Apple) 信息,实际表示的是POI ‘Apple Store East Nanjing Road’ 的 brand 是 entity ‘Apple’。其中关系又主要分为 geographical (地理上的关系) 和 functional (功能上的关系) 两类。

    知识图谱构建

  • Disentangled Embedding Layer:将原始图,分解为 geographical and functional attributes 这两个方面的图数据;

  • Graph Convolutional Layer:得到disentangled representations of geographical and functional attributes用的方法;

  • Counterfactual Learning:反事实推理来减轻地理位置偏置,从而更好的实现POI推荐。

2.1【因果图】

因果图

作者希望通过估计TIE从而进行推荐
y ^ u i , p j = T I E = T E − T D E = Y u i , p j , g j − Y u i , p j ∗ , g j . \hat{y}_{u_i, p_j} = TIE = TE - TDE = Y_{u_i, p_j, g_j} - Y_{u_i, p_j^*, g_j}. y^ui,pj=TIE=TETDE=Yui,pj,gjYui,pj,gj.
其中具体计算作者定义为
Y u i , p j , g j = f ( Y u i , p j , Y u i , g j ) Y u i , p j ∗ , g j = f ( Y u i , p j ∗ , Y u i , g j ) \begin{array}{l} \mathrm{Y}_{u_{i}, p_{j}, g_{j}}=f\left(\mathrm{Y}_{u_{i}, p_{j}}, \mathrm{Y}_{u_{i}, g_{j}}\right) \\ \mathrm{Y}_{u_{i}, p_{j}^{*}, g_{j}}=f\left(\mathrm{Y}_{u_{i}, p_{j}^{*}}, \mathrm{Y}_{u_{i}, g_{j}}\right) \end{array} Yui,pj,gj=f(Yui,pj,Yui,gj)Yui,pj,gj=f(Yui,pj,Yui,gj)
其中 f ( ⋅ ) f(\cdot) f() 函数定义为下面:
f ( Y u i , p j , Y u i , g j ) = Y u i , p j ∗ tanh ⁡ ( Y u i , g j ) . f\left(\mathrm{Y}_{u_{i}, p_{j}}, \mathrm{Y}_{u_{i}, g_{j}}\right)=\mathrm{Y}_{u_{i}, p_{j}} * \tanh \left(\mathrm{Y}_{u_{i}, g_{j}}\right) . f(Yui,pj,Yui,gj)=Yui,pjtanh(Yui,gj).
上式中进一步定义有:

Y u i , p j = u i T p j , Y u i , g j = u i , g T p j , g , Y u i , p j ∗ = E ( Y u i , P ) = 1 ∣ P ∣ ∑ p t ∈ P Y u i , p t \begin{array}{c} \mathrm{Y}_{u_{i}, p_{j}}=\mathbf{u}_{i}^{T} \mathbf{p}_{j}, \mathrm{Y}_{u_{i}, g_{j}}=\mathbf{u}_{i, g}^{T} \mathbf{p}_{j, g}, \\ \mathrm{Y}_{u_{i}, p_{j}^{*}}=\mathbb{E}\left(\mathrm{Y}_{u_{i}, P}\right)=\frac{1}{|\mathcal{P}|} \sum_{p_{t} \in \mathcal{P}} \mathrm{Y}_{u_{i}, p_{t}} \end{array} Yui,pj=uiTpj,Yui,gj=ui,gTpj,g,Yui,pj=E(Yui,P)=P1ptPYui,pt
where P \mathcal{P} P denotes the set of POIs and ∣ P ∣ |P| P is the cardinality of the set ∣ P ∣ |P| P .

2.2【损失定义】

L = L F + λ 1 ( L I N D g + L I N D f ) + λ 2 ∥ Θ ∥ 2 α ( L C + λ 2 ∥ Θ g ∥ 2 ) , \begin{aligned} \mathcal{L}=\mathcal{L}_{F}+\lambda_{1}\left(\mathcal{L}_{\mathrm{IND} g}\right. \left.+\mathcal{L}_{\mathrm{IND} f}\right)+\lambda_{2}\|\Theta\|_{2} \alpha\left(\mathcal{L}_{C}+\lambda_{2}\left\|\Theta_{g}\right\|_{2}\right), \end{aligned} L=LF+λ1(LINDg+LINDf)+λ2∥Θ2α(LC+λ2Θg2),

  • 为了优化真实场景下 Y u i , p j , g j Y_{u_i, p_j, g_j} Yui,pj,gj,利用BPR loss,其中 O = { ( u i , p j , p k ) ∣ ( u i , p j ) ∈ O + , ( u i , p k ) ∈ O − } O=\left\{\left(u_{i}, p_{j}, p_{k}\right) \mid\left(u_{i}, p_{j}\right) \in O^{+},\left(u_{i}, p_{k}\right) \in O^{-}\right\} O={(ui,pj,pk)(ui,pj)O+,(ui,pk)O} 是训练数据,其中 $O^{+} 表示正交互样本, 表示正交互样本, 表示正交互样本,O^{-} $表示负交互样本。
    L F = ∑ ( u i , p j , p k ) ∈ O − ln ⁡ σ ( Y u i , p j − Y u i , p k ) , \mathcal{L}_{F} = \sum_{(u_i, p_j, p_k) \in \mathcal{O}} -\ln \sigma(Y_{u_i, p_j} - Y_{u_i, p_k}), LF=(ui,pj,pk)Olnσ(Yui,pjYui,pk),

  • 为了在反事实场景下获得更好的 Y u i , p j ∗ , g j Y_{u_i, p_j^*, g_j} Yui,pj,gj,其中$ \mathrm{Y}{u{i}, p_{j}^{*}}=\mathbb{E}\left(\mathrm{Y}{u{i}, P}\right)$,作者也是采用 BPR loss进行区分 Y u i , g j \mathrm{Y}_{u_{i}, g_{j}} Yui,gj Y u i , g k \mathrm{Y}_{u_{i}, g_{k}} Yui,gk
    L C = ∑ ( u i , g j , g k ) ∈ O − ln ⁡ σ ( Y u i , g j − Y u i , g k ) \mathcal{L}_{C}=\sum_{\left(u_{i}, g_{j}, g_{k}\right) \in O}-\ln \sigma\left(\mathrm{Y}_{u_{i}, g_{j}}-\mathrm{Y}_{u_{i}, g_{k}}\right) LC=(ui,gj,gk)Olnσ(Yui,gjYui,gk)

  • L I N D \mathcal{L}_{\mathrm{IND}} LIND是distance correlation确保用户意图的独立性 携带尽可能多的信息。

3 总结

图谱的构建是文章的亮点,通过两个方面的信息进行建模,之后运用反事实理论得到更好的推荐结果(推荐系统是反应 P → Y P \rightarrow Y PY,而我们建模还是需要更好的反应各个因素对 Y Y Y 的影响)。

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

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

相关文章

引入QQ邮箱发送验证码进行安全校验

最近想给自己的项目在注册时加点安全校验,本想着使用短信验证码,奈何囊中羞涩只能退而求次改用QQ邮箱验证注册~ 一.需求分析 场景:用户输入自己的邮箱,点击获取验证码,后台会发送一封邮件到对应邮箱中。 分析&#x…

element表单搜索框与表格高度自适应

一般在后台管理系统中,表单搜索框和表格的搭配是非常常见的,如下所示: 在该图中,搜索框有五个,分为了两行排列。但根据大多数的UI标准,搜索框默认只显示一行,多余的需要进行隐藏。此时的页面被…

【Flutter入门到进阶】跨平台相关-Flutter的选择

1.回顾Android渲染机制工作流程 1.1 图例 1.2 说明 1.Android内部自己通过skia引起完成图像构建 2.Android通过surfacefilinger来完成图像与驱动之间的处理 2 自建渲染引擎渲染方案 自建渲染引擎渲染方案,是有别于Web渲染采用WebView容器进行渲染UI、原生渲染…

软件设计(十)--计算机系统知识

软件设计(九)https://blog.csdn.net/ke1ying/article/details/128990035 一、效验码 奇偶效验:是一种最简单的效验方法。基本思想是:通过在编码中增加一个效验位来使编码中1的个数为奇数(奇效验)或者为偶…

微内核架构

QNX微内核架构 设计原则 最小化内核功能 将操作系统功能移到用户态,成为Server“服务”。在用户模块之间,通过消息传递机制通信。 在宏内核中,文件系统和磁盘驱动都是运行在内核态,应用通过内核调用文件系统,文件系…

Ubuntu搭建博客typecho

提示 见过这样类型的blog吧,现在就是最详细的搭建过程。 第一步 搭建apache2环境 安装命令 sudo apt -y install apache2 apache2-utils访问项目地址: /var/www/html配置文件在: /etc/apache2/日志在: /var/log/apache2/ 修改配置文件 vim…

如何在项目中正确使用异常?

文章目录异常系列文章一、异常介绍二、异常体系三、异常处理机制四、异常处理五、异常调用链异常系列文章 如何在项目中正确使用异常?如何优雅的设计Java异常Java统一异常处理–实战篇Java 异常处理的误区和经验总结你要的Java常见异常都在这里Java中异常抛出后代码…

SpringBoot后端接口请求参数映射方式详解

在SpringBoot项目中,前端HTTP请求中的参数如何映射到Controller层的接口方法中的参数?这里针对各种方式做一个测试与总结。 1:QueryString方式 QueryString参数传递的方式为,在请求URL中直接拼接请求参数如:URL?para…

Java实现调用ChatGPT详解

Java调用ChatGPT的小插件1. 申请ChatGPT账号2. 配置阶段2.1 依赖引入2.2 配置application.yml文件2.3 EnableChatGPT注解3. 使用4. 测试1. 申请ChatGPT账号 CSDN上面有很多申请ChatGPT账号的教程,可以直接搜索chatgpt账号注册,然后按照高赞的几个回答注…

谷粒商城--SPU和SKU

目录 1.SPU和SKU概念 2.表的关系理解 3.导入前端代码 4.完善后端接口 5.属性分组详情 6.规格参数详情 7. 销售属性详情 8.分组与属性关联 9.发布商品 10.仓库服务 1.SPU和SKU概念 SPU:standard product unit(标准化产品单元):是商品信息聚合的…

链表OJ(一)

目录 从尾到头打印链表_牛客题霸_牛客网 160. 相交链表 141. 环形链表 142. 环形链表 II 138. 复制带随机指针的链表 从尾到头打印链表_牛客题霸_牛客网 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 如输入…

Three.js中的3D文字效果

对于一些设计网页中经常会出现一些3D的文字效果,本文将利用Three.js实现各种动画WebGL文本输入效果。 示例效果 原文章 文本采样 通常情况下,文本网格是2D的平面形状,我们所要实现的3D文本形状则是要在2D的平面下,再生成z值形成…

Oracle数据库启停命令

在日常工作中,关于数据库的启停:   先关闭上层应用服务 --> 关闭监听 --> 关闭数据库;   启动数据库 --> 启动监听 --> 启动应用(Oracle SQL Developer)。 监听lsnrctl Oracle监听命令。 lsnrctl start [listener-name]&a…

Xml格式化与高亮显示

具体请参考:Xml格式化与高亮显示

分布式系统的数据一致性方案

1、在出现一致性问题时如果系统的并发或不一致情况较少,可以先使用重试来解决 a、同步重试 b、异步重试 c、入库,定时任务重试 2、分布式事务 基于数据库 XA 协议的 2PC、3PC,基于业务层的TCC,基于消息队列消息表的最终一致性方案&#xff0…

七大设计原则之接口隔离原则应用

目录1 接口隔离原则介绍2 接口隔离原则应用1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时…

八、Git远程仓库操作——跨团队成员的协作

前言 前面一篇博文介绍了git团队成员之间的协作,现在在介绍下如果是跨团队成员的话,如何协作? 跨团队成员协作,其实就是你不属于那个项目的成员,你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…

图形化深度学习开发平台PaddleStudio(代码开源)

目录一、PaddleStudio概述二、环境准备2.1 安装PaddlePaddle2.2 安装依赖库三、基本使用介绍3.1 启动3.2 快速体验3.2.1 下载示例项目3.2.2 训练3.2.3 评估3.2.4 测试3.2.5 静态图导出四、数据集格式4.1 图像分类4.2 目标检测4.3 语义分割4.4 实例分割五、趣味项目实战&#xf…

【前端笔试题二】从一个指定数组中,每次随机取一个数,且不能与上次取数相同,即避免相邻取数重复

前言 本篇文章记录下我在笔试过程中遇到的真实题目,供大家参考。 1、题目 系统给定一个数组,需要我们编写一个函数,该函数每次调用,随机从该数组中获取一个数,且不能与上一次的取数相同。 2、思路解析 数组已经有了…