天天看點

如何利用“圖計算”實作大規模實時預測分析

一、何為“圖計算”

相比起“hadoop、spark”這種流行的大資料處理平台,說起“圖計算”,可能許多人還比較陌生。甚至有人會誤把它當成專門進行“圖像”處理的技術。 首先我們網際網路上通常的定義來說明一下圖計算:

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

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,可以實作複雜的圖資料挖掘。

二、業務挑戰

時趣socialtouch是資料驅動的移動營銷解決方案提供商。所涉及的客戶資料源涵蓋了自媒體行為,關系,内容。企業内部營銷,銷售,售後資料,以及其他第三方和廣告投放資料。資料來源結構複雜。資料的應用類型也比較多樣化,主要包括:消費者畫像,互動式消費者洞察分析,潛在消費群體挖掘,個性化内容等等。是以,從業務出發面臨許多現實的技術挑戰:

1、大資料量:socialtouch提供的是saas 模式的資料管理平台,那麼對于不同的應用,可能會用到不同的算法政策。而一家客戶的資料平均都在100t以上,同時還在持續增加。如何利用不同的算法政策在同樣的資料結構之上進行計算,而不是為了使用不同的算法需要修改和遷移海量的資料。需要我們采取一緻性的資料結構。

2、動态變化:營銷的核心是研究“人”,而對人的描述的主要資料是行為資料。socialtouch通常會根據客戶的需求,持續采集消費者的行為資料。而使用者行為往往是實時動态發生,是以需要資料與模型也能夠實時更新。

3、實時性:對于資料分析人員來說,往往許多分析的次元不是事先預定的,需求總是不斷在變化。能夠進行互動式的資料的鑽取,無疑有助于更好的發現營銷“真相”。是以,對于大資料量的實時計算就成為了一個挑戰。同時,基于消費者個體畫像和目前的“上下文”觸發的個性化營銷也是移動營銷的主流需求。是以,這就需要伺服器端在毫秒級别内給出個性化的預測結果。目前針對複雜機器學習的“圖計算”雖然可以支援“批處理”模式的疊代計算,比如著名的pagerank模型。但對于實時分析和預測,并不是最好的解決方法。

4、關聯性:對于營銷來說“預測性”分析不僅僅是發現營銷的好壞,更重要的是發現為何好,以進行優化。比如“歸因分析”和“相似人群”等預測性模型,都需要關聯計算的支援。而且,這種關聯性計算也對實時性有一定的要求。雖然一些圖資料庫可以支援圖資料結構的讀取通路,但對于大資料量的關聯計算支援較差。

三、crowdgraph——從業務出發的選擇

為了應對以上業務需求。socialtouch從建構大資料架構開始,就啟動研發了專利技術——crowdgraph,專業應對消費者行為資料處理的實時圖計算引擎。并成功應用于socialtouch bi,社會化聆聽,資料管理平台等産品中。下圖給出了crowdgraph的邏輯架構:

如何利用“圖計算”實作大規模實時預測分析

整體架構從邏輯上劃分為4層, 分别為應用服務層,計算查詢層,索引管理層和索引層。應用服務層提供穩定高效的網絡服務和相關的query解析,查詢計算層負責 查找、篩選、分組過濾、遊走等算法。索引管理層主要負責索引段的管理和适配,保證索引的靈活使用。索引分為vertex和edge兩種類型,vertex、edge的屬性支援scheme定義,索引建立支援采用hadoop離線完成。 整體上索引和算法是核心。

如何利用“圖計算”實作大規模實時預測分析

以微網誌使用者的影響力标簽計算為例子,隻需要簡單的三步:

第一步:使用者以等邊上機率遊走到粉絲,根據粉絲屬性值計算此步遊走的權重。

第二步:粉絲以等邊機率遊走到标簽,根據标簽的屬性值計算此步的權重。

第三步:對相同相同标簽所在的路徑的權值累加後,對候選标簽進行排序、過濾。

在實踐應用中,growdgraph主要用于存儲各種對象(使用者,資訊(商品頁面,廣告頁面)之間的互動關系,經過測試,它具有以下特點:

高性能與實時:由于本身就是專為挖掘關系設計的資料系統, crowdgraph預先建立和存儲了對象關系資料,同時考慮了塊讀取和記憶體加速,是以與關系型資料庫相比,具有更高的查詢性能和無法比拟的計算性能,比如計算超過百萬潛在的消費者的屬性分布,隻需要秒級傳回結果,是傳統資料庫查詢的60—1200倍。

靈活性:與傳統bi系統和資料倉庫相比,由于crowdgraph不必預先設計表格的結構,是以可以動态的插入任意關系類型,非常适合存儲動态變化的資訊(如人的行為)。

抽象性: crowdgraph高度抽象了各種關系,不必定義結構,就可以可以很好的表達人的行為,屬性,社會活動,廣告點選,内容浏覽和商品交易等各種抽象關系。

精準性:與其他開源的圖資料庫不同, crowdgraph中間包括了相關算法架構層,可以直接支援實時聚類,歸因分析,貝葉斯網絡等模型。同時避免直接通路抽象的資料,可以提供面向業務邏輯的精準預測服務。

四、結束語

圖是一種抽象人類行為的方法,就像一句諺語所說“知道的越多,未知的就更多。對人類的行為的分析不是一個簡單的“分類”問題,而是一種機率預測和排序問題。圖計算的應用才剛剛開始,随着大資料研究和應用的發展,我們相信更多的支援“圖計算”的系統會被大量使用。如果你有興趣參與其中,希望和我們一起探讨。

原文釋出時間為:2015-09-22

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号