圖(關係網路)資料分析及阿里應用
摘要:2019年1月18日,由阿里巴巴MaxCompute開發者社群和阿里雲棲社群聯合主辦的“阿里雲棲開發者沙龍大資料技術專場”走近北京聯合大學,本次技術沙龍上,阿里巴巴資深技術專家錢正平為大家分享了大資料技術背景下圖資料的應用前景,以及阿里巴巴在圖資料的建模、查詢和系統優化等方面做出的初步探索。
以下內容根據演講視訊以及PPT整理而成。
一、什麼是圖資料?
下面的關係網路展示了一個點和邊構成的資料模型,點表示實體,邊表示兩個實體間的關係。關係網路極具靈活性,能夠在統一視圖裡展示異構資訊,其中的邊可能來自不同表。比如,下圖中的邊表示了兩個明星間的關係,可能由若干張表通過join操作形成。

如今,機器學習的資料分析pipeline可應用於各行各業各個門類的資料,來幫助企業更好地決策。圖資料的價值在於它能夠顯式地表達出資料間的複雜關聯結構,以輔助機器學習的資料分析過程,幫助機器學習演算法更好地挖掘出資料背後的結構特徵,提供更精準更可靠的決策支援。圖資料的這種能力對一些領域格外重要。

Google早期使用的搜尋演算法pageRank就利用了圖資料的這種能力,它利用網頁間的相互連結資訊來決定網頁的重要程度。具體來說,被越多網頁連結的網頁越重要,被越重要的網頁連結的網頁也越重要。Google利用圖資料重新定義了搜尋,取得了非常卓越的成功。

圖資料對阿里巴巴同樣意義重大。以阿里巴巴的應用生態為例,天貓包含了使用者的線上交易資訊,高德地圖包含了使用者的出行資訊,優酷土豆等包含了使用者的觀影資訊,以人為維度將這些資訊關聯起來可以得到關於某使用者的完整資訊,以理解使用者偏好。圖資料模型能夠將許多分散的圖場景整合起來,形成一個龐大的圖結構。阿里巴巴的圖結構包含幾十億個點,成百上千億條邊,同時阿里應用巨大的日交易量也使得圖結構千變萬化,這些都為圖資料的計算帶來了嚴峻的挑戰。

圖應用與具體場景相關,阿里巴巴針對不同的應用場景設計了不同的圖資料處理演算法。以一個很長的數字序列為例,對其進行資料分析的第一步是“看”,即觀察該序列可能存在的特徵,此外,可能使用特徵統計分析該序列包含某數字的個數。更進一步,模式匹配可以探尋該序列中可能存在的模式子串。最後,機器學習演算法比如神經網路能幫助挖掘數字序列背後的規律。對該序列進行資料分析能夠幫助線上預測相關資訊,比如數字序列的下一位數字等。圖資料分析方法能幫助洞察圖資料,阿里巴巴在圖資料方面的應用包括五類。

第一類是“看”,下圖展示了經敏感資訊處理後的阿里巴巴內部使用的視覺化平臺。真實環境中,商業問題可能存在多方面因素,研判業務問題非常困難。將圖結構應用於視覺化平臺能夠整合多維度資料,動態地將多維度資料關聯起來,以幫助使用者更好地決策。

第二類圖資料應用是圖演算法。比如,pageRank演算法利用圖結構計算每個節點的權重值、連通分支等。連通分支可用於計算具有不同ID的實體,比如手機號、e-mail以及瀏覽器cookie等是否同屬於一個自然人,從而提高企業的廣告投放準確率。舉例來說,淘寶使用者使用瀏覽器購買商品後,瀏覽器將記錄使用者的cookie,下一次使用者瀏覽新浪時,新浪可以根據該cookie獲取使用者的淘寶ID,從而獲取使用者的偏好以投放相關廣告。連通分支將使用者在不同應用的相關資訊關聯起來,從而更好地瞭解使用者偏好,實現個性化應用。

第三類圖資料應用是模式,比如基於子圖模式的異常檢測。圖結構將不同表資料關聯起來,從而暴露出日誌資訊無法表露出來的問題。比如,左圖揭示了各個使用者轉賬行為間的關聯,第二幅圖揭示了三個使用者與四個商品間頻繁的交易模式,這些資訊僅依賴系統文字檔案中的日誌都無法獲得。據報道,僅有百分之一的安全漏洞問題能通過日誌分析檢測出來,日誌的單規則資訊是不全面的,利用圖結構資訊關聯不同資料非常必要。左圖展示了簡單的淘寶刷單模式,刷單人為商家刷單後,商家通過支付寶即時支付刷單費用,形成了圖結構中的“環”,阿里巴巴通過檢測“環”以檢測簡單的刷單行為。提供刷單服務的公司,大多運營大量的虛假賬號來滿足刷單請求,每個虛假賬號可能同時為多個商品提供刷單服務。阿里巴巴使用圖結構來表示使用者與商品間的購買行為,k1個使用者在一定較短時間內與v2個商品發生完全購買的行為,意味著k1個使用者中可能存在大量虛假賬號。圖結構增強了系統對使用者行為的捕捉能力。

第四類圖資料應用是機器學習,比如利用基於圖的機器學習應用實現淘寶推薦。為了計算某個使用者對某個商品的興趣度,阿里巴巴利用商品的重要屬性比如標籤等計算商品間的相似度,同時對使用者的重要屬性建模。也就是說,通過使用者對相似商品的感興趣程度預測使用者對當前商品的興趣度,從而實現商品推薦。這些資訊無法單純依賴某張表得到。比如,某使用者喜歡夏季羽絨服,同時喜歡某品牌,單純依賴表資訊的商品推薦不會給該使用者推薦相關品牌的冬季羽絨服,而連線了兩方面資訊的圖結構則可能推薦該商品,提高了商品推薦的準確度。圖結構資訊還有利於解決冷啟動及結果可解釋性等難題。

第五類圖資料應用是知識圖譜,比如基於知識圖譜實現線上推理,提供線上智慧服務。左邊的例子展示了雙11期間淘寶的湊單應用,即為使用者推薦湊單商品以幫助使用者獲得滿減折扣。阿里巴巴利用商品相似性圖,能夠方便地計算商品A的所有相似商品,從而實現相似商品推薦。當然,相似商品往往具有相同功能,而已經購買了某商品的使用者很可能不願意重複購買類似商品。因此,阿里巴巴又引入了隨機遊走機制,通過在商品相似圖中以一定概率隨機遊走來選擇推薦商品,平衡商品的相似性和多樣性。應用圖結構構建知識圖譜的另一個例子是天貓精靈。天貓精靈通過構建多種型別的知識圖譜來回答使用者提出的各種問題,比如娛樂圖譜能夠展示電影的導演、演員,以及他們的其他電影作品等資訊。“李未央”是某電視劇的角色名,假設使用者提問“李未央還演了什麼電影”,天貓精靈將通過分詞得到“李未央”,知識圖譜演算法允許從“李未央”出發探究相關演員,從而進一步探究相關電影,這是普通的問答系統無法做到的。相比谷歌、微軟等公司基於網際網路資料構建知識圖譜,阿里巴巴利用自身結構化資料來源的高資料質量優點,能夠構建出更優質的圖譜以實現線上推理。

二、大資料系統趨勢與挑戰
早期,大資料技術採用IOE模式,依賴單點執行的Oracle機器等高成本硬體。2009年,MaxCompute使用更低成本的機器叢集來解決相同規模的計算問題,提高軟體的容災能力。2012年,實時風控、大屏、視訊分析等應用向大資料技術提出了更高的計算時延要求。如今,更豐富的資料使用場景需求使得機器學習與異構資訊網路圖技術比如關聯分析、MaxGraph等得到了發展。不斷演化的需求加速了大資料技術的發展。

關聯分析背後的邏輯架構依賴於一個從一系列資料來源構建得到的圖模型(Graph model),資料科學家基於該圖模型完成離線的資料探勘任務,業務操作員基於該圖模型實現線上推理、提供線上服務,此外,該圖模型還根據系統事件實時更新。總的來說,關聯分析需要滿足多維度的需求。

下圖展示了基於圖結構的開源解決方案。第一幅圖展示了圖的遍歷,用於查詢圖中各項內容。第二幅圖展示了圖演算法,包括pageRank等。第三幅圖展示了模式匹配,第四幅圖展示了機器學習。圖結構解決方案的開源化追求可擴充套件性,以處理大規模資料計算任務。

構建圖應用要求組合多個系統的能力,比如圖資料的儲存、離線計算引擎以及線上計算伺服器等,構建複雜度和運維難度都極高。

MaxGraph產品通過實時或離線方式構建關係資料並存儲為圖結構,從而利用統一的分散式“瞬時計算”引擎來支援辨別、計算、匹配與機器學習等功能。基於MaxGraph提供的功能,一些上層圖應用以及智慧應用包括關係網路分析等才得以實現。

三、圖建模與儲存
下圖展示了一個圖模型,由點和邊構成,並且允許點和邊都攜帶屬性。

圖建模時需要關注資料間的關聯。以“電子郵件通訊中的異常檢測系統”為例,該系統要求在若干個相互發送e-mail的使用者行為中檢測風險。最直觀的圖建模方式是將使用者建模成圖的點,使用者間相互發送的e-mail建模成圖的邊,但這樣建模的問題在於圖模型中沒有體現e-mail這個實體,無法表達“使用者自己給自己傳送e-mail”等行為。

正確的圖建模方式應是將e-mail建模成圖的點,同時實現e-mail與該e-mail傳送者、收件人間的關聯。在表達“使用者自己給自己傳送e-mail”時,將e-mail建模成一點,該點關聯的傳送者和收件人都指向相同使用者。好的建模方式能夠在系統規模、問題複雜性提升的情況下依然很好地捕獲所有關鍵資訊,滿足使用者需求。

使用這樣的建模方式來表達“對回覆郵件的回覆”行為時,“回覆郵件”與“回覆郵件的回覆”都是e-mail,都應該被建模為圖的點,“回覆郵件”與相關的“回覆郵件的回覆”存在回覆與被回覆關係,應建模為邊。判斷圖建模合理與否的關鍵在於判斷圖模型能否表達相關需求,比如,本示例中的圖模型能否表達“熱烈的郵件討論”行為等。
阿里巴巴採用分散式圖儲存來儲存圖模型的相關資料。

四、圖查詢語言簡介
尋找具有某特點的“點集合”或者“邊集合”是圖資料查詢的常見應用。圖查詢語言“Gremlin”可用於遍歷圖,尋找相關“點集合”或“邊集合”,並基於獲得的集合進行“groupby”等操作來構造最終查詢結果。





阿里巴巴優化了圖查詢語言,使得系統可以快速地實現複雜資料結構的查詢。最新的競品分析顯示,“Gremlin”圖查詢語言具有資料載入快、可擴充套件與低延遲德等優點。

五、全圖計算與分析-高層語言
除了圖查詢,全圖計算與分析也是圖應用的難點,阿里巴巴提供了類似SQL的抽象語言FLASH來降低全圖計算的難度。


阿里巴巴的抽象語言FLASH引入了迴圈語句,具有比SQL更強大的表達能力,將FLASH應用於連通分支演算法,僅需幾行程式碼就可以實現該演算法功能。


相比之下,使用C++語言實現連通分支演算法所需要的程式碼量更大。

下圖展示了目前已驗證的FLASH抽象語言可表達的所有演算法。

另外,阿里還使用Flink評估了FLASH語言的表達能力。左表第二列是使用Gelly語言實現相關演算法使用的程式碼行數,第三列是使用FLASH語言實現相同演算法所用的程式碼行數。總的來說,FLASH語言實現相同演算法所需要的程式碼行數僅為Gelly語言的1/10甚至1/20,但兩種實現語言帶來的系統開銷是幾乎一致的。

六、場景示例
阿里雲網絡安全引入圖結構以構建知識圖譜,包括域名、主機IP、域名伺服器等資訊。引入圖結構有利於在海量資訊中及時發現網路中的隱藏模式,從而發現漏洞和威脅。相關實驗顯示,將海量資料預先構建成圖再實時查詢僅需500毫秒,相反,不預先將海量資料構建成圖而採用SQL查詢所需的時間高達80分鐘,圖結構能為查詢帶來數量級的效能提升,從而給業務帶來質的變化。
圖技術在美國同樣引起了廣泛關注。最新資料顯示,76%的FORTUNE 100語言都採用了圖技術,排名前25的金融企業中有20家都利用圖技術呈現交易資訊。

總的來說,圖計算是大資料計算的有效工具,圖資料能夠提供更精準、更可靠的資訊,以增強大資料分析能力,圖計算將變得越來越重要。成功的圖應用離不開建模、查詢和系統優化等多個方面,大規模的動態圖計算還存在許多問題尚未解決,未來阿里巴巴將致力於在這些方面做出貢獻,為圖應用開發者們帶來福音。阿里巴巴發展圖計算依賴於“橫向”和“縱向”兩個方面的合作,一方面,“橫向”需要和阿里巴巴內部的硬體、網路等團隊合作,以利用現有技術優化圖計算的效能,從而給業務帶來質的突破。另一方面,“縱向”需要和行業內領域專家緊密合作,利用圖結構解決企業真實問題,使技術為業務賦能、創造更多價值。

歡迎加入MaxCompute開發者社群釘釘群,一起交流大資料技術。
