流式計算形態下的大數據分析
1 介 紹
1.1 流式計算介紹
流式大數據計算主要有以下特征:
1)實時性。流式大數據不僅是實時產生的,也是要求實時給出反饋結果。系統要有快速響應能力,在短時間內體現出數據的價值,超過有效時間後數據的價值就會迅速降低。
2)突發性。數據的流入速率和順序並不確定,甚至會有較大的差異。這要求系統要有較高的吞吐量,能快速處理大數據流量。
3)易失性。由於數據量的巨大和其價值隨時間推移的降低,大部分數據並不會持久保存下來,而是在到達後就立刻被使用並丟棄。系統對這些數據有且僅有一次計算機會。
4)無限性。數據會持續不斷產生並流入系統。在實際的應用場景中,暫停服務來更新大數據分析系統是不可行的,系統要能夠持久、穩定地運行下去,並隨時進行自我更新,以便適應分析需求。
1.2 應用場景介紹
互聯網領域就是很好的流式大數據應用場景。該領域在日常運營中會產生大量數據,包括系統自動生成的用戶、行為、日誌等信息,也包括用戶所實時分享的各類數據。互聯網行業的數據量不僅巨大,其中半結構化和非結構化所呈現的數據也更多。由於互聯網行業對系統響應時間的高要求,這些數據往往需要實時的分析和計算,以便及時為用戶提供更理想的服務。
流式計算在互聯網大數據中的典型應用場景如下:
1)社交網站。在社交網站中,要對用戶信息進行實時分析,一方面將用戶所發布的信息推送出去,另一方面也要為用戶及時發現和推薦其感興趣的內容,及時發現和防止欺詐行為,增進用戶使用體驗。
2)搜索引擎。搜素引擎除了向用戶反饋搜索結果以外,還要考慮和計算用戶的搜索歷史,發掘用戶感興趣的內容和偏好,為用戶推送推廣信息。
3)電子商務。電子商務側重於大數據技術中的用戶偏好分析和關聯分析,以便有針對性地向用戶推薦商品。同時,隨著大量電子商務開始內嵌互聯網消費金融服務,對用戶的風險分析和預警也是非常重要的。
可以預見,隨著技術的不斷發展、互聯網與物聯網等領域的不斷深入連接,未來要分析的數據量必然還會爆炸性增長。傳統的批量計算方式並不適合這類對響應時間要求很高的場景,能持續運行、快速響應的流式計算方法,才能解決這一方面的需求。
1.3 隨機森林方法介紹
隨機森林是目前海量數據處理中應用最廣的分類器之一,在響應速度、數據處理能力上都有出色表現[10, 13]。隨機森林是決策樹{h(x,θk),k=1,…}的集合H
每個元分類器h∈H,都等價於從輸入空間X到輸出類集Y的映射函數。對輸入空間X中的每一條輸入xi,h都可以得到h(xi)=yi,yi為分類器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)為每一棵決策樹h,h∈H建立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所示。
|
圖選項 |
① 使用初始訓練數據集S生成最初的隨機森林H;
② 使用隨機森林H對當前待處理的數據集Si進行分類:
a) 用隨機森林中的每一棵樹hj對Si中的每一條數據xj進行分類;
b) 記錄每一棵樹和每一條數據的分類結果,同時計算該條數據分類結果的間隔值margin(xj,y);
c) 如果margin(xj,y)小於給定閾值,則將xj加入新訓練數據集S′。
③ Si分類完畢後,計算每棵樹的準確度,並進行剪枝;
④ 在新訓練數據集S′上執行隨機森林方法,生成新的隨機森林H′;
⑤ 對新的隨機森林進行剪枝,將剪枝後的H′與H合並,形成新的隨機森林H;
⑥ 清空訓練數據集S′,開始處理下一批數據。
2.3 新隨機森林方法的優點
新的隨機森林方法有著以下優點:
1)新方法每次所處理的數據集是有限的,在實際應用中,可以根據內存大小設計每次處理的數據集大小,保證數據的實時計算和計算效率;
2)新方法中,需要存儲的只有結果記錄表和新訓練數據集,相比原始數據流小了很多,滿足流式大數據的易失性特點,在大數據量下的伸縮性更好;
3)對新數據的處理只需要使用隨機森林進行驗證和投票,執行效率高,能夠實時反饋數據的處理結果;
4)該系統可以持續地更新運行下去,並能夠不斷使用數據的新特性來更新自身,滿足流式大數據環境的無序性和無限性特點。
流式計算形態下的大數據分析