用 Graph 技術強化推薦系統 (1): 理論篇

更新於 2024/12/16閱讀時間約 9 分鐘

前言

在現今的數據驅動世界,推薦系統早已成為許多平台(如電商、串流媒體、社交網路)不可或缺的一部分。然而,傳統的推薦方法如協同過濾(Collaborative Filtering)和基於內容過濾(Content-Based Filtering)各有其局限性,例如無法處理冷啟動問題或缺乏靈活性。最近在 YouTube survey 與學習 : 關於如何利用圖形資料庫(Graph Database)提升推薦系統的方法,特別是如何透過 Neo4j 等工具實現更高效的混合推薦(Hybrid Recommendation)和 k-近鄰(k-NN)推薦。

這篇 Blog 將簡要整理我所學到的內容,主要是理論的部分,從傳統推薦方法的挑戰開始,探討如何使用圖技術來提升推薦效果,下一篇老樣子會拿一個 sample dataset 實作,並在提出實作的結果與討論,那我們開始吧!

raw-image

常見傳統的推薦方法與其挑戰

1. Top 10 Recommendation(熱門推薦)

  • 方法:推薦最受歡迎的前十項目。
  • 問題:這種方式雖然簡單直觀,但不一定能滿足用戶的個性化需求。
  • 例子:雙十一期間,購物網站推薦最熱銷的商品,如某品牌電冰箱。但如果用戶對電冰箱毫無需求,這些推薦對於促進轉換毫無幫助。

2. Content-Based Recommendation(基於內容的推薦)

  • 方法:根據用戶之前喜歡的內容,推薦相似的項目。
  • 問題:靈活度較低,長期使用可能會讓用戶感到無趣。
  • 例子:如果用戶在 Instagram 上瀏覽過狗狗影片,系統會持續推薦相似的狗狗內容。這樣用戶可能會錯過其他類型的熱門或新興內容,降低使用體驗的多樣性。

3. Collaborative Filtering(協同過濾推薦)

  • 方法:基於用戶行為或其他用戶的行為進行推薦,依賴類似用戶的偏好來提供建議。
  • 問題:容易形成回音室效應,推薦內容局限於過去的行為,無法發現新的興趣或突破現有偏好。
  • 例子:用戶的觀看紀錄可能會局限於某一類型,推薦引擎很難推送新的影片或商品,讓用戶嘗試新的東西。

用 Graph 技術優化推薦:更準確、更即時

雖然傳統推薦方法已在許多應用中取得不錯的成效,但隨著數據規模和需求的提升,它們的局限性逐漸顯現。這時,Graph 技術的出現為推薦系統帶來了不同的解決方案,我們能更靈活地處理複雜的關聯數據,提升推薦的質量和多樣性。

這裡會有一個疑問:是不是這些推薦方法一定得用到 graph db ? 還是現有的 relational database可以做推薦嗎?

  1. 結合協同過濾與內容過濾:Hybrid Recommendation
  • 挑戰:協同過濾和基於內容的推薦各有優缺點,單一方法無法全面解決用戶需求。
  • 解決方案:Graph 技術讓我們能將這兩種方法結合,實現混合推薦(Hybrid Recommendation)。透過圖形資料庫,我們可以同時考慮用戶行為與內容相似性,提供更強大的推薦效果。
  • 優勢
  • 1) 增強推薦多樣性,讓用戶能同時看到熟悉與新穎的內容。
  • 2) 解決冷啟動問題,適用於新用戶或新項目。

2. 即時推薦:Real-Time Recommendations

  • 挑戰:傳統推薦系統通常需要離線計算,無法即時提供個性化建議。
  • 解決方案:Neo4j 等圖形資料庫支持實時查詢,可以根據用戶當前的行為,立即生成個性化推薦。
  • 優勢
  • 1) 用戶不必等待過時的推薦,能夠根據最新數據即時獲取內容。
  • 2) 增強用戶體驗,提升互動性與轉化率。

混合推薦系統應用於電影推薦

場景:有一用戶剛看完 Toy story ,要推薦下一步他感興趣的電影。

步驟 1:建構數據模型

使用 Graph 技術將以下元素建模為節點與關係:

  • 用戶(User):每位用戶作為一個節點。
  • 電影(Movie):電影作為另一個節點。
  • 評分關係(Rated):用戶與電影之間的評分作為關係,包含分數作為屬性。

這樣的數據模型可反映每位用戶對不同電影的觀看與評分記錄,為推薦系統提供基礎數據。

步驟 2:推薦的 query

推薦查詢可分為以下幾個步驟執行:

  1. 找到看過 Toy Story 的用戶: 查詢所有評分 Toy Story 的用戶節點
MATCH (watched:Movie {title:"Toy Story"}) <-[r1:RATED]- (user:Person)

2. 篩選評分超過 7 分的電影 :

MATCH (user) -[r2:RATED]-> (unseen:Movie)

WHERE r2.rating > 7

3. 確保電影類型與 Toy Story 相同

AND watched.genres = unseen.genres

4. 過濾出目標用戶未觀看過的電影

AND NOT ((:Person {username:"target_user"}) -[:RATED]-> (unseen))

5. 回傳與排序推薦結果

RETURN unseen.title, COUNT(*) AS recommendation_count

ORDER BY recommendation_count DESC

LIMIT 25
ref YT video: https://youtu.be/b_0Iuc3zUN4?si=vwWbIymyFxwfoyjo

ref YT video: https://youtu.be/b_0Iuc3zUN4?si=vwWbIymyFxwfoyjo

K-Nearest Neighbors(KNN) 應用於電影推薦

在 Graph 技術中,k-近鄰(k-NN)推薦是一種基於相似性計算的推薦方法,常用於衡量用戶或項目之間的關聯性,尤其是當我們希望為用戶推薦與其偏好相近的內容時。

場景:(跟剛剛相同)有一用戶剛看完 Toy story ,要推薦下一步他感興趣的電影。

方法:尋找與目標用戶或項目最相似的 k 個鄰居,並根據這些鄰居的行為或評分來進行推薦。

步驟 1:餘弦相似度(Cosine Similarity)概念

餘弦相似度將每個用戶或項目視為高維向量,通過計算它們之間的角度來衡量相似性。

raw-image
  1. 將每個用戶或項目視為高維向量,餘弦相似度測量它們之間的角度。
  2. 當兩個向量的方向越接近時(夾角越小),相似度越高。

步驟 2:推薦流程

  1. 計算用戶之間的餘弦相似度: 為每個用戶計算與其他用戶的相似性。
  2. 找出最相似的 k 個鄰居 : 根據餘弦相似度的結果,篩選出與目標用戶最相似的 k 個用戶。
  3. 根據鄰居的評分進行推薦: 分析這些鄰居對於其他項目的評分,並將評分較高且目標用戶未看過的項目推薦給用戶。

步驟 3 :推薦 query

  1. 找到 Zoltan Varju 與他的鄰居(用戶)的相似度以及這些鄰居對不同電影的評分
MATCH (m:Movie) <-[r:RATED]- (b:Person) -[s:SIMILARITY]- (p:Person {name:'Zoltan Varju'})

2. 排除已評分的電影

WHERE NOT (p)-[:RATED]->(m)

3. 計算相似度與評分

WITH m, s.similarity AS similarity, r.rating AS rating

4. 按照相似度排序

ORDER BY m.name, similarity DESC

5. 選取前 3 個鄰居的評分 :收集與 Zoltan Varju 最相似的 3 位鄰居對每部電影的評分

WITH m.name AS movie, COLLECT(rating)[0..3] AS ratings

6. 計算推薦評分

WITH movie, REDUCE(s = 0, i IN ratings | s + i)*1.0 / LENGTH(ratings) AS recommendation

7. 排序與限制結果:回傳最適合的 25 部電影

ORDER BY recommendation DESC

RETURN movie, recommendation LIMIT 25
raw-image

小心得

在這篇筆記中,我們探索了如何使用 Neo4j 進行混合推薦和 KNN 推薦,透過 Graph 技術,能夠更靈活且準確地為用戶生成即時的推薦結果,無論是基於相似用戶還是相似內容。這種方法不僅提升了推薦的質量,也解決了許多傳統推薦系統面臨的瓶頸,例如冷啟動和數據稀疏問題。下回會拿一組 dataset ,並實作在 Neo4j 中構建節點與關係,和實作推薦系統。下次見囉~

avatar-img
33會員
43內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Karen的沙龍 的其他內容
本研究探討如何透過圖形資料庫模型來構建電子商務顧客的360度全景視圖,並使用客戶行為模型圖(CBMG)有效整合和分析客戶數據。研究強調理解顧客的行為模式和需求,並針對三種典型的購物行為類型進行分析,以提升網站設計和用戶體驗。通過Neo4j的應用,提供了可視化客戶行為模式的視角。
本文探討了監督式學習、分群和相似度這幾個推薦系統算法,分別討論了它們的優點、缺點以及適用場景。這些算法在推薦系統中扮演著重要角色,並透過特徵選擇與預處理、相似度度量和鄰居的選擇等關鍵因素進行深入分析。文章最後提出在選擇推薦系統算法時應該考慮的因素,以及未來的研究方向。
本研究探討如何透過圖形資料庫模型來構建電子商務顧客的360度全景視圖,並使用客戶行為模型圖(CBMG)有效整合和分析客戶數據。研究強調理解顧客的行為模式和需求,並針對三種典型的購物行為類型進行分析,以提升網站設計和用戶體驗。通過Neo4j的應用,提供了可視化客戶行為模式的視角。
本文探討了監督式學習、分群和相似度這幾個推薦系統算法,分別討論了它們的優點、缺點以及適用場景。這些算法在推薦系統中扮演著重要角色,並透過特徵選擇與預處理、相似度度量和鄰居的選擇等關鍵因素進行深入分析。文章最後提出在選擇推薦系統算法時應該考慮的因素,以及未來的研究方向。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
有時候回顧我部落格的文章,發現往往自己嘔心瀝血之作點閱數少的可憐... 反而隨意寫、在我眼中跟個版廢文沒兩樣的作品點閱率很高,一直感到很疑惑。我想知道怎樣的文章受讀者喜愛? 搜尋引擎又會推薦給讀者什麼樣子的文章?
Thumbnail
因為最近有在經營Youtube,也有看了一些教學,以及有些經營小心得
Thumbnail
在今日數位世界中,良好設計的網站已經成為必需品。 瞭解網站設計的重要性,特別是對於第一印象和信任度。 這篇文章提供了選擇網站設計服務的實用指南,包括網站設計的重要性,基礎知識和選擇服務提供者的提示。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
Thumbnail
近期 Google 搜尋引擎API機密文件的外流事件,絕對是近期震撼數位行銷世界的一大頭條,其內容揭示了一些有關 Google 搜尋結果生成原理的重要細節。今天本男爵就來跟各位聊聊這其中獲得的寶貴洞察,或許會對您在設計網站內容時有一些不同的想法!
Thumbnail
在今天的數字時代,網路不僅僅是資訊的來源,更是企業發展和個人品牌建立的關鍵所在。然而,無論你是管理自己的網站還是在數位行銷領域工作,若未能掌握搜索引擎優化(SEO)的精髓,你將面臨被淹沒在網路浪潮中的風險。 SEO不僅是提升網站排名的技術,更是通往持久流量和高質量訪客的大門。每一次的搜尋,背後都有
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
在現今數位時代,學習編寫引人入勝的META描述標籤成為網站優化的重要一環。透過SEO(搜尋引擎優化)技術,提升網站在搜尋引擎中的排名,而META描述標籤則是影響點擊率的關鍵元素。以下是有關如何編寫META描述標籤的一些建議。 首先,了解SEO的基礎原理是必要的。SEO公司和Google SEO教學
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
有時候回顧我部落格的文章,發現往往自己嘔心瀝血之作點閱數少的可憐... 反而隨意寫、在我眼中跟個版廢文沒兩樣的作品點閱率很高,一直感到很疑惑。我想知道怎樣的文章受讀者喜愛? 搜尋引擎又會推薦給讀者什麼樣子的文章?
Thumbnail
因為最近有在經營Youtube,也有看了一些教學,以及有些經營小心得
Thumbnail
在今日數位世界中,良好設計的網站已經成為必需品。 瞭解網站設計的重要性,特別是對於第一印象和信任度。 這篇文章提供了選擇網站設計服務的實用指南,包括網站設計的重要性,基礎知識和選擇服務提供者的提示。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
Thumbnail
近期 Google 搜尋引擎API機密文件的外流事件,絕對是近期震撼數位行銷世界的一大頭條,其內容揭示了一些有關 Google 搜尋結果生成原理的重要細節。今天本男爵就來跟各位聊聊這其中獲得的寶貴洞察,或許會對您在設計網站內容時有一些不同的想法!
Thumbnail
在今天的數字時代,網路不僅僅是資訊的來源,更是企業發展和個人品牌建立的關鍵所在。然而,無論你是管理自己的網站還是在數位行銷領域工作,若未能掌握搜索引擎優化(SEO)的精髓,你將面臨被淹沒在網路浪潮中的風險。 SEO不僅是提升網站排名的技術,更是通往持久流量和高質量訪客的大門。每一次的搜尋,背後都有
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
在現今數位時代,學習編寫引人入勝的META描述標籤成為網站優化的重要一環。透過SEO(搜尋引擎優化)技術,提升網站在搜尋引擎中的排名,而META描述標籤則是影響點擊率的關鍵元素。以下是有關如何編寫META描述標籤的一些建議。 首先,了解SEO的基礎原理是必要的。SEO公司和Google SEO教學