本發(fā)明屬于數(shù)據流挖掘領域,涉及一種基于嵌套時間窗口的流式數(shù)據頻繁項集挖掘算法。
背景技術:
:隨著計算機技術的飛速發(fā)展,紛繁復雜的數(shù)據呈現(xiàn)爆炸式增長,數(shù)據流作為一種特殊形態(tài)的數(shù)據廣泛存在于各個行業(yè)和職能領域中,例如電子商務數(shù)據,衛(wèi)星遙感數(shù)據,web點擊流數(shù)據,金融服務數(shù)據,傳感器數(shù)據等。挖掘數(shù)據流上的頻繁項集是一項意義重大且具有挑戰(zhàn)的工作。流式數(shù)據不同于傳統(tǒng)的靜態(tài)數(shù)據,它是連續(xù)的,高速的和無限的,且無法將其全部保存在內存中,因此,多次掃描數(shù)據庫技術已經不再適用于流式數(shù)據頻繁項集挖掘算法。此外,數(shù)據流具有很強的實時性,因此要求數(shù)據的分析處理是即時的或在線的,數(shù)據流算法需要在有限的內存空間和限定的時間內快速形成模式的歸納。流數(shù)據讓傳統(tǒng)的以挖掘靜態(tài)數(shù)據為主的頻繁項集挖掘技術面臨著巨大的挑戰(zhàn)。近年來,大量的數(shù)據流挖掘算法被提出。manku等提出了lossycounting算法,運用界標窗口對整個數(shù)據流進行分析得到全局性的頻繁模式,但該算法存在一定的局限性,如對時間概念不敏感,當數(shù)據過多時,挖掘出的頻繁項集所占空間過大。giannella等人提出了fp-stream算法,它以fp-stream為基本結構,從數(shù)據流中挖掘頻繁模式。fp-stream結構包括:在內存中捕獲數(shù)據流的最頻繁項集和次頻繁項集信息的fp-tree結構和為每個頻繁模式建立的傾斜時間窗口表。該算法動態(tài)調整存儲結構,能在有限的存儲空間內挖掘數(shù)據流中各個時間段的頻繁模式,然而,這需要額外的時間和空間來維護各個數(shù)據分段的頻繁模式樹。因此,滑動窗口模型成為廣泛使用的數(shù)據處理模型,它在滑動窗口上發(fā)現(xiàn)和維持近期的頻繁項集。當數(shù)據流入時,只有滑動窗口中的一部分數(shù)據流被存儲和處理。chiy,wang等提出了moment算法,該算法引入了一個緊湊的數(shù)據結構,即閉合枚舉樹(cet),監(jiān)視滑動窗口中的事務數(shù)據,以便隨時輸出當前時間段的閉合頻繁項目集,需要較少的內存。李國徽等提出了啟發(fā)式的msw算法,該算法使用滑動窗口樹sw-tree結構,單遍掃描數(shù)據流并可及時捕獲數(shù)據流上最新的模式信息。此外,該算法還結合時間衰減模型,逐步降低歷史事務模式的權重,該算法能有效的區(qū)分最近產生事務與歷史事務??芟阆嫉忍岢隽薴iutstream算法,該算法以位表為概要數(shù)據結構,隨著窗口滑動動態(tài)更新該存儲結構,根據fiut基本結構建立相應的k-fiu-tree,并進行頻繁項集挖掘,該算法不但節(jié)省內存開銷,而且比其他傳統(tǒng)頻繁項集挖掘算法效率更高。但是這些算法都是使用固定大小的滑動窗口模型,只有具備了數(shù)據流概念變化的先驗知識才能夠確定合適的滑動窗口大小。然而,由于數(shù)據流的不穩(wěn)定性,我們無法提前確定數(shù)據流的變化特點并給出一個能夠適應數(shù)據流所有變化的滑動窗口。因此,mahmooddeypir等提出了vsw可變滑動窗口算法,用來反映近期數(shù)據流中頻繁項集的變化。該算法通過檢測概念變化值來動態(tài)確定窗口的大小,當檢測的概念變化值大于給定的最小閾值時,改變窗口的大小。vsm算法會先進行頻繁項集挖掘再通過檢測概念變化來動態(tài)修改滑動窗口的大小,所以當新的數(shù)據流到來時,近期的主要頻繁項集可能已經發(fā)生改變。在上述算法中,所有的窗口模型都是以事務為基本單位的,并且算法不能確定合適的窗口大小以包含近期的主要頻繁項集。技術實現(xiàn)要素:有鑒于此,本發(fā)明的目的在于提出了一種新型的用于數(shù)據流頻繁項集挖掘的嵌套時間窗口算法(frequentitemsetsminingalgorithmforstreamingdatabasedonnestedtimewindowmodel,nwfi-stream)。首先使用外嵌時間窗口篩選出近期的數(shù)據,并將窗口中的所有事務數(shù)據映射到時間軸上,然后根據每個數(shù)據項的留存因子和期望窗口值來自適應的調整內嵌時間窗口大小,最后利用經典的eclat算法進行數(shù)據挖掘。為達到上述目的,本發(fā)明提供如下技術方案:一種基于嵌套時間窗口的流式數(shù)據頻繁項集挖掘算法,其特征在于:該算法包括以下步驟:s1:建立數(shù)據-時間軸的映射;s2:建立價值評估模型;s3:計算內嵌窗口以及挖掘頻繁項集;進一步,所述s1具體為:將事務中的所有數(shù)據項映射到時間軸上,橫軸表示數(shù)據項出現(xiàn)在某個時間點上的時間段,豎軸表示每一個時間點對應的事務,通過價值評估模型評估數(shù)據的留存因子,再通過公式計算窗口大小值,得到主要頻繁項集的期望窗口的大小。進一步,所述s2具體為:在數(shù)據流的挖掘過程中,算法對流中每個剛到達的數(shù)據項賦予權值為1,隨著時間的流逝而逐漸降低權重值,而權值的降低程度通過一個與時間相關的濾波函數(shù)來近似描述;使用sigmod函數(shù)來降低歷史行為對當前結果的影響,具體公式為:其中,λ>0為一衰減常量,t0為建立函數(shù)中心點對應的時間,t為當前時間;假設給定的外嵌時間窗口的大小為n,令一個時間點對應一個ti,那么外嵌時間窗口對應的時間向量為:tsw=(t1,t2...ti...tn)根據sigmod函數(shù),每一個時間點ti對應一個相應的權重值s(ti-t0),那么窗口對應的權重向量為:qsw=(s(t1-t0),s(t2-t0)...s(ti-t0)...s(tn-t0))對于給定大小的外嵌時間窗口sw,將事務中所包含的所有數(shù)據項ii(i=1,2,…,n)全部映射到時間軸t上,每個時間點對應的即為當前時間點接收到的事務,并建立對應項的向量v_swi,如果ii在時間點j中出現(xiàn),則對應的位置為1,否則為0;因此每一個數(shù)據項的留存因子即為在固定窗口內的數(shù)據項向量和權重向量做點乘,表明數(shù)據項的重要性;ωi=v_swi·qswωi作為衡量數(shù)據存留的因子,留存因子越大,此數(shù)據所占的時間長度對實際窗口大小的影響越大。進一步,所述s3具體為:對于每一個數(shù)據項,都希望最后的挖掘窗口大小剛好包含到數(shù)據項出現(xiàn)的位置,而每一個數(shù)據項都有一個窗口期望值,因此應當盡可能的使挖掘窗口的大小等于數(shù)據出現(xiàn)的初始位置,即使|l-li|最?。痪C合所有數(shù)據項的期望值,得出近期主要頻繁項集的窗口期望值,又因為每一個數(shù)據項的留存因子不一樣,對實際挖掘窗口大小的影響程度不一,因此通過以下公式計算滿足所有數(shù)據項的實際挖掘窗口大小,公式如下:其中,n表示有n個數(shù)據項;i和j表示對應的第i個和第j個數(shù)據項;ωi表示衡量數(shù)據存留的因子,留存因子越大,此數(shù)據所占的時間長度對實際窗口大小的影響越大;li表示第i個數(shù)據項在當前窗口中的起始位置距離現(xiàn)在位置的時間距離;l表示實際的窗口值大??;得到實際挖掘窗口之后,對數(shù)據進行挖掘。在本發(fā)明中,使用經典的eclat算法。eclat是一種深度優(yōu)先的方法,用于挖掘在數(shù)據庫的垂直布局上運行的靜態(tài)數(shù)據庫中的所有頻繁項集。它加入了倒排的思想,其算法思想是由頻繁k項集求交集,生成候選k+1項集。對候選k+1項集做裁剪,生成頻繁k+1項集,再求交集生成候選k+2項集。如此迭代,直到項集歸一。eclat算法初始階段必須掃描數(shù)據庫以獲得每一個數(shù)據項的時間序列表,然后通過計算其交集得到其支持度。本發(fā)明的有益效果在于:(1)nwfi-stream算法能快速有效地提取數(shù)據流中近期的主要頻繁項集,并且在時間空間復雜度上有一定的提升;(2)nwfi-stream算法具有很強的可擴展性和適應性;(3)算法不再把事務作為基本單位,而是將事務中包含的所有數(shù)據項映射到時間軸上,以確定包含近期主要頻繁項集的范圍,從而自適應調整挖掘窗口大小;且相較于經典的eclat算法,文本算法具有更好的效率。附圖說明為了使本發(fā)明的目的、技術方案和有益效果更加清楚,本發(fā)明提供如下附圖進行說明:圖1為傳統(tǒng)的滑動窗口模型頻繁項集挖掘分布圖;圖2為本發(fā)明數(shù)據項-時間軸映射圖;圖3為窗口數(shù)據樣本;圖4為外嵌時間窗口的坐標軸;圖5為本發(fā)明流程圖。具體實施方式下面將結合附圖,對本發(fā)明的優(yōu)選實施例進行詳細的描述。本發(fā)明的基本思想是:給定固定大小的外嵌時間窗口,用于篩選出近期數(shù)據,然后使用價值評估模型,先對數(shù)據項進行評估,然后確定包含近期主要的頻繁項集的范圍來自適應地調整窗口長度。該算法可以篩選出更加有意義的頻繁項集。本發(fā)明的技術方案包括以下步驟:步驟一:數(shù)據項-時間軸映射在傳統(tǒng)的滑動窗口模型頻繁項集挖掘算法中,都是給定一個固定大小的滑動窗口,然后進行頻繁項集挖掘,觀察挖掘結果,我們可以發(fā)現(xiàn),得到的頻繁項集呈現(xiàn)一定的分布,如圖1所示。在這個固定大小的窗口中,需要挖掘出包含的所有頻繁項集,但是流式數(shù)據具有時變性,因此近期的主要頻繁項集更令人感興趣,我們只需要確定包含了近期主要頻繁項集的窗口大小即可。然而,得到的頻繁項集有很多,也可能呈現(xiàn)相同的分布,因此我們無法準確的確定近期的主要頻繁項集,由此,本發(fā)明提出一種數(shù)據-時間軸映射方法,將事務中的所有數(shù)據項映射到時間軸上,如圖2所示,橫軸表示在這個時間段,數(shù)據項出現(xiàn)在某個時間點上,豎軸表示每一個時間點對應的事務。通過價值評估模型評估數(shù)據的留存因子,再通過公式計算窗口大小值,即可得到主要頻繁項集的期望窗口大小。步驟二:價值評估模型數(shù)據流中的數(shù)據是連續(xù)、無限的,過去的數(shù)據與當前流入窗口的數(shù)據在整個窗口數(shù)據流中的地位是不一樣的,越接近當前時間,越是需要關注的近期數(shù)據。因而,可以通過改變數(shù)據項的權重,來強化近期數(shù)據的作用。在數(shù)據流的挖掘過程中,算法對流中每個剛到達的數(shù)據項賦予權值為1,隨著時間的流逝而逐漸降低權重值,而權值的降低程度可通過一個與時間相關的濾波函數(shù)來近似描述。又因為數(shù)據流是隨時間動態(tài)演化的,我們主要關注的是近期的主要頻繁項集,因此我們需要減少歷史頻繁項集對當前頻繁項集的影響。因此,我們使用sigmod函數(shù)來降低歷史行為對當前結果的影響,具體公式如下:其中,λ>0為一衰減常量,t0為建立函數(shù)中心點對應的時間,t為當前時間。假設給定的外嵌時間窗口的大小為n,令一個時間點對應一個ti,那么外嵌時間窗口對應的時間向量為:tsw=(t1,t2...ti...tn)又因為隨著時間的流逝數(shù)據的權重會受到影響,根據sigmod函數(shù),每一個時間點ti對應一個相應的權重值s(ti-t0),因此,窗口對應的權重向量為qsw=(s(t1-t0),s(t2-t0)...s(ti-t0)...s(tn-t0))(2)對于給定大小的外嵌時間窗口sw,將事務中所包含的所有數(shù)據項ii(i=1,2,…,n)全部映射到時間軸t上,每個時間點對應的即為當前時間點接收到的事務,并建立對應項的向量v_swi,如果ii在時間點j中出現(xiàn),則對應的位置為1,否則為0。因此每一個數(shù)據項的留存因子即為在固定窗口內的數(shù)據項向量和權重向量做點乘,表明數(shù)據項的重要性。ωi=v_swi·qsw(3)ωi作為衡量數(shù)據存留的因子,留存因子越大,那么此數(shù)據所占的時間長度對實際窗口大小的影響就越大。步驟三:內嵌窗口計算以及頻繁項集挖掘對于每一個數(shù)據項,都希望最后的挖掘窗口大小剛好包含到數(shù)據項出現(xiàn)的位置,而每一個數(shù)據項都有一個窗口期望值,因此應當盡可能的使挖掘窗口的大小等于數(shù)據出現(xiàn)的初始位置,即使|l-li|最小。綜合所有數(shù)據項的期望值,得出近期主要頻繁項集的窗口期望值,又因為每一個數(shù)據項的留存因子不一樣,對實際挖掘窗口大小的影響程度不一,因此可通過以下公式計算滿足所有數(shù)據項的實際挖掘窗口大小。公式如下:其中,n表示有n個數(shù)據項;i和j表示對應的第i個和第j個數(shù)據項;ωi表示衡量數(shù)據存留的因子,留存因子越大,那么此數(shù)據所占的時間長度對實際窗口大小的影響就越大;li表示第i個數(shù)據項在當前窗口中的起始位置距離現(xiàn)在位置的時間距離;l表示實際的窗口值大小。得到實際挖掘窗口之后,即可對數(shù)據進行挖掘。在發(fā)明中,我們使用經典的eclat算法。eclat是一種深度優(yōu)先的方法,用于挖掘在數(shù)據庫的垂直布局上運行的靜態(tài)數(shù)據庫中的所有頻繁項集。它加入了倒排的思想,其算法思想是由頻繁k項集求交集,生成候選k+1項集。對候選k+1項集做裁剪,生成頻繁k+1項集,再求交集生成候選k+2項集。如此迭代,直到項集歸一。eclat算法初始階段必須掃描數(shù)據庫以獲得每一個數(shù)據項的時間序列表,然后通過計算其交集得到其支持度。在本發(fā)明中,在數(shù)據-時間軸映射階段已經得到了所有數(shù)據項的向量表示,不必再次掃描。本發(fā)明的實施包含三個階段:數(shù)據-時間軸映射,價值評估模型,內嵌窗口計算和頻繁項集挖掘。下面通過圖3的窗口數(shù)據樣本為例來對本發(fā)明進行具體實施說明:根據圖5所示流程進行說明。步驟一:數(shù)據-時間軸映射在本發(fā)明中,不再把事務作為基本單位,而是將事務中包含的所有數(shù)據項映射到時間軸上,確定包含近期主要頻繁項集的范圍,得出最后的挖掘窗口的大?。灰虼?,首先應當將窗口中的數(shù)據全部映射到時間軸上,并使用向量表示數(shù)據項在時間點的出現(xiàn)與否,如果ii在時間點j中出現(xiàn),則對應的位置為1,否則為0。根據實例數(shù)據得出各個數(shù)據項的向量表示如表1所示:表1數(shù)據項向量表示步驟二:價值評估模型得到每一個數(shù)據項的向量表示之后,需要結合權重向量,即公式(2),計算出每一個數(shù)據項的留存因子。在流式數(shù)據中,過去的歷史數(shù)據與當前時間流入窗口的數(shù)據在整個窗口數(shù)據流中的地位是不一樣的,越接近當前時間,越是需要關注的近期數(shù)據。因此,我們通過公式(1)給時間窗口賦予不同的權重值。首先,建立外嵌時間窗口的坐標軸,如圖4所示。將不同的時間t代入衰減函數(shù),得到時間對應的權重值,即可獲得當前時間窗口對應的權重向量q:q(0.007,0.018,0.047,0.119,0.269,0.5,0.73,0.88,0.953,0.982,0.993,0.997)通過公式(3),根據數(shù)據項的向量表示和當前窗口對應的權重向量計算出各個數(shù)據項的存留因子,計算結果如表2所示,數(shù)據項的留存因子越大,其所對應的數(shù)據項所占的時間長度對實際窗口大小的影響就越大。表2數(shù)據項留存因子留存因子ωaωbωcωdωeωfωg值6.4230.1910.1915.4732.9724.5051.181步驟三:內嵌窗口計算以及頻繁項集挖掘綜合考慮所有的數(shù)據項,即可得到近期主要頻繁項集的最佳窗口值大小。通過下面的公式計算出內嵌窗口的大?。和ㄟ^上述計算l的最終值為10,得到實際的挖掘窗口之后,使用eclat算法挖掘頻繁模式集合,并將結果保存在名為fpset的集合中。該集合用于在數(shù)據流挖掘期間維護頻繁的模式。在該算法中,我們不再需要掃描一次數(shù)據庫來得到每一個數(shù)據項的時間序列表,因為我們已經使用向量來表示每一個數(shù)據項,通過計算項的向量的交集就可以得到項集的支持,不需要再對數(shù)據進行一次處理。在sw中,假定從流中收到事務,通過插入新事務并從窗口中刪除最舊的事務,窗口向前滑動。在獲取新到來的事務時,由于效率問題,插入和刪除的單位是批處理或窗格。批處理或窗格包含固定時間段的事務。當新的事務到來時,將新的事務放入p窗口中,當p滿時,則更新sw窗口,把sw中最先接收到的窗口丟棄,將新p中的事務放入sw的末尾,重復挖掘過程。具體的算法描述如下所示:算法nwfi-stream(psize,outersize,ms)輸入:數(shù)據流ds,窗格大小psize,外嵌時間窗口大小outersize,最小支持度ms輸出:近期頻繁項集前綴樹fpsetw=windowinit(outersize);//外嵌窗口初始化p=panelinit(psize);//窗格初始化forever//處理過程無限循環(huán)itemvector=inititemvector(data)//將外嵌窗口中的數(shù)據項映射到時間軸上,并用向量表示wfactor=initweightfactor()//初始化權重因子rfactor=initretentionfactor(itemvector,wfactor)//計算每個數(shù)據項的留存因子l=initl()//得到所有數(shù)據項的實際lreall=initreall(l,rfactor)//通過l和留存因子計算出實際的挖掘窗口大小realdata=sub(data,reall)//截取真正長度的數(shù)據fpset=eclat(realdata,ms)//調用算法處理數(shù)據并使用前綴樹來存儲n=1;whilen<=psizep.adddata(t)//讀取新的數(shù)據n=n+1endwhileupdate(w,p)//更新挖掘數(shù)據endfor最后說明的是,以上優(yōu)選實施例僅用以說明本發(fā)明的技術方案而非限制,盡管通過上述優(yōu)選實施例已經對本發(fā)明進行了詳細的描述,但本領域技術人員應當理解,可以在形式上和細節(jié)上對其作出各種各樣的改變,而不偏離本發(fā)明權利要求書所限定的范圍。當前第1頁12