數據流聚類算法



1.數據流

  數據流的產生:實時監控系統、氣象衛星遙感、網絡通信量監測和電力供應網等

  數據流的特點海量的massive)、時序的temporally ordered)、快速變化的和潛在無限、高維的(potentially infinite)。

  數據流挖掘的特點---挑戰:

a)數據是海量的,不可能在內存及硬盤上存儲整個流數據集。

b單次線性掃描(單遍掃描)single pass)的過程;數據元素只能按其流入順序依次讀取一次,隨機訪問是不現實的。

c)數據流是持續變化的,所以不可能看到數據流的中的每一個數據元素(data point),我們只能通過分析部分數據元素來做出決策。

d)大多數應用要求及時響應,對時間復雜度、空間復雜度要求很高,並且挖掘應該是一個連續、在線的過程。

e)數據流往往是高維的High-Dimensional),不同的領域的數據流挖掘面臨的挑戰也不一樣。

f時間局部性temporal locality),過去的歷史數據或許與將來的關系越來越小,只與當前時間點很相關

g可擴展性scalability

       所以:數據流算法經常采用精度換時間的方法,盡量在對數據的一次訪問中獲得較優的解.一般來說,數據流算法是不可回溯;其次,數據流算法有很多特點,一些數據庫應用中常用的操作在數據流中都是不可行的.,Sort,Max,Count 等操作。

1.2數據流模型

       數據流中的數據項 x 1 , , xi , , xn 依次按下標順序到達 ,它們描述了一個信號 A

1.2.1 xi描述信號 A的方式 ,數據流模型可分為以下幾類:

       (1)時序( Time Series)模型:A [ i ] = xi ,用來描述時間序列數據。此時 ,數據流中的每個數據項都代表一個獨立的信號。

       (2)現金登記 (Cash Register)模型: xi = ( j,Ii ) , Ii0, Ai [ j ] =Ai-1 [ j ] + I i。此時 ,數據流中的多個數據項增量式地表達一個 A [ j ]

       (3)十字轉門( Turnstile)模型: xi = ( j,Ui) ,Ai[ j ] =Ai -1 [ j ] +Ui。其中 , Ui可為正數 ,也可為負數。此時 ,數據流中的多個數據項表達一個 A [ j ]A[ j ]隨着數據的流入 ,可能會增加 ,也可能會減小。

1.2.2按照算法處理數據流時所采用的時序范圍 ,數據流模型可分為以下幾類:

   (1)快照模型 ( Snapshot Model) :處理數據的范圍限制在兩個預定義的時間戳之間。

   (2)界標模型 (Landmark Model) :處理數據的范圍從某一個已知的初始時間點到當前時間點為止。

   (3)滑動窗口模型 (Sliding Window Model) :處理數據的范圍由某個固定大小的滑動窗口確定 ,滑動窗口的終點永遠為當前時刻。其中 ,滑動窗口的大小可以由一個時間區間定義 ,也可以由窗口所包含的數據項數目定義。

image

 

2.數據流聚類基本知識

2.1聚類方法

聚類(Clustering是指對一個數據對象集合,將其中相似的對象划分為一個或多個組(稱為“簇”,Cluster)的過程。同一個簇中的元素是彼此相似的,而與其它簇中的元素相異。

 

考慮時間局部性:基於流數據快照的方法(snapshot-based methods, 基於衰減的技術(decay-based techniques, 滑動窗口方法windowing

數據流聚類要求:適合於數據流模型的、僅使用有界內存有限處理時間單遍掃描數據的高效聚類方法。

一個好的數據流聚類算法應該具備的3個要求:

a)對已發現的簇提供一個簡潔的表示方法representation);

b)對新的數據元素的處理應該是增量式的方式(incremental processing),並且應該它是快速的;

c)有清晰而快速地孤立點檢測outlier detection)的能力。

2.2支撐技術

基於數據的技術(Data-based Techniques

抽樣(Sampling

       使用水庫抽樣reservior sampling)的技術來解決這個問題:在“水庫”中維護s個候選的樣本,形成目前看到的流的隨機樣本集,隨着數據流的流動,新的數據元素都有一定的概率替代水庫中的元素。

梗概(Sketching

       梗概是一個將數據流中的數據向量做一個隨機投影的過程。它建立這些分布向量(如直方圖)的小空間匯總。梗概廣泛用於不同數據流的比較和聚集查詢。梗概是對精度和存儲空間進行折衷的極佳范例,精度問題是它的主要缺陷。

大綱數據結構(Synopsis Data Structure

       通過應用概要技術summarization techniques),生成的比當前數據流小得多的數據結構。它是當前數據流的概要描述。已經被提出的概要技術包括:小波分析直方圖histogram)和頻率矩frequency moment)等。

       大綱數據結構不可能表示出原數據流的所有特性,使用大綱數據結構只能得到一個近似結果。

聚集運算(Aggregation

       聚集運算試圖通過計算一些統計度量,諸如平均數和方差等來概括當前的數據流。不過類似所有統計學的方法,它不適合速率高度搖擺和分布式的數據流

 

2.3基於任務的技術(Task-based Techniques

滑動窗口(Sliding Window

       滑動窗口模型基於這樣一個事實:“用戶對於最近的數據更感興趣。”這樣,我們可以對少量的近期數據做細節分析,而對大量的歷史數據,僅僅給出一個概要試圖。這樣,只需存儲小的數據窗口,減少了對內存的需求。缺陷是要求用戶預先指定窗口的尺寸,而在很多應用中,窗口的大小不可能事先知道。

衰減函數(Fading Function

       另一種強調近期數據的重要性、消減歷史數據對計算結果影響的方法是衰減因子衰減函數。數據元素在參與計算前,先經過衰減函數的作用。因此,每個數據元素對最終結果的影響將隨着時間的推移逐漸減小。一種常用的衰減函數形式為指數形式,例如 Den-Stream算法使用的衰減函數為:

傾斜時間框架(Titled Time Frame

       滑動窗口和衰減函數都只能在單一時間維的窗口上得到計算結果。然而,很多應用要求在不同的時間粒度層上進行分析和挖掘。比如,用戶通常對細粒度層上的當前變化感興趣,而在粗粒度層上對長期變化感興趣。最近的數據在最細的粒度層上記錄和運算較久遠的數據在較粗的粒度上記錄和運算

三種傾斜時間框架模型:自然傾斜時間框架模型natural)、對數尺度傾斜時間框架模型logarithmic scale)和漸進對數時間框架模型progressive logarithmic)。如圖1

image

1 傾斜時間框架的三種模式

Aggarwal等在文獻[8]中提出的CluStream聚類算法就是基於一種稱為Pyramidal Time Frame的漸進對數傾斜時間框架模型,如表1所示

1 金字塔時間框架模型An example of snapshots stored for α=2

image

       距離當前越近的時間戳,快照存儲的密度就越高。並且,漸進對數時間框架維護了一個替代算法,使新的流數據到來時能插入正確的時間粒度層,以替代最老的數據。

       不同時間粒度層中的數據存在重疊(表中划橫線的數據即為重疊數據)。並且可知,重疊數據為每層上能被αi整除的數據。

 

3.數據流聚類算法

3.1基於划分的方法---STREAM算法

       S. Guha 等人在提出了基於K-Means STREAM 算法,使用質心(中心點,中位數)權值(類中數據個數)表示聚類。STREAM算法采用批處理方式,每次批處理的數據點個數受內存大小的限制。對於每一批數據BiSTREAM算法對其進行聚類,得到加權的聚類質心集Ci

       STREAM算法采用分級聚類的方法,如圖1 所示,首先對最初的m 個輸入數據進行聚類得到O(K)1 級帶權質心,然后將上述過程重復m/O(K) 次,得到m 1 級帶權質心,然后對這m 1 級帶權質心再進行聚類得到O(K) 2級帶權質心;同理,每當得到m i 級帶權質心時,就對這些質心進行一次聚類得到O(K) i+1 級帶權質心;重復這一過程直到得到最終的O(K)個質心。對於每個第i+1 級帶權質心而言,其權值是與它對應的i 級質心的權值之和。

image

---------------------------------------------------------------------------------------------------------------------------

       STREAM算法聚焦於解決k-中位數問題(k-medians),即把度量空間中的n個數據點聚類成k個簇,使得數據點與其簇之間的誤差平方和(SSQ)最小。

       STREAM算法處理m個數據點的桶中的數據流,桶的大小與內存相符。算法把每個桶的數據點分成k個簇,並且僅僅保留k個簇中心點(而丟棄其余的數據)來匯總桶中的所有數據。每個中心點的權(weight)為該簇中數據點的個數。隨着數據流的流入,這個過程不斷地被重復,每次處理的數據個數為m個。

       此外,STREAM算法采用分級聚類的技術,使用Local Search算法改進了k-平均算法(k-means),使“k”更靈活:在算法的中間步驟中,簇的個數不再是一個固定的值,而是一個更合理的值,僅僅在算法結束時趨向於k。得到了更好的性能和更高質量的結果簇。

       如上所述,STREAM算法實現了單次掃描,時間復雜度為O(kn)

       優點和缺點:

       STREAM算法與傳統數據的聚類算法相比(與BIRCH相比較),有更好的性能,並能產生更高質量的聚類結果。

       (1)STREAM算法沒有考慮數據流的演變,即算法沒有給予最近的數據較大的權重。聚類的結果可能受控於過期的數據點。(2)STREAM算法更趨近與一個批處理的過程,無法給出一個anytime的回應,即算法無法在任意時刻給出當前數據流的聚類結果。(3)STREAM的不足還包括無法給出不同時間粒度的聚類結果等等。

 

 

3.2基於層次的方法---CluStream

       CluStream是一個數據流聚類的處理框架,它把聚類過程分為兩個部分:聯機的微聚類micro clustering)和脫機的宏聚類macro clustering)。CluStream的提出的這個兩階段處理框架被許許多多后來的數據流聚類算法所采用和遵循。

       CluStream是一個數據流的聚類分析框架。CluStream算法解決了STREAM算法的兩個問題。即它是增量式incremental)的聚類算法,在每個數據項到來時進行處理,能給出anytime的回應;並且,它使用Pyramidal時間框架,能給出不同時間粒度的聚類結果。這對於希望分別考察諸如上周、上月以及去年的聚類分析結果的用戶意義重大!

       聯機部分使用微簇(micro cluster)計算和存儲數據流的匯總統計信息,實現增量的聯機聚類查詢;脫機部分則進行宏聚類(macro clustering),利用Pyramidal時間框架提供用戶感興趣的不同時間粒度上的聚類結果。CluStream的這個兩階段處理框架被許許多多后來的數據流聚類算法所效仿和采納。

image

       BIRCHCF的可加減性,不難推導出CluStream中的聚類特征的可加減性。籍此,CluStream算法成為一個增量式的處理過程。

       聯機的微簇維護過程由初始化和更新階段組成:首先初始化q個微簇M1Mq q根據內存的情況取盡可能大的值,q個微簇根據當前數據的統計信息用k-means算法得到。然后,更新微簇。每個新數據點根據是否落在某個微簇的邊界之內,選擇加入某個微簇或者新建一個微簇。前者根據可加性被已存在的微簇“吸收”,后者則需要刪除一個最近最少用的微簇或者合並存在的微簇以保持q值不變。

       脫機部分實現用戶指導的宏聚類和聚類演變分析。宏聚類提供用戶要求的不同時間粒度的聚類結果;聚類演變分析考察聚類結果如何隨時間變化。通過Pyramidal時間框架和聚類特征的可加減性,這兩點都不難實現。前者根據當前時間tc和用戶指定的時間范圍h,在Pyramidal時間框架中找到t時刻的快照S(t)(tc-h)時刻的快照S(tc-h),相減得到(tc-h)tc之間生成的微簇集N(tc, h)N(tc, h)即是加權虛擬點集。然后用STREAM算法進行聚類,得到h時間范圍內的數據流聚類結果。

       聚類演變分析(Evolution Analysis)告訴用戶在哪些數據點在t1時刻的簇中出現而在t2時刻的簇中消失,哪些數據點在兩個時刻的簇中都存在。給定t1 t2h,計算出N(t1, h)N(t2, h)。通過比較N(t1, h)N(t2, h),就不難回答上述的問題。

       CluStream通過使用傾斜時間框架,保存了數據流演變的歷史信息,在數據流變化劇烈時仍可以產生高質量的聚類結果,並且提供了豐富的功能。但是,它沒有考慮歷史數據的衰減問題,即沒有體現出近期數據的重要性。此外,當被應用於高維數據流的聚類時,CluStream算法往往表現不佳。

 

       HPStream基於“眾多數據流天生就是高維的。”這個事實,通過引入投影技術project clustering)和衰減簇結構fading cluster structure),來更好地支持高維數據流的聚類分析。CluStreamHPStream是兩種被廣泛認可、並且十分流行的數據流聚類算法。

 

       HPStream針對高維數據流,較之CluStream主要做了如下改進:首先,HPSream引進了投影聚類技術(projected clustering)來處理高維的數據流,這比STREAMCluStream中對所有相關維做全維聚類(full dimensional clustering)要高效和合理。其次,與CluStream在整個數據流上計算微簇不同的是,HPStream使用衰減簇結構(fading cluster structure)來保存歷史數據。衰減簇結構使用衰減因子,隨着時間的推進,不斷衰減歷史數據對當前聚類結果的影響,更好地將當前數據和歷史數據集成起來。

      

3.3基於密度的算法---DenStream

       面向數據流的基於密度的聚類算法DenStream。它采用CluStream算法中提出的兩階段處理框架,並引入了潛在簇結構和孤立點簇結構。實際上,當聚類請求到達時,DenStream仍然采用DBSCAN算法來得到最后的聚類結果。

       擴展划分和層次的方法,諸如STREAMCluStreamHPStream等算法的主要問題在於:它們僅僅對球形的數據流進行聚類分析時表現良好,但由於采用距離度量,它們不能很好地處理任意形狀的數據流。

       DenStream算法擴展了傳統數據集聚類算法中基於密度的方法DBSCAN,着眼於處理任意形狀的數據流聚類問題。同時,它強調了孤立點檢測問題,將孤立點與正常數據元素區分開來。

       DenStream算法沿襲了CluStream的處理框架,把聚類分析的過程划分為聯機和脫機兩個部分。

       在聯機部分中,算法維護了兩類微簇結構:潛在微簇(p-micro-cluster)和孤立點微簇(o-micro-cluster),這兩個微簇結構的不同之處僅僅在於其約束條件——密度小於某個閾值的簇被當作孤立點簇,而密度超過該閾值的簇被視為潛在微簇。當一個新的數據點到來時,算法(1)首先試圖將它合並到其最鄰近的p-micro-cluster中;若失敗,則(2)試圖將其合並到最鄰近的o-micro-cluster中去。若合並成功,檢測該o-micro-cluster的密度是否大於閾值,若是,則將該o-micro-cluster轉換為p-micro-cluster;(3)如果仍然無法找到最鄰近的o-micro-cluster,則新建一個o-micro-cluster來容納該數據點。該子算法的流程見圖4

       對於脫機部分,當用戶的聚類要求到來時,DenStream算法先忽略密度不足夠的兩類微簇,然后使用DBSCAN算法,對當前的p-micro-clustero-micro-cluster進行處理,得到聚類結果並返回。

 

3.4基於網格的方法---D-Stream

       D-Stream就是一個基於網格和密度的數據流聚類算法。它使用密度網格(Density grid),基於密度和網格產生高質量的聚類結果。

 

       D-Stream算法是一個基於密度和網格的算法。與DenStream算法一樣,D-Stream算法也着力解決對任意形狀的數據流聚類問題、強調了孤立點探測,並且依據密度來判斷聚類。所不同的是,它是一個基於網格的算法,使用密度網格(Density Grid)結構。

       D-Stream算法同樣分為聯機和脫機兩個部分。聯機部分將接受到的每個數據元素映射到某個網格中,而脫機部分計算這些網格的密度,並且基於密度將這些網格進行聚類。

image

       使用密度網格來進行聚類的過程如圖5所示。聯機部分持續地讀入新的數據元素,並將多維的數據元素映射到多維空間內對應的離散的密度網格中,同時更新密度網格的特征向量。脫機部分在每隔一個時間隙(gap time)后動態地調整當前的簇。初始簇在第一個時間隙后形成,此后算法周期性地移除零星的簇,並調節已經生成的簇。通過使用網格結構,我們無需保留大量的原始數據,而僅僅需要對網格進行操作。

       由於聯機部分僅僅是將數據元素映射到相應的網格中,而無需計算距離或權值,D-Stream相比不使用網格的算法更高效。並且它的可擴展性更好,即算法不會隨着數據量的增大而變慢。但是,D-Stream算法的問題是對於高維數據流,所需要的網格的數量可能會非常大。

 

3.5其他方法

       基於模型的方法試圖為數據集假定一個數學模型,諸如統計學模型和神經網絡模型[1]。基於模型的方法如EM算法(Expectation-Maximization)、COBWEB等。

       利用回歸分析實現數據流聚類的算法CFR

       Domingos等擴展了機器學習中的算法,提出的基於Hoeffding界和k-平均算法的VFKM算法(Very Fast K-Means);Gaber等提出的基於AOGAlgorithm Output Granularity)的面向傳感器網絡中數據流的LWC算法(Lightweight Clustering)等

 

image

       幾乎所有2003年以后的數據流聚類算法都實現了增量式的處理方式,可以滿足用戶anytime的聚類請求。E-Stream算法實現對數據流演化的表示方式。CluStream算法框架實現了數據流的聚類演變分析,這在網絡入侵檢測中非常有用,可以識別網絡上新的攻擊類型[1]。通過使用傾斜時間框架,聚類算法可以提供不同時間粒度的聚類結果。而使用衰減函數,近期的數據得到了更大的重視。幾乎所有的兩階段聚類算法都可以支持用戶的聯機聚類請求。

       為了處理高維數據流,HPStream算法使用了投影聚類技術。而大多數基於密度及網格的方法都能對任意形狀的數據流進行聚類分析。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM