提高大數據數據分析性能的方法及技術(二)

 上部分連接

致謝:由於個人文章以前是在word中寫的,貼過來不少用mathtype編輯的公式沒法貼過來,以前也沒有經驗。html

參考http://www.cnblogs.com/haore147/p/3629895.html,一文完成公式的遷移。程序員

同時,說一句,word中用mathtype寫的公式用ALT+\能夠轉換成對應的latex語法公式。算法


5 數據流過濾技術

  信息大爆炸時代的到來使得針對數據進行深層次的挖掘成爲數據處理的核心任務[21]。可是在上面已經提到了,源數據的來源和數據的組成格式都是各類各樣的。想要有效的管理和處理大規模的數據(譬如通訊記錄、網頁訪問記錄、股票交易記錄等等)已經顯得尤其必要。在上一節討論的幾種流式數據處理框架已經能夠將不一樣形式的數據進行處理並以統一的形式輸出。可是從數據的規模來看並無縮小,尤爲是samza框架。那麼對流式數據進行合適的過濾,以下降數據規模,也是值得討論的問題。sql

5.1 Bloom Filter

  流式數據過濾就是按照指定的規則過濾某些數據,過濾主要涉及的是Bloom過濾器以及各類改進形式。下面首先介紹Bloom過濾器。數據庫

5.1.1 Bloom Filter原理

  Bloom[22]過濾器簡單來講就是一個空間效率較高的隨機數據結構。它能以特定的數據結構來表示一組序列,以實現成員的查詢操做。Bloom Filter容許產生一類錯誤的反饋(false positive):便可能存在將不屬於這個集合的元素當成這個集合的元素。與相對較低的錯誤了相比, Bloom Filter以其極大的空間節約率贏得了不少可容忍低偏差應用的親睞。鑑於其特性,很明顯Bloom不適用於零偏差的場合。Bloom Filter首先是由Burton Bloom在二十世紀七十年代提出的,隨後就在數據庫的應用中普遍涉及,如今已在其餘領域獲得更多的關注。apache

  下面的例子能更好的解釋其工做原理。數組

  開始時,咱們用Bloom Filter[22]來表達一個n個元素的集合S={x1,x2,x3, … xn},它們是用一組m位的位數組表示,而且均被初始化爲0。Bloom Filter使用k個獨立的哈希函數,將元素的值映射到另外一組數{1,2,3, … ,m}中。爲了表示的方便,咱們假定,每一個被映射的元素經過哈希函數的做用後都映射到{1,2,3, … ,m}範圍中。對於S中的每個元素,經過哈希函數h的做用後所在位hi(x)被置爲1(初始值爲0),一般,被做用與哈希函數後就惡能同一個位置會屢次映射,從而屢次產生「1」,可是僅有第一次作出修改,日後均不修改。爲了判斷y是否屬於集合S,咱們檢查通過k次哈希運算後的hk(y)對應的位是否都被置爲1。若是知足,則y屬於集合S(固然,這其中也不排除上述提到的錯誤的機率),反之亦然。緩存

  圖21中,第一行的爲初始化的映射表,所有位置被置0,第二行中k=3。並且x1與x2有一次映射到了同一個位置。在第三行的映射表中,y1的某次映射操做指向了0,則說明y1不是序列中的元素,而y2是序列中的元素,或者y2中存在着錯誤(即上文提到的false positive)。網絡

5.1.2 Bloom Filter錯誤率

 

  上文提到的錯誤率[22],其實是能夠被估計的。這一估計創建在一系列的假設的基礎上(1)kn<m (2)選擇的k個哈希函數徹底隨機。在這樣的狀況下,當把集合S={x1,x2,x3, … xn}中的所含元素均經過哈希函數映射到m位的數組中後,m位的數組中上一位仍是0的機率:數據結構

${{p}^{,}}={{(1-\frac{1}{m})}^{kn}}\approx {{e}^{-\frac{kn}{m}}}$

如今記p=${{e}^{-\frac{kn}{m}}}$,很容易看出來p很是的接近p,偏差限在O($\frac{1}{m}$),如今將ρ用以表示數組中0的比例,那麼其數學指望就是E(ρ)= p。若是ρ已知,則錯誤率又能夠表示爲:

${{(1-\rho )}^{k}}\approx {{(1-{{p}^{,}})}^{k}}\approx {{(1-p)}^{k}}$

  上式中右邊的等式已經討論過了,如今具體談一下左邊的等式的成立狀況。等式一成立的條件是通過數學驗證後得出的結論,亦即0分佈的比率ρ很是集中的分佈在數學指望周圍。所以得出下面兩個公式:

${{f}^{,}}={{\left( 1-{{(1-\frac{1}{m})}^{kn}} \right)}^{k}}={{(1-{{p}^{,}})}^{k}}$和$f={{\left( 1-{{e}^{-\frac{kn}{m}}} \right)}^{k}}={{(1-p)}^{k}}$

  相比而已,使用近似的值f和p比上面的f和p要容易的多。

5.1.3 Bloom Filter位數組界限

  決定一個Bloom Filter的效率的因素就是映射數組所使用的位元素的個數。即在不超過容許的錯誤率ε的前提下,該使用多少位(m)來表示集合中n個元素的映射結果。

假設[22]咱們的子集合大小是u。咱們必須爲每一種可能的集合$\left( \begin{matrix}u  \\n\\\end{matrix} \right)$必須提供一個m位的串。對於每個集合X,F(X)表示其位數組。那麼對於x∈X,若是存在查詢結果S=F(X),則S接受x,不然S拒絕x。

  下面考慮特定的一個包含n的元素的源數據集合X。任何用以表示x∈X的每個位元素必須包含x的全體。可是由於存在錯誤率的緣由,也容許接受ε(u-n)個其餘的元素。綜上,每一個S都可以接受n+ε(u-n)個元素。所以,一個特定的數組能夠表示$\left( \begin{matrix}n+\varepsilon (u-n) \\n \\\end{matrix} \right)$個子集。當咱們使用大小爲m的位元素來表示,則產生了2m個不一樣的子串用以表示n大小的數據集合的映射解。因此有以下不等式:

${{2}^{m}}\left( \begin{matrix}n+\varepsilon (u-n)  \\n  \\\end{matrix} \right)\ge\left( \begin{matrix}u  \\n  \\\end{matrix} \right)$

  或者能夠表示成以下的形式:

$m\ge {{\log }_{2}}\frac{\left( \begin{matrix}u  \\n  \\\end{matrix}\right)}{\left( \frac{n+\varepsilon (u-n)}{n} \right)}\approx{{\log }_{2}}\frac{\left( \begin{matrix}u  \\n  \\\end{matrix}\right)}{\left( \frac{\varepsilon u}{n} \right)}\ge{{\log }_{2}}{{\varepsilon }^{-n}}=n{{\log }_{2}}(\frac{1}{\varepsilon })$

  5.1.3節給出的各式都是基於一個原則,即n遠小於εu。這也是根據實驗經驗得出的結論。咱們所以也得出一個結論,在存在錯誤的狀況下,m至少要等與nlog2(1/ε)才能知足要求。

5.1.4 Bloom Filter Hash最優個數

  假設以下的狀況:若是咱們限定了n和m,那麼如何選擇哈希函數的個數k,從而達到過濾效果最優[22]的狀況呢?如今有兩種考慮:若是提供較多的哈希函數供映射,那麼若是不在x中的元素映射後會有很大的機率獲得結果0。若是選擇較少的哈希函數,那個位數組中的0元素也會大大增長。所以要考慮一種折中。哈希函數個數的最優狀況能夠經過對f和k求導得出。

  記f=exp(kln(1-e-kn/m)),g=kln(1-e-kn/m)。顯然,當g取到最小的時候,f天然也是達到最小值。

$\frac{\partial g}{\partial k}=\ln \left( 1-{{e}^{-\frac{kn}{m}}}\right)+\frac{kn}{m}\frac{{{e}^{-\frac{kn}{m}}}}{1-{{e}^{-\frac{kn}{m}}}}$

  k=ln2(m/n)時候,g取到最小值。此時f=(0.5)k(0.6185)m/ng與g的表達式下面直接給出:

$g=-\frac{m}{n}\ln (p)\ln (1-p)$和${{g}^{'}}=\frac{1}{n\ln (1-\frac{1}{m})}\ln ({{p}^{'}})\ln (1-{{p}^{'}})$

5.2 Compressed Bloom Filters

  Compressed Bloom Fiilters是基於Bloom Filter的改進形式,既繼承了Bloom Filter的優勢,又針對其不足[23],在執行效率和性能方面作了提高,下面將從原理和實驗結果等方面進行對比,不少與Bloom Filter類似之處僅一帶而過。

5.2.1 Compressed Bloom Filters提出

  5.1節也提到了,Bloom Filter雖然會產生映射階段的錯誤,可是錯誤的機率由於不是很大,鑑於其能帶來的空間效率的節省,仍然備受關注。可是這一過濾器仍存在一部分問題。

  譬如在傳遞消息時,Bloom Filter的大小就受到了嚴格的限制:在共享網絡緩存信息時,就有學者提出使用Bloom Filter做爲對應的過濾器。實際上,代理並非傳輸緩存信息以達到共享的目的,取而代之的則是在過濾器間進行廣播通訊。這一效率對於原有的Bloom Filter效率比較低。經過Compressed Bloom Filters的提出,明顯減小了廣播的次數、錯誤率、計算和查詢次數。

5.2.2 Compressed Bloom Filters原理

  咱們上面提到的關於哈希函數的k值的最優解是基於一個假設,即:咱們設計m與n的關係時就是爲了最大可能的下降錯誤率。當咱們認爲Bloom Filter常駐內存時,這個假設沒有錯。可是[25]在網絡緩存應用中,過濾器不可能常駐內存,它還要在代理間傳輸信息。這個咱們一個提示:咱們也許不必定要調整n和m的參數,也許能夠對傳輸的數據進行壓縮。所以咱們選擇在壓縮後,來處理錯誤率的問題。

  如今考慮Bloom Filter,最佳的k=ln2*(m/n),換一個說法就是,p=1/2,即當錯誤率最低時候,元數組裏面的0的個數佔一半。這種狀況下貌似不能進行壓縮。然而Bloom Filter分析思路沒有把壓縮的情形考慮在內,而是把Bloom Filter看做常駐內存的數據結構,討論出位數組大小固定的狀況下求哈希函數個數的最優值。

  與前述Bloom Filter對比。Compressed Bloom Filter[25]提出了4個性能參數:除了計算時間(對應於哈希函數的個數k)、錯誤率f,還有另外的兩種度量:未經壓縮的過濾大小(能夠後續使用m來度量)以及壓縮後傳輸數據的大小z。如今討論一種狀況:在某種情形下,壓縮後位數組z的大小比原始未壓縮過濾數據大小m重要的多,給定z、n求最優k和m。

  咱們單獨來看位數組中的每一位。首先假設咱們有最佳的壓縮算法。即有原來m位的元數組能夠被壓縮成z=H(p)大小。H(p)=-plog2p-(1-p)log2(1-p)。壓縮函數使用H(p)產生的平均值做爲元數組的初始串。獲得這時候的f(左邊),並帶入m,獲得新的f(右邊)

$f={{(1-p)}^{k}}={{(1-p)}^{(-\ln p)(\frac{m}{n})}}$和改進的$f={{(1-p)}^{-\frac{z\ln p}{nH(P)}}}$

  因爲在此處z、n固定,且z≥n,能夠求的最小的β。

$\begin{align}& \beta ={{(1-p)}^{-\left( \frac{\ln p}{H(P)} \right)}}={{e}^{-\left( \frac{\ln p*\ln(1-p)}{H(p)} \right)}} \\& =\exp \left( \frac{-\ln p*\ln (1-p)}{(-{{\log }_{2}}e)(p\ln p+(1-p)\ln(1-p))} \right) \\\end{align}$

  此處求β的最大值,等同於求γ的最大值(對其求導)。

$\gamma =\left( \frac{p}{\ln (1-p)}+\frac{1-p}{\ln p} \right)$

$\frac{d\gamma }{dp}=\frac{1}{\ln (1-p)}-\frac{1}{\ln p}+\frac{p}{(1-p)*{{\ln }^{2}}(1-p)}-\frac{1-p}{p{{\ln }^{2}}(p)}$

  p = 1/2時γ取得最小值,即β和f取得最大值。當p = 1/2,即k = (ln2) (m/n)時,在不考慮壓縮的狀況下錯誤率最低,而在考慮壓縮的狀況下錯誤率反而最高。換句話說,壓縮老是可以下降錯誤率。

 5.2.3 改進效果對比

  下面[24]經過測試一批具體的數據來判斷是否compressed bloom filter可以提高處理的性能。例子中分別採用了8和16位的元數組。一樣值得注意的是,在每一組的對比Bloom Filter中f的參數都是給出的。例如在網絡緩存共享應用中,因爲Bloom Filter的更新致使本地緩存內容的改變一樣也會引起另外的錯誤率。對於compressed Bloom Filter在測試的過程當中採用了仿真的方法。咱們重複實驗大概1000次。建立了n=10000的數據以及m=140000位。圖22和圖23說明了測試的結果。

  圖22和圖23的測試結果值得關注。若是Bloom filter常駐的內存是在使用中必需要考慮的一個問題或者說是性能瓶頸的話,那麼最好不要保持Bloom filter的現存形式。一樣的改進的Compressed Bloom Filter也可以帶來較好的性能和較低的錯誤率。

5.3 其餘過濾方式

  受篇幅所限,此處對於其餘的過濾算法再也不詳細展開。僅概要地作一番討論。下面討論Partial Bloom Filter、Counting Bloom Filter、Spectral Count Filter、Dynamic Bloom Filter等。

5.3.1 Partial Bloom Filter

  再來回顧一下Bloom Filter,它是有k個哈希函數構成,經過哈希將源集合中的源數據映射到長度爲m的位數組中。每一個哈希函數映射的範圍都是相同的,所以存在多個源數據映射到同一位置。而Prttial Bloom Filter中,則改變了這一思路。元數組被分割成了k個區域,則對於每一個哈希函數來講,都將映射到不一樣的區域中。雖然經過哈希操做獲得的映射值相同,可是卻互不干擾。對於錯誤率來講,二者比較接近,可是仍是稍微弱於標準的Bloom Filter。

${{\left( 1-\frac{k}{m} \right)}^{n}}\le {{\left( 1-\frac{1}{m} \right)}^{kn}}$

  可是實際中由於獨立了映射的範圍,使得對數則的訪問能夠併發,從而提升了執行的效率。

5.3.2 Counting Bloom Filter

  標準Bloom Filter適合靜態集合,由於Bloom Filter的一大特性是支持插入和查找,可是若是要表達的集合並非靜態的,或者說隨着應用的需求在不斷的變化,那麼Bloom Filter就顯得有點力不從心。 Counting Bloom Filter的正好是彌補了這個問題,它將標準Bloom Filter位數組的每一位(m)擴展爲一個獨立的計數器counter[25],在插入元素時給對應的k個Counter的值分別加1,刪除元素時給對應的k個Counter的值分別減1。Counting Bloom Filter給Bloom Filter增長了刪除操做,前提是必須付出較多的存儲空間。圖24展現了其刪除操做的過程。

5.3.3 Spectral Bloom Filter

  基本的Bloom filter經過哈希函數將元素映射到位數組中,該位爲1則表示元素在其中。上面提到的Counting bloom filter改進了Bloom filter,擴展了刪除操做。一旦位擴展成了一個小型的計數器,每個counter還能表示映射的個數。相似的,擴展能存儲更多的細節信息。Spectral Bloom Filter(SBF)就是基於此提出來的。BF和CBF僅僅實現了判斷一個元素是否屬於某個集合。SCF則將其與集合元素的出現次數關聯。

5.3.4 Dynamic Count Filter

  5.3.3節介紹的SBF在CBF的基礎上增長了頻度的概念,使得這一過濾器能夠被部署到多元的應用中。可是,SBF在增長了功能的同時大大滯後了處理的效率。Dynamic count filter在上述模型的基礎上進一步改進。DCF和SBF的不一樣之處,也就是counter的存儲結構[26]。圖25給出DCF的存儲結構,具體信息可參照[26]

5.3.5 CBF、SBF、DCF比較

  表5給出了三種改進的Bloom Filter過濾在多個性能指標下的比較[26]

 

Counters Size

Access Time

#Rebuilds

Saturated counters

CBF

Static

Fast

n/a

Yes

SBF

Dynamic

Slow

High

Eventually

DCF

Dynamic

Fast

Low

No

表5  CBF、SBF、DCF性能比較

6 數據流挖掘應用(以股市趨勢預測爲例)

  數據挖掘就是從海量的數據中經過各類工具的運用結合各類算法和框架,找到數據內在的聯繫。從而爲進一步決策提供參考和分析意見。比較著名的案例就是啤酒與尿布。然而現在,數據挖掘已經深刻各行各業,涉及各個領域。下面就以一個對股票市場價格預測方法和實施過程進行分析說明和總結。

 

6.1 研究背景

股票市場[27]瞬息萬變,所以對於股市的預測在現代金融市場顯得尤其重要。傳統的預測方法是基於股票票面價格進行的數據挖掘。然而,股票的價格受不少因素的干擾。對於受干擾的數據源,用以預測的隨機波動模型顯得效率比較低下。干擾源一般來自兩個方面:內幕交易和市場操控。上述的異常現象將會對股市市值的預測產生很大的影響。所以咱們也將藉助於此來最大程度的下降這種干擾因素對股票價格預測的影響。在研究中咱們將限定於上升階段的預測,由於該階段表明着着穩定和長期利好。在咱們的研究中,咱們將要探測全部的異常,而且標記在價格序列中,而後當咱們的方法檢測到異常後就能很快的作出股市價格顯著變化的預測。例如在下圖中,在價格曲線上異常的部分被標記成「+」x軸表明的是交易量而y軸(豎軸)表明的是股價。

 

  從圖26咱們能夠很清晰的看到,在異常標記後的那一段中,有一個明顯上揚的趨勢,下一節咱們將要詳細的介紹具體的實施步驟。

6.2 處理方法

  圖27詳細展現了咱們處理的步驟。咱們首先在數據源中得到數據,而後進行預處理。接着將高頻數據放入比率矩陣經過算法找出異常。根據異常的位置和結果,最終能夠得出一些預測信息。

6.2.1 數據預處理

  研究中採用的數據都是高頻的逐筆交易的數據。逐筆交易的數據在是一種金融行業使用的規格化的數據。這類數據記錄着股票交易所內每筆股票的交易。若是某一股票有1000條記錄,那麼當天必須產生1000條交易信息。這樣的數據規模是至關龐大的。沒條記錄按以下形式定義:

R={t,p,c,v,a,b}

  這些數據[27]分別表明着以下的含義,t:交易時間,p:交易價格,c:交易差價,v:交易級別,a:交易數量,b:買入或者賣出的標記位。表6記錄了一段時間內的交易數目。

 

Time

Price

Change

Volumn

Amount

Bs

15:00:19

10.77

-

1785

1923500

b

14:57:01

10.77

-

1

1077

s

14:56:55

10.77

-

10

10770

b

14:56:52

10.77

-0.01

186

200322

s

14:56:46

10.78

-

94

101332

b

14:56:43

10.78

0.01

20

21560

b

14:56:43

10.77

-0.01

75

80775

s

表6  交易記錄表

         得到數據後就開始預處理的步驟了,步驟以下:

(1)準備逐筆交易記錄:

對於每一代碼的股票,統計當天的進入交易矩陣T的數量。T矩陣的每一行都是咱們剛剛定義的R格式信息。

(2)統計全部股價

(3)統計某一股票代碼的股價

咱們從矩陣T中定義一種新的向量格式TSV(P)。其中v表明矩陣中的列,s表明特定的股票,p表示特定的價格。彙總全部的股票信息構成TV(P)。

(4)彙總比率矩陣

  對上上面得到的列向量TSV(P)和TV(P),要設法縮減規模。由於規模太大後,出現次數較少的就會被當成異常的狀況來處理。在這裏,咱們定義其上限爲1000。而且定義一種新的價格向量。P={unique prices}。則有:

$M_{si}^{v}=\frac{N\left( T_{S}^{V}\left( {{P}_{i}} \right) \right)}{N\left( T_{S}^{(V<1000)}\left( {{P}_{i}} \right) \right)}$和$M_{i}^{v}=\frac{N\left( T_{{}}^{V}\left( {{P}_{i}} \right) \right)}{N\left( T_{{}}^{(V<1000)}\left( {{P}_{i}} \right) \right)}$ 

  其中i表明行號,v表明列號。N是一個計數函數,用來計算vector的大小。MSIV是某個具體股票的矩陣,而Mv則是全體股票的矩陣。產生的矩陣以下:

6.2.2 算法

Anomaly price and volume finding algorithm

Anomaly location finding algorithm

Input: M(i,:), Ms(i,:), prices

Output: Anomaly price, Anomaly volume

1: pseq:= unique(prices)

2: for (int i=1; i<length(pseq); i++) do

3: pi:= pseq(i)

4: theoryseq:=M(i,:)

5: actualseq:=Ms(i,:)

6: difference:=actualseq-theoryseq

7: k:=find(difference>0.8)

8: if k is not empty then

9: an anomaly is found on price pi and volume number k

10: end if

11: end for

12: return

Input: Anomaly price, Anomaly volume, T

Output: Anomaly position

1: price:=Anomaly price

2: volume:=Anomaly volume

3:index:=find(T(:,2)==price

and T(:,4)==volume);

4: for (int i=1; i<=3; i++) do

5: dif:=diff(index)

6: indexDiff:=find(dif<5)

7: index:=index(indexDiff+1)

8: end for

9: if index is not empty then

10: An anomaly location is found

11: end if

12: return

  這兩個算法[27]的做用分別是用來檢測數據中的異常數據,檢測出異常點的價格和數量,以及用來定位異常數據在矩陣中的位置。

6.3 研究成果

6.3.1 集羣

  在這一部分咱們採用了k-均值聚類算法(k-means clustering algorithm)來判斷是否有集羣的存在。實驗結果見圖28。

  圖28顯示了比率矩陣中的集羣效果圖,裏面的樣本被分紅了兩類,一類用」.」表示,一類用」+」表示。左邊的藍色區域表示的是正常的數據,右邊表示的是異常的交易數據。這代表了咱們的算法與傳統的集羣算法是一致的,沒有衝突。並且咱們的算法更高效,由於能夠從圖28和29中讀取到咱們須要的一切信息。

6.3.2 結果預測

  實驗[27]中隨機選取了深交所的200支股票。發現111支存在着異常的集羣現象,如圖28和圖29所示。咱們分析了100內的數據,採樣結果如圖30。咱們很容易看到其中上揚的趨勢。在這裏咱們定義成功率(成功樣本/整體樣本),成功率的示意圖爲圖31。

  從圖31看,實驗得出的成功率是在可控範圍內的,也達到了對應的預測效果。所以符合預期所設定的實驗結論。

7 在撰寫調研報告中發現的不足

7.1 未提到的內容

  受篇幅所限,不少關於數據流挖掘的相關技術知識沒有提到,而這些知識又是在流式數據挖掘過程當中必不可少的。例如:

  流數據模型:如今通用的流數據模型主要分爲三種,分別是滑動窗口模型(sliding window model)、界標模型(landmark model)和快照窗口模型(snapshot window model)。

  流抽樣技術:抽樣過程當中方法的選取問題。不一樣的方法在計算頻率時極可能使得抽樣得出的結果與全局的頻率差距很大。

  對獨立元素的統計問題:如何統計?其中一種可選的方法是把當前全部元素列表保存在內存中,使用hash和搜索樹進行數據的保存和檢索。可是這也會遇到問題。若是內存容納不了如此多的元素怎麼處理?

  其餘諸如矩估計等問題也沒有在正文中具體討論。

7.2 發現的問題

  我在寫調研報告的過程對比了不少的新技術,經過最新的文獻和會議資料的閱讀拓寬了對大數據尤爲是流式數據分析的理解。同時也在思考這些技術背後是否是無懈可擊,有沒有能夠改進或者值得其餘人進一步分析的方面。這裏列出在調研流式數據相關應用方面的所發現的一個問題。即流式數據的獲取和隱私的保護。拿上面的股票預測案例來講,實驗的第一步是數據的預處理,預處理的前提是數據的獲取,可是很顯然,這類數據不是那麼輕易能夠獲取到的,並且在實驗中須要獲取的是「逐筆交易」記錄,更加的隱蔽。好比利用大數據在醫院等場所進行某類疾病的預測時候,也會遇到一樣的問題,對於病人的信息,以及第7節提到的股票交易信息,都是無形的財富,沒法說當即獲取,牽涉到各方的利益。再者說,若是獲取了,如何保證信息的不泄漏,不管是我的的股票交易記錄仍是病人的信息都是十分隱私的信息。即使是在操做中對某些字段採用模糊化也不能保證根據數據之間的關聯性推測出一些相對隱私的信息,這些都是流式數據處理中要注意的地方。

參考文獻

[1]       Vibha Bhardwaj, Rahul Johari. Big Data Analysis:Issues and Challenges. Electrical, Electronics, Signals, Communication and Optimization (EESCO), 2015 International Conference. Jan 2015.

[2]       Marcos D. Assunção, Rodrigo N. Calheiros, Silvia Bianchi, Marco A.S. Netto, Rajkumar Buyya. Big Data computing and clouds: Trends and future directions. J. Parallel Distrib. Comput. 79–80 Mar 2015.

[3]       Aaron N. Richter, Taghi M. Khoshgoftaar, Sara Landset, Tawfiq Hasanin. A Multi-Dimensional Comparison of Toolkits for Machine Learning with Big Data. Information Reuse and Integration (IRI), 2015 IEEE International Conference. Aug 2015.

[4]       Shabia Shabir Khan, M.A.Peer, S.M.K.Quadri. Comparative Study of Streaming Data Mining Techniques. Computing for Sustainable Global Development (INDIACom), 2014 International Conference. Mar 2014.

[5]       Gianmarco De Francisci Morales, Albert Bifet. SAMOA: Scalable Advanced Massive Online Analysis. Journal of Machine Learning Research(16) 149-153, 2015.

[6]       「samoa,」 http://samoa.incubator.apache.org/.

[7]       徐加文. 開源數據流挖掘框架學習.電子科技大學. 2014.

[8]       Jan Sipke van der Veen, Bram van der Waaij, Elena Lazovik, Wilco Wijbrandi, Robert J. Meijer. Dynamically Scaling Apache Storm for the Analysis of Streaming Data. Big Data Computing Service and Applications (BigDataService), 2015 IEEE First International Conference. Mar 2015.

[9]       「storm 簡介,」http://www.aiuxian.com/article/p-102353.html.

[10]   「storm,」 http://storm.apache.org/index.html.

[11]   「spark,」 http://spark.apache.org/index.html.

[12]   Tony Sicilian. Streaming Big Data: Storm, Spark and Samza. Enterprise Java. Feb 2015.

[13]   「dataframe,」 http://spark.apache.org/docs/latest/sql-programming-guide.html#dataframes.

[14]   夏俊鸞, 邵賽賽. Spark Streaming:大規模流式數據處理的新貴.CSDN程序員. 2014年.

[15]   Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael Franklin, Scott Shenker, Ion Stoica. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. Technical Report No. UCB/EECS-2011-82. July 2011.

[16]   Lei Gu, Huan Li. Memory or Time: Performance Evaluation for Iterative Operation on Hadoop and Spark. High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing (HPCC_EUC), 2013 IEEE 10th International Conference. Nov 2013.

[17]   「samza,」 http://samza.apache.org/.

[18]   「flink,」 http://flink.apache.org/features.html#unified-stream-amp-batch-processing.

[19]   「StreamBase,」http://www.tibco.com/products/event-processing/complex-event-processing/streambase-complex-event-processing/?capabilities.

[20]   Fatos Xhafa, Victor Naranjo, Santi Caballe, Leonard Barolli. A Software Chain Approach to Big Data Stream Processing and Analytics. Complex, Intelligent, and Software Intensive Systems (CISIS), 2015 Ninth International Conference. July 2015.

[21]   Sourav Dutta, Souvik Bhattacherjee, Ankur Narang. Towards 「Intelligent Compression」 in Streams: A Biased Reservoir Sampling based Bloom Filter Approach. EDBT/ICDT 2012 Joint Conference. Mar 2012.

[22]   Andrei Broder, Michael Mitzenmacher. Network Applications of Bloom Filters: A Survey. Internet Mathematics(4) 485-509.

[23]   Paul Hurley, Marcel Waldvogel. Bloom Filters: One Size Fits All? Local Computer Networks, 2007. LCN 2007. 32nd IEEE Conference. Oct 2007.

[24]   Michael Mitzenmacher. Compressed Bloom Filters. Networking, IEEE/ACM Transactions. 604-612,2002.

[25]   「Counting Bloom Filter,」 http://blog.csdn.net/jiaomeng/article/details/1498283.

[26]   J. Aguilar-Saborit, P. Trancoso, V. Muntes-Mulero. Dynamic Count Filters. SIGMOD Record. Mar 2006.

[27]   Zhao Lei, Wang Lin. Price Trend Prediction of Stock Market Using Outlier Data Mining Algorithm. Big Data and Cloud Computing (BDCloud), 2015 IEEE Fifth International Conference. Aug 2015.

相關文章
相關標籤/搜索