【論文閱讀】A Diffusion model for POI recommendation

論文出處:ACM Transactions on Information Systems (TOIS)? SCI一區? CCF-A期刊

論文地址:[2304.07041] A Diffusion model for POI recommendation

論文代碼:Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI.

目錄

摘要

研究背景與重要性

現有方法及其局限性

核心問題與挑戰?

擴散模型的潛力

本文解決方案(Diff-POI)?

貢獻總結?

相關工作

興趣點推薦

圖神經網絡?

擴散模型?

準備工作?

問題定義

時空圖構造

擴散理論?

方法?

時空序列圖編碼器

地理編碼器

擴散采樣模塊

預測與輸出?

實驗?

實驗設置

?總體性能

消融實驗?

?案例研究

效率分析(附錄)

結論

摘要

下一個興趣點(POI)推薦是基于位置的服務中的一項關鍵任務,旨在為用戶的下一個目的地提供個性化建議。先前關于POI推薦的研究主要集中在用戶空間偏好的建模上。然而,現有的利用空間信息的工作僅基于用戶以前訪問過的位置的匯總,這阻礙了模型在新區域推薦poi。在許多情況下,基于位置的方法的這種特性會損害模型的性能。此外,將順序信息整合到用戶的空間偏好中仍然是一個挑戰。在本文中,我們提出了diffi-POI:一個基于擴散的模型,該模型對用戶的空間偏好進行采樣,以推薦下一個POI。受擴散算法在分布采樣中廣泛應用的啟發,diffi-poi采用兩個定制的圖編碼模塊對用戶的訪問序列和空間特征進行編碼,然后采用基于擴散的采樣策略來探索用戶的空間訪問趨勢。我們利用擴散過程及其反向形式從后驗分布中抽樣,并優化相應的分數函數。我們設計了一個聯合訓練和推理框架來優化和評估所提出的Diff-POI。在四個真實世界POI推薦數據集上進行的大量實驗表明,我們的diffi-POI優于最先進的基線方法。對Diff-POI的進一步消融和參數研究揭示了所提出的基于擴散的采樣策略的功能性和有效性,以解決現有方法的局限性。

研究背景與重要性

這部分介紹了基于位置的社交網絡(LBSN)的興起(如Yelp、Foursquare),以及POI推薦系統的核心目標:通過用戶歷史行為(簽到記錄)提供個性化的位置推薦,緩解信息過載問題。POI推薦與傳統推薦的區別在于需建模地理特征(如POI位置對用戶行為的影響)。

現有方法及其局限性

  • 傳統方法:基于馬爾可夫鏈、矩陣分解(MF)或RNN/LSTM的序列建模(如ST-RNN)。

  • 圖神經網絡方法:利用GNN建模POI間的轉移關系(如STGCN、GSTN)。

  • 現有方法多依賴歷史位置聚合,導致推薦偏向用戶熟悉區域,難以滿足探索新區域的需求(如游客或偶爾探索的用戶)。

核心問題與挑戰?

  • 保守型用戶(User 1):常訪問固定區域(如家庭-工作地),傳統聚合方法有效。

  • 探索型用戶(User 2/3):傾向于訪問新區域,但現有方法無法捕捉這種動態偏好。

  • 關鍵挑戰:如何建模從歷史分布未來偏好分布的復雜映射關系?

擴散模型的潛力

  • 擴散模型在圖像生成、NLP等領域已證明能建模復雜分布轉換(如DDPM、Score-SDE)。

  • 其核心優勢:通過前向-反向擴散過程分解分布間的轉移路徑,適合解決POI推薦中“歷史→未來”的分布映射問題。

本文解決方案(Diff-POI)?

Diff-POI的三大創新:

  1. 時空圖編碼器:通過注意力機制融合用戶訪問序列的時空間隔(時間差、距離差)。

  2. 擴散采樣模塊:用反向SDE從用戶特定后驗分布中采樣空間偏好,生成個性化位置原型。

  3. 聯合優化框架:結合交叉熵損失和Fisher損失,優化推薦和采樣過程。

貢獻總結?

  1. 提出首個基于擴散模型的POI推薦框架。

  2. 設計時空圖編碼器,增強序列建模能力。

  3. 通過擴散采樣解決新區域推薦問題。

  4. 在4個數據集上驗證有效性(Recall@10提升最高12%)。

相關工作

興趣點推薦

  • 早期方法:基于矩陣分解(MF)和馬爾可夫鏈(如因子分解馬爾可夫鏈),但僅能捕捉淺層交互。

  • 深度學習方法

    • RNN/LSTM變體(如ST-RNN、STGN)通過時空門控機制改進序列建模。

    • 注意力機制(如ARNN)和Transformer架構(如GeoSAN、STAN)進一步融合地理坐標和相對時空信息。

  • 核心問題:現有方法仍依賴歷史訪問的聚合表示,難以推薦新區域。

圖神經網絡?

  • 通用推薦框架:如LightGCN(簡化圖卷積)、DGCF(解耦表征)和SR-GNN(序列圖建模)。

  • POI專用方法

    • STGCN:利用關系圖卷積建模用戶-POI多元關系。

    • GSTN:構建轉移圖和距離圖,顯式編碼POI空間關系。

    • DisenPOI:通過對比學習解耦地理和序列影響。

  • 局限性:基于距離圖的嵌入學習會導致“鄰近偏好”,抑制探索性推薦。

擴散模型?

  • 理論基礎

    • DDPM和Score-SDE框架將擴散過程視為隨機微分方程的求解。

    • 反向過程等價于基于分數函數的Langevin采樣。

  • 跨領域應用

    • 圖像生成(Diffusion-LM)、文本生成(DiffWave)、圖生成(DiGress)。

    • 在推薦系統中的潛力尚未充分探索,尤其是對分布遷移的建模能力。

  • 本文切入點:首次將擴散過程用于POI推薦中的用戶空間偏好采樣。

準備工作?

問題定義

  • 設POI集合為?$\mathcal{L}={l_1,l_2,...,l_{|\mathcal{L}|}}$,用戶集合為?$\mathcal{U}={u_1,u_2,...,u_{|\mathcal{U}|}}$

  • 對用戶u,給定其歷史軌跡?$H(u)={(l_1^u,t_1^u),(l_2^u,t_2^u),...,(l_n^u,t_n^u)}$(含POI和訪問時間戳),目標是預測下一個POI?$l_{n+1}^u$

  • 關鍵特征:POI間的地理距離矩陣 $A_d \in \mathbb{R}^{|\mathcal{L}|\times |\mathcal{L}|}$,其中 $A_d(i,j)=\text{haversine}(l_i,l_j)$(基于半正矢公式計算)。

時空圖構造

為建模時空關系,論文定義兩類圖結構:

  1. 轉移圖(Transition Graph)?$\mathcal{G}_u=(\mathcal{V}_u,\mathcal{E}_u)$:節點?$\mathcal{V}u$為用戶 $u$訪問過的POI,邊?$e=\langle l_i^u,l{i+1}^u \rangle \in \mathcal{E}_u$?表示連續訪問關系。

  2. 距離圖(Distance Graph)?$\mathcal{G}_d=(\mathcal{V}_d,\mathcal{E}_d,A_d)$:節點?$\mathcal{V}_d=\mathcal{L}$ 為所有POI,邊?$(l_i,l_j) \in \mathcal{E}_d$ 表示兩地距離小于閾值(如1km),邊權?$A_d$ 為實際地理距離。

擴散理論?

基于隨機微分方程(SDE)的擴散過程形式化描述:

  1. 前向擴散(加噪過程):離散形式為馬爾可夫鏈,條件概率定義為:

    連續形式對應Ito SDE:

  2. 反向擴散(采樣過程):
    反向SDE形式為:

    其中?$\nabla_x \log p_t(x)$?為分數函數(score function),通過神經網絡$s_\theta(x)$估計。

方法?

如圖所示,Diff-POI由三個關鍵模塊組成,分別是:(A)一個時空序列圖編碼器,它將連續訪問之間的距離和時間間隔與順序圖編碼結合在一起;(B)一個基于距離的POI圖編碼器,它對距離圖進行圖卷積,從而產生每個POI的位置嵌入;(C)一個上下文驅動的擴散模塊,它獲得用戶特定的位置原型,然后采用基于擴散的采樣策略,對用戶的空間偏好進行采樣。

時空序列圖編碼器

  • 輸入:用戶訪問序列圖(節點 = 訪問過的POI,邊 = 連續訪問關系(如 POI? → POI?)邊特征 = 時間差和地理距離) + 時空間隔

  • 操作

    1. 通過嵌入層將離散的時空間隔轉為向量

    2. 雙向注意力聚合(同時考慮前驅和后繼POI的影響)

    3. 用自注意力生成最終用戶表征?$x_u$

  • 輸出:用戶嵌入向量(?$d$ 維)

地理編碼器

  • 輸入:全量POI距離圖(節點 = 所有POI,邊 = POI間距離 < 閾值(如1km),邊權重 = 實際距離的指數衰減值?)

  • 操作

    1. 多層圖卷積(GCN)傳播地理信息

    2. 跨層均值池化

  • 輸出:每個POI的地理嵌入$e_i^g$

擴散采樣模塊

  • 輸入:用戶嵌入$x_u$ + 歷史POI地理嵌入

  • 操作

    1. 前向過程:對真實目標POI的地理嵌入逐步加噪

    2. 反向過程

      • 用MLP網絡預測噪聲(條件注入$x_u$

      • 通過SDE求解器從噪聲中采樣空間偏好?$v_u(0)$

  • 輸出:用戶未來可能偏好的空間位置向量($d$維)

預測與輸出?

  • 組合預測
    推薦分數 = α*(用戶偏好·POI特征) + (1-α)*(空間偏好·POI地理特征)

組成部分反映信息是否用戶相關是否空間相關數據來源模塊
用戶偏好$x_u$時序行為規律???時空圖編碼器
POI特征 $e_i^l$靜態屬性??嵌入層
空間偏好 $v_u(0)$未來區域傾向????擴散采樣模塊
POI地理特征 $e_i^g$空間上下文???地理編碼器
  • 最終輸出
    對所有候選POI計算分數,輸出Top-K推薦列表
    (例如:[博物館:0.8, 公園:0.7, 餐廳:0.6]

  • 當α→1:推薦完全依賴用戶歷史行為(適合保守用戶)
    推薦結果 ≈ 與歷史訪問相似的POI

  • 當α→0:推薦側重空間偏好(適合探索型用戶)
    推薦結果 ≈ 符合未來空間傾向的新POI

  • 實驗值:論文通過網格搜索確定α=0.5最優(平衡兩種信號)

實驗?

實驗設置

使用4個真實LBSN數據集,統計信息如下:

數據集用戶數POI數簽到數平均訪問長度
Gowalla10,16224,237456K44.95
Foursquare-SIN2,3215,596194K83.63
Foursquare-TKY2,29315,177494K215.79
Foursquare-NYC1,0839,989179K165.71

預處理

  • 5-core過濾(用戶和POI至少5次訪問)

  • 按時間戳劃分訓練/驗證/測試集(8:1:1)

?對比方法

  • 傳統方法:MF、GRU4Rec

  • 圖推薦方法:LightGCN、DGCF、SR-GNN

  • POI專用方法:GeoIE、LSTPM、STAN

  • SOTA方法:SGRec、DRAN

評估指標

  • Recall@K:真實POI出現在Top-K的比例

  • NDCG@K:考慮排序位置的加權得分

  • 測試協議:全量POI候選(非采樣評估)

?總體性能

核心結論

  1. 擴散采樣有效性:Diff-POI在所有數據集上顯著優于基線(p<0.05)

  2. 探索能力驗證:在用戶歷史訪問稀疏區域(如TKY數據集)提升最顯著

  3. 時空建模優勢:比純序列模型(LSTPM)和純圖模型(SGRec)更全面

消融實驗?

組件分析

變體名稱修改內容Recall@10下降幅度
W/O-Sampling直接使用初始原型$\hat{v}_u$3.3%
W/O-Condition去除用戶條件$x_u$2.1%
W/O-GeoEncoder替換為隨機初始化的POI嵌入6.7%

?超參數影響

  • α值(序列vs空間權重):
    $\alpha=0.5$時達到最優(平衡歷史行為與探索需求)

  • 擴散步數
    超過100步后收益遞減(驗證VP-SDE的高效性)

?案例研究

用戶分組測試

結果

  • 對探索用戶,Diff-POI比最佳基線提升14.2%

  • 對保守用戶,性能與DRAN相當(差異<1%)

采樣過程可視化

用戶A(保守型):采樣軌跡快速收斂到歷史訪問區域
用戶C(探索型):采樣軌跡逐步偏離歷史區域,指向新商圈

推薦示例對比

用戶類型傳統方法推薦結果Diff-POI新增推薦
游客酒店周邊1km內餐廳3km外熱門景點
上班族常去咖啡館的同品牌分店鄰近新開的共享辦公空間

效率分析(附錄)

  • 訓練時間:比DRAN長20%(主要開銷在擴散采樣)

  • 推理速度:單用戶采樣耗時<10ms(滿足實時推薦需求)

結論?

本文提出了一種新的基于圖的POI推薦模型,即Diff-POI,利用時空過渡圖對用戶的位置偏好進行建模。Diff-POI配備了一個定制的序列圖編碼器,可以描述用戶的時空軌跡,然后采用基于擴散的采樣策略對用戶的位置偏好進行采樣。在四個真實數據集上的綜合實驗證明了所提出的Diff-POI框架的有效性及其優于現有最先進的基線模型。消融和案例研究進一步提供了一個直觀的觀點,即采樣過程如何描述用戶隱藏的位置偏好。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90172.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust實現FasterR-CNN目標檢測全流程

使用 Rust 和 FasterR-CNN 進行目標檢測 FasterR-CNN 是目標檢測領域廣泛使用的深度學習模型。Rust 生態中可以通過 tch-rs(Torch 綁定)調用預訓練的 PyTorch 模型實現。以下為完整實現步驟: 環境準備 安裝 Rust 和必要的依賴: cargo add tch cargo add anyhow # 錯誤…

Github 2025-07-03Go開源項目日報Top10

根據Github Trendings的統計,今日(2025-07-03統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Go項目10JavaScript項目2Go編程語言:構建簡單、可靠和高效的軟件 創建周期:3474 天開發語言:Go協議類型:BSD 3-Clause “New” or “Revise…

XML Schema 安裝使用教程

一、XML Schema 簡介 XML Schema&#xff08;XSD&#xff0c;全稱 XML Schema Definition&#xff09;是用于定義 XML 文檔結構、數據類型和數據約束的標準方式。它比 DTD 更加強大&#xff0c;支持數據類型、默認值、命名空間等&#xff0c;是企業級 XML 應用推薦的驗證方式。…

【字節跳動】數據挖掘面試題0008:計算西瓜視頻內容好評率

文章大綱題目描述題目描述 西瓜視頻近期開展了”2020百大人氣創作者”優質內容扶持項目&#xff0c;鼓勵用戶產出優質的視頻內容。 現需要統計2020年11月01日至2020年11月30日期間創作的視頻中&#xff0c; “科技”大類下“數碼測評"子類的視頻好評率&#xff08;好評率好…

Linux 進程控制:全面深入剖析進程創建、終止、替換與等待

文章目錄引言一、進程創建&#xff1a;fork()系統調用的奧秘1.1 fork()的基本原理1.2 代碼示例與解讀1.3 寫時復制&#xff08;COW&#xff09;優化二、進程終止&#xff1a;exit()與_exit()的抉擇2.1 exit()和_exit()的區別2.2 代碼示例與分析三、進程替換&#xff1a;exec()函…

PJSIP 中的 TCP 傳輸配置指南

PJSIP 支持通過 TCP 傳輸 SIP 消息&#xff0c;相比 UDP 提供了更可靠的傳輸機制。以下是關于在 PJSIP 中使用 TCP 的詳細指南。1. 創建 TCP 傳輸基本 TCP 傳輸配置cpjsua_transport_config tcp_cfg; pjsua_transport_config_default(&tcp_cfg); tcp_cfg.port 5060; // SI…

小菜狗的云計算之旅,今天學習MySQL數據庫基礎知識及操作

目錄 一、概述 數據庫概念 數據庫的類型 關系型數據庫模型 關系數據庫相關概念 二、安裝 1、mariadb安裝 2、mysql安裝 3、啟動并開機自啟 4、本地連接&#xff08;本地登錄&#xff09; 三、mysql數據庫配置與命令 yum安裝后生成的目錄 mysql服務器的啟動腳本 數…

為什么是直接在**原型(prototype)上**添加函數

這是一個非常經典、核心的 JavaScript 面向對象編程問題&#xff1a;> 為什么是直接在**原型&#xff08;prototype&#xff09;上**添加函數&#xff0c;而不是在類/構造函數內部直接添加&#xff1f;你提到的代碼中&#xff1a;javascript function TopSearchComponent() …

深入理解 classnames:React 動態類名管理的最佳實踐

在現代前端開發中&#xff0c;我們經常需要根據組件的狀態、屬性或用戶交互來動態切換 CSS 類名。雖然 JavaScript 提供了多種方式來處理字符串拼接&#xff0c;但隨著應用復雜性的增加&#xff0c;傳統的類名管理方式很快就會變得混亂不堪。這時&#xff0c;classnames 庫就像…

C++系列(七):深度探索C++內存 --- 分區、堆棧、new/delete與高效編程實踐

引言 程序運行的本質是對數據的處理&#xff0c;而內存則是程序執行的核心舞臺。理解內存的物理與邏輯分區&#xff0c;是掌握程序底層行為、編寫高效可靠代碼的關鍵基石。內存并非混沌一片&#xff0c;而是被嚴格劃分為代碼區、全局區、棧區和堆區。每個區域擁有獨特的生命周…

微信小程序71~80

1.總結小程序生命周期 小程序冷啟動&#xff0c;鉤子函數執行的順序保留當前頁面&#xff0c;進入下一個頁面&#xff0c;鉤子函數執行的順序銷毀當前頁面&#xff0c;進入下一個頁面&#xff0c;鉤子函數執行的順序小程序熱啟動&#xff0c;鉤子函數執行的順序 2.使用Componen…

[Pytest][Part 3]檢測python package狀態

目錄 實現需求1&#xff1a; 檢查python package狀態——pkg_resource hook實現自動檢測包狀態 conftest.py hook鉤子函數 Part1: https://blog.csdn.net/x1987200567/article/details/144915315?spm1001.2014.3001.5501 從這里開始逐個實現Part1中的需求 實現需求1&a…

自定義時間范圍選擇組件使用教程(基于 Vue 3 + Element Plus)

&#x1f553; 自定義時間范圍選擇組件使用教程&#xff08;基于 Vue 3 Element Plus&#xff09;? 一個靈活實用的時間范圍選擇器&#xff0c;支持開始時間、結束時間、快捷時間選項、本地雙向綁定、插槽擴展等功能。–&#x1f4d8; 一、功能介紹 該組件基于 Element Plus …

YOLOv8 模型轉換 ONNX 后 C# 調用異常:一個參數引發的跨平臺適配難題

一、問題背景&#xff1a;從 Python 訓練到 C# 部署的跨平臺需求 作為一名 C# 開發者&#xff0c;我在完成 YOLOv8 模型訓練&#xff08;使用 Ultralytics 官方框架&#xff0c;訓練數據為自定義目標檢測數據集&#xff0c;輸入尺寸 640x640&#xff0c;訓練輪次 100 輪&#…

Apache Cloudberry 亮相 2025 IvorySQL 生態大會暨 PostgreSQL 高峰論壇

6 月 27 日至 28 日&#xff0c;IvorySQL 2025 生態大會暨 PostgreSQL 高峰論壇在泉城濟南順利召開。本屆大會由 IvorySQL 開源數據庫社區主辦、瀚高基礎軟件股份有限公司承辦&#xff0c;吸引了來自國內外的數據庫技術專家、開發者與開源愛好者齊聚一堂&#xff0c;聚焦數據庫…

CMake之CMakeLists.txt語法規則

本文主要參考正點原子的應用開發手冊&#xff0c;僅作為本人學習筆記使用。 目錄 cmake 的使用方法其實還是非常簡單的&#xff0c;重點在于編寫 CMakeLists.txt&#xff0c;CMakeLists.txt 的語法規則也簡單&#xff0c;并沒有 Makefile的語法規則那么復雜難以理解&#xff01…

Mysql專題復習

重點內容&#xff1a;1. Mysql架構&#xff1a;客戶端 Server層 存儲引擎2. 索引數據結構&#xff1a;B樹4. 索引優化&#xff1a;覆蓋索引、排序、JOIN、分頁&#xff1b; COUNT; 索引下推&#xff1b;單/雙路排序5. 數據庫事務&#xff1b; 鎖&#xff1b;隔離級別&#xff…

CLIP的tokenizer詳解

一、bytes_to_unicodedef bytes_to_unicode():"""Returns list of utf-8 byte and a corresponding list of unicode strings.The reversible bpe codes work on unicode strings.This means you need a large # of unicode characters in your vocab if you wa…

【如何判斷Linux系統是Ubuntu還是CentOS】

要確定您的操作系統是 Ubuntu 還是 CentOS&#xff0c;可以通過以下方法快速檢查&#xff1a; 方法 1&#xff1a;通過終端命令&#xff08;推薦&#xff09; 在終端中執行以下命令之一&#xff1a; 查看 /etc/os-release 文件 cat /etc/os-releaseUbuntu 特征&#xff1a;顯示…

RISCV Linux 虛擬內存精講系列二 -- Linux 入口 head.S

通過 Linux 的構建系統&#xff0c;即 Linux 源代碼的根目錄下的 Makefile&#xff0c;能夠找到 vmlinux 的鏈接文件&#xff0c;從而能夠查看其入口代碼 head.S:_start&#xff0c; 如下&#xff1a; Linux 構建系統主Makefile: vmlinux.lds: head.S: 找到該入口后&#xff0c…