本發(fā)明屬于聚類方法領(lǐng)域,涉及一種面向混合屬性的數(shù)據(jù)流聚類方法。
背景技術(shù):
大數(shù)據(jù)技術(shù)的發(fā)展,隨之產(chǎn)生的數(shù)據(jù)量高速增加,聚類分析作為對各種數(shù)據(jù)的分析的重要技術(shù)再次成為研究熱點。聚類分析在金融、市場營銷、信息檢索、信息過濾、科學觀測與工程等各個領(lǐng)域廣泛應(yīng)用?;旌蠈傩詳?shù)據(jù)流聚類是針對混合屬性數(shù)據(jù)流,原始數(shù)據(jù)以龐大的數(shù)據(jù)流形式到達,數(shù)據(jù)流的屬性大多是同時具有取值為連續(xù)數(shù)值的數(shù)值屬性和代表類別或狀態(tài)的分類屬性這兩種屬性類型的混合屬性,需要對這些混合屬性的數(shù)據(jù)流進行預處理、聚類和知識提取。傳統(tǒng)的聚類算法有基于劃分的算法、基于層次的算法、基于密度的算法等。數(shù)據(jù)流聚類算法大體上也可以按照這種方法來區(qū)分。
基于劃分的方法的典型代表是k-means算法和k-median算法。2000年,guha提出了一種基于k-means的單遍掃描算法來處理數(shù)據(jù)流。該算法對存儲空間的需求比較低,但是,這個算法中存在一個近似的中間結(jié)果,這個中間變量會隨著迭代次數(shù)的增多而變大,最終導致聚類結(jié)果的不準確;2002年,o’callaghan等通過對k-medians算法進行擴展,提出了stream算法。stream算法采用批處理的方式處理數(shù)據(jù),且每次處理的數(shù)據(jù)點個數(shù)都會受到內(nèi)存大小的限制,無法滿足數(shù)據(jù)流的數(shù)據(jù)量大、分布變化快等特點的數(shù)據(jù)流的聚類。
2003年,c.aggarwal等在文獻中提出了clustream算法,成為擴展層次方法的典型算法。它把整個數(shù)據(jù)流聚類的過程分解成兩個步驟:在線更新和離線聚類。在線更新階段的主要工作是收集數(shù)據(jù)流中的數(shù)據(jù)和更新微簇,算法采用金字塔時間框架結(jié)構(gòu)對數(shù)據(jù)進行存儲,之后進行微簇的更新;離線聚類階段的主要工作是對微簇進行宏聚類,這里的聚類方法是擴展了傳統(tǒng)的birch算法。clustream算法是當前比較流行的數(shù)據(jù)流聚類算法之一,并且,由clustream算法提出的這個兩段處理過程現(xiàn)在被廣泛用于各種數(shù)據(jù)流挖掘算法中。但是clustream算法也存在一些缺點:首先該算法不能處理任意形狀的簇;其次對于噪聲的適應(yīng)性較差;并且需要人為指定聚類微簇的數(shù)量,嚴重影響了原始數(shù)據(jù)聚類的形狀分布。c.aggarwal等又提出了hpstream算法,對高維數(shù)據(jù)流進行處理采用的是投影方法,經(jīng)實驗證明,這個算法在各個方面都比clustream有了進一步的提高。
2006年,cao.f等提出了denstream算法。這是一種全新的、基于密度方法的聚類算法。該算法使用了前面提到過的clustream算法的兩段處理框架,在線階段使用衰減窗口處理數(shù)據(jù),生成核心微簇,離線階段擴展了dbscan算法對數(shù)據(jù)進行聚類,由微簇生成宏簇。在denstream算法中還提出了潛在簇的概念,較為妥當?shù)奶幚砹藬?shù)據(jù)中出現(xiàn)的離群點。但是由于denstream算法采用全局一致的絕對密度作為參數(shù),所以使得聚類結(jié)果對參數(shù)的選擇非常敏感。針對den-stream算法問題,tang提出了一種改進denstream算法,denstreamii算法引入重疊因子的概念,有效解決了交疊微簇的歸屬問題。zhang在頂級會議pkdd上首次提出了strap算法,該算法在ap算法的基礎(chǔ)上改進,使之面向數(shù)據(jù)流對象,該算法將新到達的數(shù)據(jù)對象與當前模型匹配,匹配成功則更新微簇,否則將其視為噪聲點放入暫存盒中。張建朋提出了strdenap算法,該算法在strap算法的基礎(chǔ)上,借鑒了clustream的兩階段框架,采用近鄰傳播算法,考慮數(shù)據(jù)到達時間對聚類結(jié)果的影響,算法能夠取得較好的聚類效果。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有大多數(shù)數(shù)據(jù)流聚類方式存在的聚類中心需要人工確定、聚類準確率低、不能有效處理混合屬性數(shù)據(jù)集、不同數(shù)據(jù)集聚類效果差異性大和參數(shù)依賴性大的不足,本發(fā)明提供了一種面向混合屬性的數(shù)據(jù)流自適應(yīng)聚類方法,具有能處理混合屬性數(shù)據(jù)集、處理速度快、準確率高的特點。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種面向混合屬性的數(shù)據(jù)流自適應(yīng)聚類方法,包括以下步驟:
1)數(shù)據(jù)預處理和網(wǎng)格初始化,過程如下:
1.1對于一個d維數(shù)據(jù),根據(jù)其每一維屬性的性質(zhì),將該維劃分為數(shù)值屬性維度和分類屬性維度兩類,分類屬性數(shù)據(jù)分為二元數(shù)據(jù)和序數(shù)型數(shù)據(jù);對于一個數(shù)據(jù)流對象,通過查詢其每一維屬性的定義而確定該維屬性是數(shù)值屬性還是分類屬性,若是分類屬性,則進一步將其劃分為二元屬性或序數(shù)屬性;當確定對象數(shù)據(jù)流每一維度的屬性性質(zhì)后,使用距離計算公式計算出各部分距離,并將各部分距離相加得到兩數(shù)據(jù)點之間的最終距離;
1.2根據(jù)對象數(shù)據(jù)流每一維度的屬性性質(zhì),對每維屬性進行劃分操作以建立最小網(wǎng)格單元;首先,通過隨機采樣的方法從數(shù)據(jù)集對象當中取出總體數(shù)據(jù)的β%進行預處理分析,將所有被取出的數(shù)據(jù)點構(gòu)成一個集合m;
對于每一數(shù)值屬性維度,分析集合m中所有數(shù)據(jù)在該維度的分布情況,統(tǒng)計出最大值和最小值,并根據(jù)這些信息確定網(wǎng)格在該維度的最小劃分長度,通過最小劃分長度將該維度劃分成一個個區(qū)間,最終確定網(wǎng)格在此維度上的粒度;
對于任意維分類屬性維度k,無論該屬性是二元屬性還是序數(shù)屬性,其值均在該維度上離散且有限,所以將m中所有元素在該維度上的不同值取出,構(gòu)成一個集合ik,統(tǒng)計ik中的元素個數(shù),并將其作為網(wǎng)格在此維度上的分類個數(shù);
1.3經(jīng)過預處理分析,原本的d維空間就被劃分成了一個以網(wǎng)格單元為單位的子空間集合;將集合m中的數(shù)據(jù)點以一定的流速流入在線網(wǎng)格框架,每隔單位時間統(tǒng)計密這段時間內(nèi)數(shù)據(jù)點流入網(wǎng)格的分布情況;當集合m中的數(shù)據(jù)全都流入網(wǎng)格后,將此時密度不為零的網(wǎng)格作為初始網(wǎng)格,存入網(wǎng)格列表;
2)網(wǎng)格的在線維護,過程如下:
2.1當數(shù)據(jù)點xi到達時,根據(jù)xi的維度信息計算出與xi對應(yīng)的網(wǎng)格,將xi投入網(wǎng)格,對網(wǎng)格的元組信息進行更新;
2.2統(tǒng)計當前時刻所有數(shù)據(jù)點落入的網(wǎng)格的個數(shù),計算該時刻數(shù)據(jù)點落入網(wǎng)格的分散程度,根據(jù)分散程度的大小,使用不同的衰減系數(shù)對這些數(shù)據(jù)進行衰減;
2.3在線過程中計算網(wǎng)格的平均密度,設(shè)置參數(shù)μ,確定網(wǎng)格閾值,將所有網(wǎng)格劃分成密集網(wǎng)格和稀疏網(wǎng)格兩類;
2.4根據(jù)網(wǎng)格閾值dbd,計算在線檢測的最短時間間隔δt,每隔δt對所有網(wǎng)格進行密度更新,同時計算出新的網(wǎng)格平均密度和網(wǎng)格閾值;
2.5使用最低權(quán)值檢測機制,對每一個網(wǎng)格設(shè)定一個隨網(wǎng)格存在時間而逐漸遞增的最低權(quán)值閾值函數(shù),該值在網(wǎng)格密度信息更新時同步更新,若更新后的網(wǎng)格密度小于該最小權(quán)值,則說明網(wǎng)格已過時或包含噪聲點,將該網(wǎng)格刪除;
3)離線聚類,當用戶向系統(tǒng)發(fā)送請求時,將統(tǒng)計當前時刻的網(wǎng)格信息進行離線聚類操作,過程如下:
3.1從數(shù)據(jù)空間中尋找到一個密集網(wǎng)格g,以網(wǎng)格g為本次聚類的起始點開始聚類,按照廣度優(yōu)先搜索原則,尋找到密集網(wǎng)格g直接相鄰的密集網(wǎng)格gi,然后對每個gi網(wǎng)格單元繼續(xù)進行廣度優(yōu)先搜索,直到所有到網(wǎng)格g相鄰可達的密集網(wǎng)格單元被搜索到為止;當一次聚類過程結(jié)束時,從剩余的未聚類密集網(wǎng)格中找出新的網(wǎng)格繼續(xù)聚類,重復上述步驟,直到剩余的網(wǎng)格中不包含密集網(wǎng)格為止;
3.2將經(jīng)在線過程統(tǒng)計后的所有網(wǎng)格作為輸入,通過基于密度-距離的參數(shù)自適應(yīng)聚類方法尋找出最優(yōu)dc,當dc確定后,計算出每個數(shù)據(jù)點的密度值ρ和最近鄰數(shù)據(jù)點δ,根據(jù)ρ和δ值將所有稀疏網(wǎng)格進行劃分,完成對稀疏網(wǎng)格的聚類;
3.3輸出聚類結(jié)果。
本發(fā)明的有益效果主要表現(xiàn)在:能夠處理包含數(shù)值屬性、二元屬性和序數(shù)屬性的混合屬性數(shù)據(jù)集,并能識別出任意形狀的類簇。采用非均勻衰減模型進一步提高了在線過程的抗噪能力;使用最低權(quán)值函數(shù)在線刪除稀疏微簇,減少了算法的內(nèi)存開銷,提高了算法的處理速度;離線過程中對于密集網(wǎng)格和稀疏網(wǎng)格采用不同的聚類方法,提高了聚類準確率。在真實數(shù)據(jù)集上的實驗結(jié)果表明,該方法具有良好的適用性和可擴展性,能夠有效地處理相關(guān)數(shù)據(jù)集,取得較好的聚類結(jié)果。
附圖說明
圖1是數(shù)據(jù)流聚類的研究框架圖。
圖2是均勻衰減模型和非均勻衰減模型的聚類效果對比圖。
圖3是不同λ時
圖4是網(wǎng)格在線更新機制流程圖。
圖5是稀疏網(wǎng)格聚類的流程圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進一步的描述。
參照圖1~圖5,一種面向混合屬性的數(shù)據(jù)流自適應(yīng)聚類方法,包括以下步驟:
1)數(shù)據(jù)預處理和網(wǎng)格初始化,過程如下:
1.1對于一個d維數(shù)據(jù),根據(jù)其每一維屬性的性質(zhì),可以將該維劃分為數(shù)值屬性維度和分類屬性維度兩類。分類屬性數(shù)據(jù)又可以分為二元數(shù)據(jù)和序數(shù)型數(shù)據(jù)。對于一個數(shù)據(jù)流對象,可以通過查詢其每一維屬性的定義而確定該維屬性是數(shù)值屬性還是分類屬性,若是分類屬性,則可以進一步將其劃分為二元屬性或序數(shù)屬性。當確定對象數(shù)據(jù)流每一維度的屬性性質(zhì)后,使用相應(yīng)的距離計算公式計算出各部分距離,并將各部分距離相加得到兩數(shù)據(jù)點之間的最終距離。
1.2根據(jù)對象數(shù)據(jù)流每一維度的屬性性質(zhì),對每維屬性進行劃分操作以建立最小網(wǎng)格單元。首先,通過隨機采樣的方法從數(shù)據(jù)集對象當中取出總體數(shù)據(jù)的β%進行預處理分析,將所有被取出的數(shù)據(jù)點構(gòu)成一個集合m。
對于每一數(shù)值屬性維度,分析集合m中所有數(shù)據(jù)在該維度的分布情況,統(tǒng)計出最大值和最小值,并根據(jù)這些信息確定網(wǎng)格在該維度的最小劃分長度,通過最小劃分長度將該維度劃分成一個個區(qū)間,最終確定網(wǎng)格在此維度上的粒度。
對于任意維分類屬性維度k,無論該屬性是二元屬性還是序數(shù)屬性,其值均在該維度上離散且有限,所以可以將m中所有元素在該維度上的不同值取出,構(gòu)成一個集合ik,統(tǒng)計ik中的元素個數(shù),并將其作為網(wǎng)格在此維度上的分類個數(shù)。
1.3經(jīng)過預處理分析,原本的d維空間就被劃分成了一個以網(wǎng)格單元為單位的子空間集合?,F(xiàn)將集合m中的數(shù)據(jù)點以一定的流速流入在線網(wǎng)格框架,每隔單位時間統(tǒng)計密這段時間內(nèi)數(shù)據(jù)點流入網(wǎng)格的分布情況。當集合m中的數(shù)據(jù)全都流入網(wǎng)格后,將此時密度不為零的網(wǎng)格作為初始網(wǎng)格,存入網(wǎng)格列表。同時根據(jù)每個單位時間段內(nèi)流入數(shù)據(jù)的分布情況確定系統(tǒng)的在線衰減參數(shù)λlow,λmed和λhigh。
2)網(wǎng)格的在線維護,過程如下:
2.1當數(shù)據(jù)點xi到達時,根據(jù)xi的維度信息計算出與xi對應(yīng)的網(wǎng)格,將xi投入網(wǎng)格,對網(wǎng)格的元組信息進行更新。
2.2統(tǒng)計當前時刻所有有數(shù)據(jù)點落入的網(wǎng)格的個數(shù),計算該時刻數(shù)據(jù)點落入網(wǎng)格的分散程度,分散程度的計算公式為
ω=n/n(1)
其中n表示在當前時刻有數(shù)據(jù)點落入的網(wǎng)格的數(shù)量,n表示當前時刻的網(wǎng)格總數(shù)。ω∈(0,1],ω的大小可以反映當前時刻流入數(shù)據(jù)的分布集中程度。ω越小,表示流入的數(shù)據(jù)分布地越集中;ω越大,表示流入的數(shù)據(jù)分布地越分散。
根據(jù)分散程度的大小,使用不同的衰減系數(shù)對這些數(shù)據(jù)進行衰減。
2.3在線過程中計算網(wǎng)格的平均密度,設(shè)置參數(shù)μ,確定網(wǎng)格閾值,將所有網(wǎng)格劃分成密集網(wǎng)格和稀疏網(wǎng)格兩類。
2.4根據(jù)網(wǎng)格閾值dbd,計算在線檢測的最短時間間隔δt。每隔δt對所有網(wǎng)格進行密度更新,同時計算出新的網(wǎng)格平均密度和網(wǎng)格閾值。δt不宜過大或過小。當δt太大時,算法將不能有效檢測到數(shù)據(jù)流的實時變化;δt太小將導致頻繁的計算,增加了算法的運算消耗。當運算負擔過大時,在線過程的算法處理速度可能不足以滿足對數(shù)據(jù)流進行快速處理的要求。本算法中使用一個網(wǎng)格從稀疏網(wǎng)格變?yōu)槊芗W(wǎng)格的最小時間作為δt的值。
δt的計算公式為
其中dbd為網(wǎng)格閾值,λhigh為最大衰減系數(shù)。
2.5使用最低權(quán)值檢測機制,對每一個網(wǎng)格設(shè)定一個隨網(wǎng)格存在時間而逐漸遞增的最低權(quán)值閾值函數(shù),最低權(quán)值閾值函數(shù)的計算公式為
其中t0表示網(wǎng)格的創(chuàng)建時間,tc表示當前時間。
該值在網(wǎng)格密度信息更新時同步更新。若更新后的網(wǎng)格密度小于該最小權(quán)值,則說明網(wǎng)格已過時或包含噪聲點,將該網(wǎng)格刪除以減少算法的運行內(nèi)存消耗,提高算法的處理速度和效率。
3)離線聚類
當用戶向系統(tǒng)發(fā)送請求時,系統(tǒng)將統(tǒng)計當前時刻的網(wǎng)格信息,進行離線聚類操作。
3.1使用改進的dbscan算法,從數(shù)據(jù)空間中尋找到一個密集網(wǎng)格g,以網(wǎng)格g為本次聚類的起始點開始聚類,按照廣度優(yōu)先搜索原則,尋找到密集網(wǎng)格g直接相鄰的密集網(wǎng)格gi,然后對每個gi網(wǎng)格單元繼續(xù)進行廣度優(yōu)先搜索,直到所有到網(wǎng)格g相鄰可達的密集網(wǎng)格單元被搜索到為止。當一次聚類過程結(jié)束時,從剩余的未聚類密集網(wǎng)格中找出新的網(wǎng)格繼續(xù)聚類,重復上述步驟,直到剩余的網(wǎng)格中不包含密集網(wǎng)格為止。
3.2將經(jīng)在線過程統(tǒng)計后的所有網(wǎng)格作為輸入,通過基于密度-距離的參數(shù)自適應(yīng)聚類方法尋找出最優(yōu)dc,當dc確定后,計算出每個數(shù)據(jù)點的密度值ρ和最近鄰數(shù)據(jù)點δ,根據(jù)ρ和δ值將所有稀疏網(wǎng)格進行劃分,完成對稀疏網(wǎng)格的聚類。
其中ρ和δ的計算公式為
ρi=∑f(dij-dc)(5)
δi=min(dij)(ρj≥ρi)(6)
dij表示點i和點j之間的距離。
3.3輸出聚類結(jié)果。
本實施例中,針對在線過程中的噪聲點干擾,提出一種非均勻衰減的在線聚類模型來提高數(shù)據(jù)流的在線聚類效果;同時在離線過程中,針對具有不同密度信息的網(wǎng)格,使用改進的dbscan算法和基于密度-距離分布的ccfd快速聚類算法進行聚類分析,快速有效地提升數(shù)據(jù)流聚類算法的精度。
數(shù)據(jù)流聚類被分為在線過程和離線過程兩塊內(nèi)容。在線過程主要包括初始化過程和在線維護。初始化過程中,將最先流入的一部分數(shù)據(jù)點投入網(wǎng)格,進行網(wǎng)格的初始化操作;當源源不斷的數(shù)據(jù)流入時,為了保證網(wǎng)格信息的實時性,需要對網(wǎng)格進行在線維護。當用戶發(fā)送聚類請求時,聚類過程由在線階段轉(zhuǎn)為離線階段,根據(jù)網(wǎng)格的密度信息將網(wǎng)格分為密集網(wǎng)格和稀疏網(wǎng)格。對于密集網(wǎng)格,使用改進的dbscan算法進行聚類;對于稀疏網(wǎng)格,則使用基于密度-距離分布的ccfd算法進行聚類,最終將得到的聚類結(jié)果輸出。完成整個聚類過程。
具體研究框架如圖1所示。
通過隨機采樣的方法從數(shù)據(jù)集對象當中取出總體數(shù)據(jù)的β%進行預處理分析,將所有被取出的數(shù)據(jù)點構(gòu)成一個集合m,若每個數(shù)據(jù)點由d維向量構(gòu)成,其中包含p維數(shù)值屬性,q維二元屬性和r維序數(shù)屬性數(shù)據(jù)(p+q+r=d),則對于任意數(shù)據(jù)點xi∈m,xi可以表示為xi={xi1,...,xip,xi(p+1),...,xi(p+q),xi(p+q+1),...,xid},xij表示第i個數(shù)據(jù)點的第j維屬性值,其中{xi1,xi2,...,xip}表示數(shù)值屬性數(shù)據(jù),{xi(p+1),xi(p+2),...,xi(p+q)}表示二元屬性數(shù)據(jù),{xi(p+q+1),xi(p+q+2),...,xid}表示序數(shù)屬性數(shù)據(jù)。
定義1:對于任意兩個數(shù)據(jù)點xi和xj,其距離計算公式為:
dis(xi,xj)=d(xi,xj)p+d(xi,xj)q+d(xi,xj)r(7)
其中,d(xi,xj)p表示數(shù)據(jù)間的數(shù)值屬性距離分量,對這部分計算采用歐氏距離計算方法,具體公式為:
而
公式(9)中
d(xi,xj)q表示數(shù)據(jù)間的二元屬性距離分量,對這部分計算采用簡單匹配的計算方法,具體公式為:
其中,
d(xi,xj)r表示數(shù)據(jù)間的序數(shù)屬性分量距離之和,其公式為:
同樣地,由于每個序數(shù)型數(shù)據(jù)可以有不同的數(shù)目狀態(tài),必須將這些數(shù)據(jù)的屬性值映射到[0,1]上,以便每個屬性都有相同的權(quán)重。在這里給出z(xin,xjn)的計算公式:
其中num(in)表示對應(yīng)n維序數(shù)屬性所有離散值的個數(shù)總和。
根據(jù)公式(7)~(13)即可計算出任意兩個數(shù)據(jù)點之間的距離。離線聚類過程中,將所有網(wǎng)格看作是一個個位于網(wǎng)格幾何中心的虛擬數(shù)據(jù)點,此時網(wǎng)格間距離也可用上述公式進行計算。
定義2:設(shè)數(shù)據(jù)流在tp時刻流入的數(shù)據(jù)點落在n個網(wǎng)格內(nèi),此時系統(tǒng)存在密度不為0的網(wǎng)格總數(shù)為n,則定義該時刻下數(shù)據(jù)的分散程度為:
ω=n/n(14)
由公式(14)可得ω∈(0,1],ω的大小可以反映當前時刻流入數(shù)據(jù)的分布集中程度。ω越小,表示流入的數(shù)據(jù)分布地越集中;ω越大,表示流入的數(shù)據(jù)分布地越分散。
定義3:根據(jù)ω的大小,將tp時刻流入的數(shù)據(jù)點的分散度進行離散化處理,對具有不同的分散度的數(shù)據(jù),采用不同的衰減參數(shù)進行衰減:
公式(15)中,λlow,λmed,λhigh為根據(jù)初始化聚類分析得到的三個衰減參數(shù),且有λlow<λmed<λhigh。定義3說明不同時刻的衰減系數(shù)隨流入數(shù)據(jù)分散程度的變化而變化,流入網(wǎng)格的數(shù)據(jù)將按與之對應(yīng)的衰減系數(shù)進行密度衰減。整個在線過程的密度衰減是非均勻的。
下面對非均勻衰減模型的一些概念進行說明。
定義4(數(shù)據(jù)密度):對于任意數(shù)據(jù)對象x,若其到達的時間點為tc,則t(x)=tc。該數(shù)據(jù)對象的密度值d(x,t)的定義如下:
其中
定義5(網(wǎng)格的密度更新):假設(shè)網(wǎng)格den在tp時刻接受到了一個新的數(shù)據(jù)對象,且該網(wǎng)格上次的密度更新時間為tl,則該網(wǎng)格的密度更新公式為:
d(den,tp)=dhigh(den,tp)+dmed(den,tp)+dlow(den,tp)(17)
從公式(17)中可以看出,d(den,tp)由dhigh(den,tp),dmed(den,tp)和dlow(den,tp)三部分組成,這三部分分別對應(yīng)在相應(yīng)的衰減參數(shù)λhigh,λmed和λlow下衰減的數(shù)據(jù)密度總和。對于dhigh(den,tp),其密度更新機制為:
其中dhigh(den,0)=0。dmed(den,tp)和dlow(den,tp)的密度更新機制和dhigh(den,tp)完全一致。
定義6(網(wǎng)格的平均密度):設(shè)數(shù)據(jù)的流速為v,若在任意時刻t,記流入網(wǎng)格的所有數(shù)據(jù)點的密度總和為dglobal(t),此時網(wǎng)格總數(shù)為n,則當前網(wǎng)格的平均密度為:
dave=dglobal(t)/n(19)
其中,dglobal(t)的計算公式為:
dglobal(t)=dhigh(t)+dmed(t)+dlow(t)(20)
對于dhigh(t),其密度更新機制為:
其中dhigh(0)=0。dmed(t)和dlow(t)的密度更新機制和dhigh(t)完全一致。
從上述分析中可以看出,所有網(wǎng)格密度總和的計算和更新公式和單獨一個網(wǎng)格den的密度計算更新公式基本一致。從宏觀角度來講,可以將整個空間當作一個巨大的網(wǎng)格,所有流入的數(shù)據(jù)點均落在這個網(wǎng)格之內(nèi),故該有關(guān)該網(wǎng)格的密度計算和更新機制與網(wǎng)格den完全相同。
定義7(密集網(wǎng)格和稀疏網(wǎng)格):根據(jù)定義6中的公式(19)~(21)能計算出當前時間的網(wǎng)格平均密度dave,現(xiàn)設(shè)定參數(shù)μ,則:
上式中,sm表示所有密集網(wǎng)格的集合,sp表示所有稀疏網(wǎng)格的集合,μ為人工設(shè)定的一個閾值參數(shù),一般情況下μ≥1,通過μ可以對所有的網(wǎng)格進行劃分,為后續(xù)過程中有關(guān)網(wǎng)格的在線更新機制和離線聚類算法做好鋪墊。
從上述定義可知,非均勻衰減模型的實質(zhì)是根據(jù)每一時刻落入網(wǎng)格的數(shù)據(jù)點的分散程度,對這些數(shù)據(jù)采用不同的衰減速率進行網(wǎng)格的在線密度更新。具體方案為:將流入網(wǎng)格的數(shù)據(jù)點分為快速衰減數(shù)據(jù)、正常衰減數(shù)據(jù)和慢速衰減數(shù)據(jù)三類。當一個數(shù)據(jù)點流入網(wǎng)格后,根據(jù)其衰減類型對網(wǎng)格的密度向量dv進行更新。dv保存了當前時刻該網(wǎng)格中快速衰減數(shù)據(jù)、正常衰減數(shù)據(jù)和慢速衰減數(shù)據(jù)各自的密度總和。使用非均勻衰減模型的目的是抑制分布分散的噪聲數(shù)據(jù)對在線聚類過程的干擾,同時加強對分布集中的核心點密度信息的保留,提高算法在在線聚類過程中的聚類性能。其具體圖示如圖2所示。
圖2(a)表示網(wǎng)格中數(shù)據(jù)點的原始分布情況;圖2(b)表示未經(jīng)衰減時,流入一部分數(shù)據(jù)點后,窗口上的數(shù)據(jù)點分布情況;圖2(c)表示使用均勻衰減模型后得到的數(shù)據(jù)分布圖;圖2(d)表示使用非均勻衰減模型后數(shù)據(jù)在二維窗口上的分布情況。從(b)和(c)、(d)的對比中可以看到,使用衰減模型和網(wǎng)格的在線刪除機制能有效剔除一部分包含噪聲點的網(wǎng)格,便于離線過程中聚類算法的實行。同時觀察(c)和(d),可以發(fā)現(xiàn)在均勻衰減模型中,仍然留有殘余的噪聲點,且簇內(nèi)結(jié)構(gòu)不夠緊密。相比于均勻衰減模型,非均勻衰減模型因為對不同數(shù)據(jù)的衰減力度不同,使得到的結(jié)果具有更高簇內(nèi)密度,對噪聲點的抑制能力更好。
定理1:對于任意網(wǎng)格den,該網(wǎng)格從稀疏網(wǎng)格變?yōu)槊芗W(wǎng)格的最小時間為:
其中,λhigh為最大衰減系數(shù),dbd=μdave表示劃分稀疏網(wǎng)格和密集網(wǎng)格的網(wǎng)格閾值。
證明:假設(shè)在t時刻,網(wǎng)格den為密集網(wǎng)格,且den的密度值恰好等于網(wǎng)格閾值。經(jīng)過δt時間后,網(wǎng)格衰減為稀疏網(wǎng)格,同時在t+δt時,網(wǎng)格又吸收了一個數(shù)據(jù)點,使網(wǎng)格den的密度又重新達到了網(wǎng)格閾值,此時該網(wǎng)格再度成為密集網(wǎng)格。從中可以得到:
d(den,t+δt)+1=dbd
把網(wǎng)格的密度公式帶入上式得到:
dhigh(den,t+δt)+dmed(den,t+δt)+dlow(den,t+δt)+1=dbd
即
而因為λlow<λmed<λhigh,且dhigh(den,t)+dmed(den,t)+dlow(den,t)=dbd,則有
所以
證畢。
根據(jù)上述證明,每隔δt即需要對所有網(wǎng)格進行密度檢測,更新密集網(wǎng)格和稀疏網(wǎng)格。
隨著數(shù)據(jù)對象的不斷流入,系統(tǒng)存儲的網(wǎng)格數(shù)量也隨之增加。過多的網(wǎng)格數(shù)量將對算法的存儲空間和運行速率提出較高的要求。事實上,很多網(wǎng)格中只包含極少數(shù)的噪聲點,這些網(wǎng)格的密度隨著時間的推移而逐漸趨向于0,這些包含噪聲點的網(wǎng)格對離線過程中的聚類分析沒有任何意義。將這些網(wǎng)格從網(wǎng)格列表中刪除,不但能夠減少在線過程中算法的存儲消耗,同時能在離線聚類過程中除去噪聲點的干擾,提高算法的準確率。因此,在數(shù)據(jù)流在線過程中,建立合適的網(wǎng)格更新和刪除機制是十分必要的。
為刪除一些落入噪聲點的網(wǎng)格,采用最低權(quán)值檢測機制。最低權(quán)值的閾值設(shè)定如下:
上式中,t0表示網(wǎng)格的創(chuàng)建時間,tc表示當前時間。
由公式和圖3可以得到,當tc=t0時,
網(wǎng)格的在線更新機制如圖4所示。
當用戶向系統(tǒng)發(fā)送請求時,系統(tǒng)將統(tǒng)計當前時刻的網(wǎng)格信息,進行離線聚類操作。離線聚類過程類似于靜態(tài)聚類,它將所有網(wǎng)格當作是一個個位于網(wǎng)格幾何中心的虛擬點,使用聚類算法對這些點進行聚類操作,最終得到聚類結(jié)果并輸出。
改進的dbscan算法類似于圖像處理中的鄰域搜索算法。該算法首次從數(shù)據(jù)空間中尋找到一個密集網(wǎng)格g,以網(wǎng)格g為本次聚類的起始點開始聚類,按照廣度優(yōu)先搜索原則,尋找到密集網(wǎng)格g直接相鄰的密集網(wǎng)格gi,然后對每個gi網(wǎng)格單元繼續(xù)進行廣度優(yōu)先搜索,直到所有到網(wǎng)格g相鄰可達的密集網(wǎng)格單元被搜索到為止。當一次聚類過程結(jié)束時,從剩余的未聚類密集網(wǎng)格中找出新的網(wǎng)格繼續(xù)聚類,重復上述步驟,直到剩余的網(wǎng)格中不包含密集網(wǎng)格為止。
本實施例以rodriguez等提出的基于中心點具有高密度ρ且與比它高密度點具有較大距離δ的假設(shè)的算法為基礎(chǔ),對該算法中的密度半徑dc進行自適應(yīng),最終得到了基于密度-距離的參數(shù)自適應(yīng)聚類方法。下面給出該算法的部分定義:
定義8(局部密度):對于任意數(shù)據(jù)對象i,其局部密度的計算方法為:
ρi=σf(dij-dc)(26)
其中,dij表示點i和點j之間的距離。函數(shù)f的計算法則為:
其中,wj表示數(shù)據(jù)對象對應(yīng)網(wǎng)格的網(wǎng)格密度。
定義9(最近距離):對于任意對象i,其到局部密度比它大的點的最近距離為:
δi=min(dij)(ρj≥ρi)(28)
一般將數(shù)據(jù)對象j當做數(shù)據(jù)對象i的關(guān)聯(lián)對象。記為l(i)=j(luò)。
對于ρ值最大的點,存在
δi=max(δj)(i≠j)(29)
此時該數(shù)據(jù)對象的關(guān)聯(lián)對象就是其本身,即l(i)=i。
對于稀疏網(wǎng)格的聚類方法具體步驟為:
首先將所有網(wǎng)格(包括已經(jīng)經(jīng)過劃分的密集網(wǎng)格和未經(jīng)劃分的稀疏網(wǎng)格)作為輸入,通過自適應(yīng)方法尋找出最優(yōu)dc;當dc確定后,根據(jù)公式(26)和(27)計算所有網(wǎng)格的密度值;計算完成后,根據(jù)公式(28)和(29)再計算出所有稀疏網(wǎng)格i的關(guān)聯(lián)對象l(i);之后選取任意一個未經(jīng)劃分的稀疏網(wǎng)格對象i,將該對象與其關(guān)聯(lián)對象l(i)劃分為一類。此過程中,若l(i)也是未經(jīng)劃分的稀疏網(wǎng)格,則將i與l(i)劃分至l(i)的關(guān)聯(lián)對象l(l(i)),由此類推,直到某一稀疏網(wǎng)格的關(guān)聯(lián)對象是一個已經(jīng)經(jīng)過劃分的數(shù)據(jù)對象,此時將過程中的一系列稀疏網(wǎng)格均和該對象劃分為一類;執(zhí)行該步操作直到所有稀疏網(wǎng)格均被劃分時,輸出最終聚類結(jié)果。
算法的流程圖如圖5所示。