全部產品
Search
文件中心

Graph Compute:圖演算法

更新時間:Jun 30, 2024

圖計算服務GraphCompute新增圖演算法分析功能,提供分析查詢一體化解決方案,方便使用者快速進行全圖資料分析。

功能介紹

圖計算服務GraphCompute新增圖演算法功能,基於當前服務的資料進行演算法執行,方便使用者快速進行全圖資料的分析。只需要開通圖計算服務執行個體,即可同時擁有高效能圖資料的查詢分析一體化引擎。相比業界方案,圖計算服務方案更便捷,無需額外自營運資料鏈路,讓資料流轉更高效。

image.png

本期重點開放3個核心圖演算法,其他經典圖演算法持續開放中。

演算法介紹

1)中心性演算法 PageRank

PageRank演算法是計算網頁排名的經典演算法。輸入是一個有向圖G,其中頂點表示網頁。如果存在網頁A到網頁B的連結,則存在串連A到B的邊。

演算法的基本原理如下:

  • 初始化:點值表示PageRank的rank值(DOUBLE類型)。初始時,所有點取值為1/TotalNumVertices

  • 迭代公式:PageRank(i)=0.15/TotalNumVertices+0.85*sum。其中sum為所有指向i點的點(設為j)PageRank(j)/out_degree(j)的累加值。

2) 社區發現 Weakly Connected Components

弱連通分量(WCC)演算法在有向圖和無向圖中尋找連通節點集。如果兩個節點之間存在路徑,則表示兩個節點已串連。相互串連的所有節點的集合形成一個組件。與強串連組件(SCC)相反,不考慮兩個節點之間路徑上的關係方向。例如,在有向圖(a)→(b)中,即使沒有向關係(b)→(a), a和b也會在同一個分量中。

本演算法計算每個點的連通分量成員,最後輸出頂點值中包含最小頂點ID的連通分量。將最小頂點ID沿著邊傳播到連通分量的所有頂點。

3)路徑尋找 Single Source Shortest Path(Unweighted、Weighted)

單源最短距離是指給定圖中一個源點,計算源點到其它所有節點的最短距離。Dijkstra演算法是求解有向圖中單源最短距離SSSP(Single Source Shortest Path)的經典演算法。

Dijkstra演算法是通過去更新最短距離值,每個維護到源點的當前最短距離值,當這個值發生變化時,將新值加上權值,發送訊息通知其鄰接點。下一輪迭代時,鄰接點根據收到的訊息,更新其當前最短距離值,當所有的當前最短距離值不再變化時,迭代結束。

  • 初始化:源點s到s自身的距離為0(d[s]=0),其他點u到s的距離為無窮(d[u]=∞)。

  • 迭代:如果存在一條從u到v的邊,則從s到v的最短距離更新為d[v]=min(d[v], d[u]+weight(u, v)),直到所有的點到s的距離不再發生變化時,迭代結束。

操作指南

準備工作

在進行全圖分析之前,我們需要建立圖計算執行個體和建立圖配置,並完成圖資料的大量匯入或者API資料寫入。

1)建立圖計算服務執行個體,點擊連結進行執行個體開通,早起測試階段可選用【獨享分析型】規格進行功能驗證。

2)建立圖配置,可參考最佳實務基於GraphCompute快速搭建好友推薦圖應用進行業務資料和配置接入。

圖演算法配置

準備工作完成後可進行圖演算法任務配置,下面將基於好友關係的來源資料進行最短路徑、聯通子圖、PageRank三個演算法的驗證和配置解釋。進入【執行個體詳情】-【圖演算法】-【演算法分析】頁面建立和編輯演算法配置,如需周期調度任務,可通過定時配置進行按天調度。

1)最短路徑

確定邊集選擇,選中圖中已關閉【索引最佳化】的邊表可進行演算法分析。支援選擇多條邊,對於部分可以用到邊的權重欄位的演算法,可以選擇邊的權重欄位,比如單源最短距離時可以用邊的score欄位表示邊的長度,如果不選擇權重欄位,則邊的長度預設為1

單源最短距離,需要填寫的擴充參數為sourceIdLabel和sourceIdValue,分別表示演算法需要的啟動初始點的表中的欄位名和對應的值。

image.png

2)聯通子圖

只需要進行邊集選擇,選中圖中已關閉【索引最佳化】的邊表可進行演算法分析;無需額外配置權重欄位。

image.png

3)PageRank

確定邊集選擇,選中圖中已關閉【索引最佳化】的邊表可進行演算法分析;

PageRank演算法,需要填寫的擴充參數為maxIteration,表示PageRank演算法的最大迭代輪數

image.png

4)任務運行

點擊圖演算法配置的"運行"按鈕,彈窗提示計費之後點擊確認即可運行,任務運行記錄可以點擊配置的“歷史任務“進行查看;當前產品功能屬於公測期間,暫不額外收費。

5)結果產出

點擊“儲存配置”成功建立圖演算法配置之後,會在圖中自動建立出一個新的點,點的名稱為填寫的表格最下方的匯出結果,後續運行圖演算法任務成功之後,任務結果會自動迴流到該結果點,迴流完成之後即可線上查詢

查詢分析結果

1)最短路徑

該演算法結果點為KV類型,distance欄位表示源點到該點的最短距離,當該值為Long.MaxValue(2^63-1)時表示不存在源點到該點之間的路徑,可根據ID查詢點:g("user_relation_graph").V("user#-9222864281912809073").hasLabel("sssp_1011_new_result")

2)聯通子圖

該演算法結果點為倒排類型,componentId欄位表示聯通子圖ID:

可根據ID查詢點:g("user_relation_graph").V("user#-1328036738095129493").hasLabel("填寫結果配置的表名")

使用倒排查詢的文法查詢指定componentId下面的所有點:g("user_relation_graph").V().hasLabel("填寫結果配置的表名").indexQuery("{\"match\":{\"component_id\":\"user#-1000713713241257875\"}}")

3)PageRank

該演算法對應的結果點為KV類型,score欄位表示pagerank分數,可根據ID查詢點:g("user_relation_graph").V("user#-9222864281912809073").hasLabel("填寫結果配置的表名")

應用情境

1)PageRank – 提高搜尋覆蓋率

訴求:搜尋是服務平台中重要的一環,通過深化服務搜尋能力,讓使用者可以直接搜尋到服務內部的子服務,實現功能直達;在提升搜尋整體體驗的同時也為各行業帶來更多轉化價值。

問題:長尾關鍵詞搜尋結果少或無結果,純文字匹配無結果。

方案:升級為圖演算法PageRank,引入更豐富的item資訊和使用者點擊行為等資訊,提升召回的多樣性。

效果:全域搜尋PVCTR提升2%以上(推薦結果點擊數/推薦結果曝光數),全域搜尋無結果率累計下降20%以上。

2)Weakly Connected Components - 帳號融合

訴求:同一個人可能會註冊多個電商帳號,通過非正常手段擷取利益。

方案:使用預設的規則建立帳號間的強聯絡,比如使用同一個電話的帳號極大可能屬於同一個人

演算法:強\弱連通分量演算法

成效:取代原先的GraphX、spark系統,時間效率可提升10倍以上

擴充:實體合并(挖掘或識別利益共同體、同一對象),如同名戶、集團客戶等等,都可進行彙總。

計費規則

當前圖演算法功能處於公測期,可免費使用。後續正式上線後將根據資料量級進行資源評估,按照演算法消耗的資源情況進行隨用隨付。