1. 程式人生 > >流式計算形態下的大數據分析

流式計算形態下的大數據分析

信息 電子商務 新特性 少量數據 這一 mapreduce 適用於 right 日常

1 介 紹

1.1 流式計算介紹

流式大數據計算主要有以下特征:

1)實時性。流式大數據不僅是實時產生的,也是要求實時給出反饋結果。系統要有快速響應能力,在短時間內體現出數據的價值,超過有效時間後數據的價值就會迅速降低。

2)突發性。數據的流入速率和順序並不確定,甚至會有較大的差異。這要求系統要有較高的吞吐量,能快速處理大數據流量。

3)易失性。由於數據量的巨大和其價值隨時間推移的降低,大部分數據並不會持久保存下來,而是在到達後就立刻被使用並丟棄。系統對這些數據有且僅有一次計算機會。

4)無限性。數據會持續不斷產生並流入系統。在實際的應用場景中,暫停服務來更新大數據分析系統是不可行的,系統要能夠持久、穩定地運行下去,並隨時進行自我更新,以便適應分析需求。

1.2 應用場景介紹

互聯網領域就是很好的流式大數據應用場景。該領域在日常運營中會產生大量數據,包括系統自動生成的用戶、行為、日誌等信息,也包括用戶所實時分享的各類數據。互聯網行業的數據量不僅巨大,其中半結構化和非結構化所呈現的數據也更多。由於互聯網行業對系統響應時間的高要求,這些數據往往需要實時的分析和計算,以便及時為用戶提供更理想的服務。

流式計算在互聯網大數據中的典型應用場景如下:

1)社交網站。在社交網站中,要對用戶信息進行實時分析,一方面將用戶所發布的信息推送出去,另一方面也要為用戶及時發現和推薦其感興趣的內容,及時發現和防止欺詐行為,增進用戶使用體驗。

2)搜索引擎。搜素引擎除了向用戶反饋搜索結果以外,還要考慮和計算用戶的搜索歷史,發掘用戶感興趣的內容和偏好,為用戶推送推廣信息。

3)電子商務。電子商務側重於大數據技術中的用戶偏好分析和關聯分析,以便有針對性地向用戶推薦商品。同時,隨著大量電子商務開始內嵌互聯網消費金融服務,對用戶的風險分析和預警也是非常重要的。

可以預見,隨著技術的不斷發展、互聯網與物聯網等領域的不斷深入連接,未來要分析的數據量必然還會爆炸性增長。傳統的批量計算方式並不適合這類對響應時間要求很高的場景,能持續運行、快速響應的流式計算方法,才能解決這一方面的需求。

1.3 隨機森林方法介紹

隨機森林是目前海量數據處理中應用最廣的分類器之一,在響應速度、數據處理能力上都有出色表現[10, 13]。隨機森林是決策樹{h(x,θk),k=1,…}的集合H

,其中h(x,θk)是元分類器,是用CART算法生成的1棵沒有剪枝的回歸分類樹;x為輸入向量,{θk }是獨立而且同分布隨機向量,決定每一棵決策樹的生長過程。

每個元分類器hH,都等價於從輸入空間X到輸出類集Y的映射函數。對輸入空間X中的每一條輸入xih都可以得到h(xi)=yiyi為分類器h給出的決策結果。

定義決策函數D,則分類器集合H對輸入xi所得到的最終結果y就可以定義如下:

技術分享圖片

在隨機森林中,單棵樹的生長過程如下:

1)針對原始訓練集,使用Bagging方法在原始樣本集S中進行有放回的隨機數據選取,形成有區別的訓練集Tset

2)采用抽樣的方式選取特征。假設數據集一共有N個特征,選擇其中M個特征,M≤N。每個抽取出來的訓練集,使用隨機選取的M個特征來進行節點分裂。

3)所有生成的決策樹自由生長,不進行剪枝。每一棵決策樹的輸出結果之間可采用簡單的多數投票法(針對分類問題)或者結果平均法(針對回歸問題)組合成最終的輸出結果。

隨機森林方法是組合分類器算法的一種,是決策樹的組合。它擁有Bagging和隨機特征選擇這2種方法的優點。在大數據環境下,隨機森林方法還有以下優點:

① 隨機森林方法可以處理大數據量,能夠應對突發性數據;

② 隨機森林方法生成較為簡單的決策樹,易於解讀;

③ 隨機森林方法適用於分布式和並行環境,擴展性好,適用於對分布式架構有很高要求的流式大數據處理環境;

4)決策樹分類器非常簡單,能以極高效率對新數據進行處理,適用於流式大數據環境下對響應速度要求高的特點;

在流式大數據環境下,隨機森林方法也存在一些問題,其中最核心的問題,就是流式大數據環境中數據具有實時性和易失性的特點,經典隨機森林方法難以適應。以訓練集數據為基礎所生成的決策樹會過期,對新數據進行分類的準確度下降。

2 流式大數據環境下的算法改進2.1 方法改進思路

以往對隨機森林方法的改進主要集中在幾個方面:

將隨機森林與Hadoop、MapReduce等計算框架結合,實現分布式隨機森林方法,提高算法的處理效率。

對數據進行預處理,降低數據集的不平衡性,以此提升算法在非平衡性數據集上的準確度和分類性能。

針對標準隨機森林方法采用C4.5作為節點分裂算法的情況,用效率更高的節點分裂算法如CHI2來替換C4.5,可以提高算法處理大數據集的能力。

基於分類器相似性度量和分類間隔概念,對冗余的分類器進行修剪,以取得更好的分類效果與更小的森林規模。

這幾種改進方法可以有效地在特定環境下提高隨機森林算法的表現,但都不能完全滿足流式大數據環境對算法的要求。鑒於流式大數據算法需求所表現出來的鮮明特征,從流式大數據的特征出發,對經典的隨機森林方法進行改造,思路如下:

1)使用隨機森林方法實時處理數據,由於隨機森林是一種比較簡單的分類器,對數據的響應時間可以得到保障,能夠滿足實時性要求。

2)僅對一段時間內的數據進行存儲,在內存可用的條件下處理少量數據,這樣就可以解決流式大數據的易失性和無限性特點。

3)由於數據的無序性,經典隨機森林所產生的分類器無法滿足所有的輸入數據,必須令分類器能夠隨著新數據的輸入不斷更新,保持對數據的敏感性和準確度。因為數據的易失性,所以分類器的更新就必須基於算法所臨時保存的有限訓練數據進行。

4)分類器更新方法必須是可伸縮的、高效的,不能影響到分類器對數據的正常處理。

2.2 改進後的隨機森林方法

首先定義隨機森林中決策樹h的準確度(accurate)Ah

技術分享圖片

式中,nr是決策樹h給出正確結果的次數,n是決策樹h所處理過的所有數據數量。準確度給出了在一定時間內某棵樹給出正確結果的比例。

在回歸問題中,決策樹h給出的分類結果如與最終結果一致,則認為該決策樹得出了正確結果。計算決策樹h給出結果xi與最終結果之間的差值,並取其標準差作為h的準確度:

技術分享圖片

準確度衡量一棵樹在一段時間內判定結果的準確程度。算法在執行過程中跟蹤每棵樹的準確度,並定期對隨機森林進行更新,淘汰其中準確度最低的樹:

1)按照標準的隨機森林方法構造決策樹群H

2)為每一棵決策樹hhH建立1張記錄表Th,記錄隨機森林在處理數據過程中生成的結果。

3)一段時間後,對所有決策樹的結果記錄表進行掃描,刪除其中準確度最低的樹。

通過準確度進行篩選後,森林中樹的數量會越來越少,實現決策樹集的剪枝。但數量的過分減少,也會造成整個決策樹集在準確度上的降低[11]

為了保持一定數量的決策樹,在剪枝的同時,也要對數據集進行跟蹤,生成新的決策樹來保持整個森林的質量。為了從數據集中篩選出對生成新的決策樹更有用的樣本,引入間隔(margin)定義如下: 間隔指隨機森林在1條給定樣本數據(x,y)上的整體決策正確度,定義為:

技術分享圖片

式中,avk( )是一個求均值函數,I( )是一個度量函數。如果在隨機森林中大部分決策樹對樣本(x,y)得到正確結果,則margin(x,y)大於零。如果margin(x,y)小於零或某一閾值,則說明該樣本被大部分決策樹識別失誤,算法對該樣本得出了錯誤結論。

margin(x,y)大於零的樣本,說明決策樹集可以得到正確結果。與已有的決策樹相似度高的樹並不會提高整個森林的準確度,此類樣本不需要再次處理。為了讓新生成的決策樹能夠提高整個森林的準確度,記錄margin(x,y)小於等於零的樣本,形成新的訓練數據集S′。數據集S′的特點,是只占當前數據集S中的一小部分,但其數據特征與其他數據不同。

在數據集S′上使用隨機森林方法,獲得一個新的決策樹集合{h′(x,θk),k=1,…}。數據集S′只代表了全部數據集中的一部分數據,在S′中篩選一定比例的決策樹,加入原來的決策樹集合中。

根據S′S之間的比例確定要篩選出的決策樹數量:

技術分享圖片

篩選方法可以有以下幾種:

S′篩選法:利用S′進行檢驗,並按照準確度對所有決策樹排序,選擇其中準確度最高的Nnew棵決策樹。

S篩選法:利用全部數據集S進行檢驗,並按準確度對所有決策樹排序,選擇準確度最高的Nnew棵樹。

Margin篩選法:計算每棵樹在數據集S′上的margin均值與margin方差之比[18],作為每一棵決策樹的重要性衡量指標,選擇最重要的Nnew棵樹。

改進後的隨機森林方法流程如圖 1所示。

技術分享圖片

圖 1 改進後隨機森林方法流程圖
圖選項

① 使用初始訓練數據集S生成最初的隨機森林H

② 使用隨機森林H對當前待處理的數據集Si進行分類:

a) 用隨機森林中的每一棵樹hjSi中的每一條數據xj進行分類;

b) 記錄每一棵樹和每一條數據的分類結果,同時計算該條數據分類結果的間隔值margin(xj,y);

c) 如果margin(xj,y)小於給定閾值,則將xj加入新訓練數據集S′

Si分類完畢後,計算每棵樹的準確度,並進行剪枝;

④ 在新訓練數據集S′上執行隨機森林方法,生成新的隨機森林H′

⑤ 對新的隨機森林進行剪枝,將剪枝後的H′H合並,形成新的隨機森林H

⑥ 清空訓練數據集S′,開始處理下一批數據。

2.3 新隨機森林方法的優點

新的隨機森林方法有著以下優點:

1)新方法每次所處理的數據集是有限的,在實際應用中,可以根據內存大小設計每次處理的數據集大小,保證數據的實時計算和計算效率;

2)新方法中,需要存儲的只有結果記錄表和新訓練數據集,相比原始數據流小了很多,滿足流式大數據的易失性特點,在大數據量下的伸縮性更好;

3)對新數據的處理只需要使用隨機森林進行驗證和投票,執行效率高,能夠實時反饋數據的處理結果;

4)該系統可以持續地更新運行下去,並能夠不斷使用數據的新特性來更新自身,滿足流式大數據環境的無序性和無限性特點。

流式計算形態下的大數據分析