什麼是圖計算

1.簡單介紹

“圖計算”是以“圖論”為基礎的對現實世界的一種“圖”結構的抽象表達,以及在這種數據結構上的計算模式。通常,在圖計算中,基本的數據結構表達就是:

G = (V,E,D) V = vertex (頂點或者節點) E = edge (邊) D = data (權重)。比如說:對於一個消費者的原始購買行為,有兩類節點:用戶和產品,邊就是購買行為,權重是邊上的一個數據結構,可以是購買次數和最後購買時間。對於許多我們面臨的物理世界的數據問題,都可以利用圖結構的來抽象表達:比如社交網絡,網頁鏈接關係,用戶傳播網絡,用戶網絡點擊、瀏覽和購買行為,甚至消費者評論內容,內容分類標籤,產品分類標籤等等。

圖數據結構很好的表達了數據之間的關聯性( dependencies between data ),關聯性計算是大數據計算的核心——通過獲得數據的關聯性,可以從噪音很多的海量數據中抽取有用的信息。比如,通過為購物者之間的關係建模,就能很快找到口味相似的用戶,併為之推薦商品;或者在社交網絡中,通過傳播關係發現意見領袖。但現有的並行計算框架像MapReduce還無法滿足複雜的關聯性計算。比如,筆者曾經發現有公司利用MapReduce進行社交用戶推薦,對於5000萬註冊用戶,50億關係對,利用10臺機器的集群,需要超過10個小時的計算。

最近有許多新型的基於圖的計算平臺和引擎出現,來應對這種複雜的需求。比如開始有專注與圖結構化存儲與查詢的圖數據庫 Neo4j,infinitegraph等。Google為了應對圖計算的需求,推出了新的“計算框架”——Pregel。CMU給出了一個開源的版本——GraphLab,雖然二者都是對於複雜機器學習計算的處理框架,用於迭代型(iteration)計算,但是二者的實現方法卻採取了不同的路徑——Pregel是基於大塊的消息傳遞機制,GraphLab是基於內存共享機制。同樣的,最近非常火的“Spark”也有支持圖計算機器學習的模塊——GraphX,可以實現複雜的圖數據挖掘。

2.圖結構

1 圖的定義

圖是由頂點的有窮非空集合和頂點之間邊的集合組成,通過表示為G(V,E),其中,G標示一個圖,V是圖G中頂點的集合,E是圖G中邊的集合。

無向圖:若頂點Vi到Vj之間的邊沒有方向,則稱這條邊為無向邊(Edge),用序偶對(Vi,Vj)標示。

對於下圖無向圖G1來說,G1=(V1, {E1}),其中頂點集合V1={A,B,C,D};邊集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}:

什麼是圖計算

有向圖:若從頂點Vi到Vj的邊是有方向的,則成這條邊為有向邊,也稱為弧(Arc)。用有序對(Vi,Vj)標示,Vi稱為弧尾,Vj稱為弧頭。如果任意兩條邊之間都是有向的,則稱該圖為有向圖。

有向圖G2中,G2=(V2,{E2}),頂點集合(A,B,C,D),弧集合E2={

權(Weight):有些圖的邊和弧有相關的數,這個數叫做權(Weight)。這些帶權的圖通常稱為網(Network)。

什麼是圖計算


分享到:


相關文章: