專利名稱:在事件序列中識別局部周期模式的方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及的是數(shù)據(jù)挖掘,特別是,在一個事件序列中識別局部周期模式和相應(yīng)事件子序列。
周期模式發(fā)現(xiàn)在時間序列數(shù)據(jù)的挖掘中是一個重用的問題。時間序列數(shù)據(jù)的序列模式發(fā)現(xiàn)最初是由Agrawal等人。在1995年3月臺灣臺北的數(shù)據(jù)工程(ICDE)國際會議論文集中3-14頁的“挖掘序列模式”中闡述的。挖掘過程的輸入數(shù)據(jù)是一個事件集,被稱為數(shù)據(jù)序列。每個數(shù)據(jù)序列是一個事務(wù)列表。典型地,具有與每個事務(wù)相關(guān)的事務(wù)時間。一個序列模式也包括事務(wù),即事件集。通常,時間序列數(shù)據(jù)的挖掘要求發(fā)現(xiàn)所有具有用戶指定的最小“支持”的序列模式。一個序列模式的支持是在一個事件序列中模式出現(xiàn)的次數(shù)。
根據(jù)現(xiàn)有技術(shù),通過探究與局部周期性相關(guān)的特性,如Apriori特性和命中的最大子模式集特性,產(chǎn)生了有效挖掘局部周期模式的方法。此類方法由Han等人.在1999年數(shù)據(jù)工程國際會議論文集106-115頁的“在事件序列數(shù)據(jù)庫中有效挖掘局部周期模式”中進(jìn)行了闡述。但是,這些方法都要求一個預(yù)定義的周期。而且,這些方法都假定如果在一個模式的一系列循環(huán)過程中存在擾動,該擾動不會導(dǎo)致該模式的后繼出現(xiàn)與先前出現(xiàn)之間失去同步。例如,“喬史密斯每天早上讀報紙”是一個周期模式。盡管喬可能早上偶爾不讀報紙,但這一擾動不會影響喬在后面的早晨讀報紙這一事實(shí)。換句話說,擾動僅允許是“缺少出現(xiàn)”的形式,而不能是“插入隨機(jī)的噪聲事件”。然而,當(dāng)由于插入噪聲事件使得一些模式的出現(xiàn)偏離方向時,這些假設(shè)因?qū)е率《艿教嗟南拗?,以至不能檢測所關(guān)注的模式。
關(guān)于數(shù)據(jù)挖掘的更合乎需要的方法,考慮下面針對存貨補(bǔ)給的應(yīng)用例子。存貨補(bǔ)充命令的歷史記錄可以被看作是一個事件序列。假設(shè)兩次感冒藥品補(bǔ)給之間的時間通常是一個月。補(bǔ)充命令在每個月的月初提交,后來暴發(fā)了大規(guī)模的流感,因而致使在第三個星期又進(jìn)行的補(bǔ)充。而后,即使補(bǔ)給的頻率恢復(fù)到每月一次,但補(bǔ)充的時間改變到每月的第三個星期(而不是像從前的在每月的月初)。所以,希望當(dāng)擾動在某些合理的限度內(nèi)時,模式仍能夠被識別。
此外,系統(tǒng)行為可以隨時間改變。某些模式可能不是任何時候都能出現(xiàn)的(而是在某些時間范圍內(nèi))。因此,希望找到在一個事件子序列內(nèi)有效的周期模式,即使這樣的模式包含一個長達(dá)某一預(yù)定閾值的擾動。
本發(fā)明涉及在一個事件序列中識別局部周期模式和相關(guān)的事件子序列。即,也識別其中每個模式都有效的子序列。
根據(jù)本發(fā)明的第一個方面,提供了一種在一個事件序列中識別局部周期模式的方法,其中模式包括一個來自于事件序列的事件列表。事件序列中至少一個子序列和至少一個子序列中的至少一個模式被識別,以使得至少一個模式在至少一個子序列中超出最小重復(fù)次數(shù),至少一個子序列中的至少一個模式的兩次連續(xù)的重復(fù)之間的間隔不超過一個預(yù)定的時間間隔閾值。至少一個模式和至少一個子序列兩者中至少一個被存儲起來。
根據(jù)本發(fā)明的第二個方面,給定模式中的每個事件是一個獨(dú)特的和非獨(dú)特的兩種情況中的一種,每個非獨(dú)特的事件可等同為任意的清楚事件。
根據(jù)本發(fā)明的第三個方面,提供了一種在一個事件序列中識別局部周期模式的方法,其中每個模式包括一個來自于事件序列的事件列表。候選模式周期的一個CPP集和候選事件的多個CE集被識別,其中在CPP集中的每個候選模式周期都是與候選事件的多個CE集中的一個集相對應(yīng)。至少一個包括CE集之一中的候選事件并具有與CPP集中的相關(guān)候選模式相同周期的模式被識別。而且,包含至少一個模式的事件序列中的至少一個子序列被識別。至少一個模式和至少一個子序列的識別,使得至少一個模式在至少一個子序列中的重復(fù)超過最小的次數(shù),并且至少一個子序列中的至少一個模式的兩次連續(xù)的重復(fù)之間的間隔不超過一個預(yù)定的時間間隔閾值。至少一個模式和至少一個子序列兩者中至少一個被存儲起來。
根據(jù)本發(fā)明的第四個方面,CPP集中每個候選模式周期的長度要比預(yù)先指定的最大周期長度短。
根據(jù)本發(fā)明的第五個方面,至少一個子序列是包含至少一個模式的最長的事件子序列。
根據(jù)本發(fā)明的第六個方面,識別候選模式周期的CPP集和候選事件的多個CE集的步驟包括初始化多個時間間隔計(jì)數(shù)器。每個時間間隔計(jì)數(shù)器與多個事件和周期組合中的一個相關(guān)聯(lián),每一個組合包括CPP集中的一個周期和相關(guān)的候選事件CE集中的一個事件。時間間隔計(jì)數(shù)器的值被更新以反映出一個相關(guān)的事件與上一次相關(guān)事件的發(fā)生之間的時間間隔。事件和周期的組合被識別,以便使得與每個被識別的組合相關(guān)聯(lián)的時間間隔計(jì)數(shù)器的值超過最小的重復(fù)次數(shù)。
根據(jù)本發(fā)明的第七個方面,多個事件和周期組合的每一個周期小于預(yù)先指定的最大的周期長度。
根據(jù)本發(fā)明的第八個方面,識別候選模式周期的CPP集和候選事件的多個CE集的步驟包括識別單一模式和包括單一模式的子序列的步驟,其中每個單一模式僅有一個由事件序列的一個事件來填充的位置。識別復(fù)雜模式并確認(rèn)其有效,其中每個復(fù)雜模式具有一個以上的由事件序列的一個事件來填充的位置。
根據(jù)本發(fā)明的第九個方面,該方法進(jìn)一步包括確認(rèn)單一模式有效的步驟。
對本發(fā)明的這些以及其它的方面、特點(diǎn)和優(yōu)勢,將通過下面對優(yōu)選實(shí)施方案的詳細(xì)描述,并結(jié)合附圖來加以說明。
圖1是依照一個示例實(shí)施方案的可應(yīng)用本發(fā)明的一個計(jì)算處理系統(tǒng)100的模塊圖;圖2是一個說明依照本發(fā)明一個示例實(shí)施方案的在一個輸入事件序列中挖掘非同步周期模式的全過程的示意圖;圖3是一個說明依照本發(fā)明一個示例實(shí)施方案的基于時間間隔的修剪過程(圖1的步驟101)的示意圖;圖4是一個說明依照本發(fā)明一個示例實(shí)施方案的時間間隔計(jì)數(shù)器的更新過程(圖3的步驟310)的示意圖;圖5是一個說明依照本發(fā)明一個示例實(shí)施方案的從時間間隔計(jì)數(shù)器中產(chǎn)生的一個1-模式候選集的過程(圖3的步驟314)的示意圖6是一個說明依照本發(fā)明一個示例實(shí)施方案的識別出現(xiàn)一個給定的模式1的最長的子序列的過程(圖2的步驟218)的示意圖;圖7是一個說明依照本發(fā)明一個示例實(shí)施方案的在valid_seq中修剪序列表的過程(圖6的步驟610)的示意圖;圖8是一個說明依照本發(fā)明一個示例實(shí)施方案的更新ongoing_seq中子序列列表的過程(圖6的步驟612)的示意圖;圖9是一個說明依照本發(fā)明一個示例實(shí)施方案的擴(kuò)展相配子序列的過程(圖8的步驟820)的示意圖;圖10是一個說明依照本發(fā)明一個示例實(shí)施方案的在sequence_set中擴(kuò)展子序列的過程(圖8的步驟801)的示意圖;圖11是一個說明依照本發(fā)明一個示例實(shí)施方案的修剪sequence_set的過程(圖9的步驟912)的示意圖;圖12是一個說明依照本發(fā)明一個示例實(shí)施方案的在sequence_set中識別有效子序列,以及復(fù)制并插入有效子序列到valid_seq的過程(圖9的步驟914)的示意圖;圖13是一個說明依照本發(fā)明一個示例實(shí)施方案的在ongoing_seq中插入一個新的序列的過程(圖6的步驟614)的示意圖;圖14是一個說明依照本發(fā)明一個示例實(shí)施方案的識別sequence_set中重復(fù)次數(shù)最多的子序列和子序列l(wèi)ongest_seq過程(圖X的步驟XXX)的示意圖;圖15是一個說明依照本發(fā)明一個示例實(shí)施方案的識別復(fù)雜模式的過程(圖2的步驟220)的示意圖。
本發(fā)明涉及在一個事件序列中識別局部周期模式和相關(guān)的事件子序列。即,也識別其中每個模式都有效的子序列。
將會理解,本發(fā)明可以以不同的硬件、軟件、固件、特定目的處理器、或它們的組合的形式來實(shí)現(xiàn)。本發(fā)明更適宜通過作為程序存儲設(shè)備中實(shí)施的應(yīng)用程序的軟件的形式來實(shí)現(xiàn)。應(yīng)用程序可以裝載到一個包含任意合適的結(jié)構(gòu)體系的機(jī)器中,并由其來執(zhí)行。該機(jī)器最好是在一個具有諸如一個或多個中央處理單元(CPU)、一個隨機(jī)存取存儲器(RAM)和輸入/輸出(I/O)接口等硬件的計(jì)算機(jī)平臺上實(shí)現(xiàn)。該計(jì)算機(jī)平臺還包括一個操作系統(tǒng)和微指令碼。這里描述的不同的處理和功能可以是通過操作系統(tǒng)執(zhí)行的微指令碼的部分,或應(yīng)用程序的部分(或兩者的組合)。此外,其它不同的外圍設(shè)備可以連接到計(jì)算機(jī)平臺上,如一個附加的數(shù)據(jù)存儲設(shè)備和一個打印設(shè)備。
也應(yīng)進(jìn)一步理解,因?yàn)楦綀D中表示的有些組成系統(tǒng)的組件和方法步驟適宜用軟件來實(shí)現(xiàn),系統(tǒng)組件(或過程步驟)間的實(shí)際連接可以根據(jù)本發(fā)明的編程方式有所不同。在本發(fā)明提供的技術(shù)前提下,相關(guān)領(lǐng)域的一般熟練人員可以考慮本發(fā)明的這些和相似的實(shí)現(xiàn)或配置。
圖1是依照一個示例實(shí)施方案的可應(yīng)用本發(fā)明的一個計(jì)算處理系統(tǒng)100的模塊圖;計(jì)算機(jī)處理系統(tǒng)包括至少一個通過一個系統(tǒng)總線104操作連接到其它組件的處理器(CPU)102。一個只讀存儲器(ROM)106、一個隨機(jī)存取存儲器(RAM)、一個顯示適配器110、一個I/O適配器112、和一個用戶接口適配器114操作連接到系統(tǒng)總線104上。
一個顯示設(shè)備116通過顯示適配器110操作連接到系統(tǒng)總線104。一個磁盤存儲設(shè)備(如磁盤或光盤存儲設(shè)備)118通過I/O適配器112操作連接到系統(tǒng)總線104。
一個鼠標(biāo)120和鍵盤122在運(yùn)行時通過用戶接口114操作連接到系統(tǒng)總線104。鼠標(biāo)120和鍵盤122可用來向計(jì)算機(jī)處理系統(tǒng)100輸入信息和從系統(tǒng)輸出信息。應(yīng)當(dāng)理解,依照本發(fā)明,計(jì)算機(jī)處理系統(tǒng)100可以采用其它的配置,而不超出本發(fā)明的宗旨和范圍。
現(xiàn)在將對本發(fā)明進(jìn)行簡要的描述,向讀者介紹本發(fā)明的概念。在識別一個事件序列的非同步模式的過程中,本發(fā)明利用了兩個參數(shù),即min_rep和max_dis,來限定一個有效模式和包含該有效模式的事件子序列。事件子序列可以被當(dāng)作是一個有擾動插入的完全重復(fù)的有效段列表。要求每個有效段包括該模式的至少min_rep個鄰接的重復(fù),其中有效段中每個干擾“片段”的長度不得超過max_dis。就是說,min_rep是在一個給定事件序列的給定子序列中一個模式必須表現(xiàn)的最小重復(fù)次數(shù),而max_dis在一個給定事件序列的給定子序列中一個模式(即有效段)的兩次連續(xù)的重復(fù)間的最大時間間隔(適宜以事件形式定義)。
采用min_rep的是因?yàn)橐粋€模式本身需要重復(fù)至少某一次數(shù)來說明其重要性和周期性。采用max_dis的是因?yàn)閮蓚€有效段間的擾動必須在某個合理的范圍之內(nèi)。否則,應(yīng)將這一擾動當(dāng)作一個“系統(tǒng)行為的變化”信號,而不是注入到某些一貫行為中的隨機(jī)噪聲。參數(shù)max_dis起到分隔這兩種現(xiàn)象的邊界作用。這兩個參數(shù)的合理值依具體的應(yīng)用而定,因而可以方便地允許用戶來指定。對于滿足這兩個參數(shù)的模式,本發(fā)明的方法將返回具有最大完整重復(fù)次數(shù)的子序列。注意,由于擾動的出現(xiàn),在一個事件序列中一個后續(xù)的有效段可能與該事件序列中先面的有效段不是很好地同步(例如,因?yàn)槌霈F(xiàn)某一位移)。這種現(xiàn)象對數(shù)據(jù)挖掘過程提出了更大的難題。
挖掘問題的輸入涉及到一個輸入序列。下面是一個輸入序列的例子a2a1a1*a1a1*a1a1*a3。例如,輸入序列中的一個模式是a1a1,在事件序列中重復(fù)3次。參考符號*代表一個“永久事件”。一個永久事件是一個可以等同于任何事件的虛擬事件。這樣,一個永久事件可以用來表示一個模式中的“不關(guān)心”的位置。一個永久事件也可以被看作是“非獨(dú)特的”,這種情況下,一個諸如a1的事件被認(rèn)為是“獨(dú)特的”。
依照本發(fā)明,允許部分填充一個模式,能夠形成一個更靈活的非同步周期模型。例如,(cold_medi,*,*,*)是一個局部的月周期模式,表現(xiàn)為在每月的第一個星期再次訂購感冒藥品,而在另外的三個星期中的藥品補(bǔ)充訂購不是非常有規(guī)律的。然而,由于本發(fā)明考慮到一個有效段的具體出現(xiàn)的變化,這一靈活模型帶來一個需要解決的難題。對于一個給定的模式P,其相關(guān)的有效段可以是重疊的。為了找到P的具有最大重復(fù)次數(shù)的有效子序列,我們必須決定應(yīng)選擇一個有效段的哪一部分。對于一個給定模式,要找到有效段集相對來講是容易的,而真正的困難在于如何組合這些有效段形成最長的有效子序列。由于不同組件的(有效段)數(shù)目隨著周期長度呈指數(shù)形式增長,挖掘最長子序列的過程變成得非常困難(即使對于一個諸如(d1,*,*)這樣一個非常簡單的模式)。針對一個給定的模式,為了解決這一問題,提出一個有效的挖掘方法,來識別在一個事件序列中可能擴(kuò)展為最長子序列的子序列,并以這樣一種方式組織識別的子序列,以便可以通過掃描單一的輸入序列來識別最長的子序列。根據(jù)該方法,僅需檢查所有可擴(kuò)展子序列中的一小部分。
本發(fā)明挖掘數(shù)據(jù)方法的另一個優(yōu)點(diǎn)是可以發(fā)現(xiàn)所有與周期長度無關(guān)的周期模式。這點(diǎn)是很有效的,因?yàn)閷?shí)際上周期不是總可以事先得到的。因而,周期也是從數(shù)據(jù)中挖掘出來的。
回到上面描述的庫存補(bǔ)充的例子中,不同商品的庫存可以以不同的頻率補(bǔ)充(這在事先是未知的,并且有時是變化的)。一個周期可以在一個長時間序列中跨越數(shù)千個事件,或者可以僅跨越幾個事件。提供一個基于時間間隔的修剪機(jī)理來發(fā)現(xiàn)所有可能的周期和可能以每個可能周期的某一模式出現(xiàn)的事件集。為了發(fā)現(xiàn)所有可能模式的最長有效子序列,采用了一種等級式的方法。先驗(yàn)的特性也持續(xù)同一周期的模式。就是說,一個模式的一個有效段也是僅具有很少幾個該模式指定事件的模式的一個有效段。例如,(d1,d2,*)的一個有效段也將是(d1,*,*)的一個有效段。因而,對于每個可能的周期,所有的具有最長支持子序列的有效模式可以被反復(fù)地挖掘。
這里將根據(jù)圖2對本發(fā)明進(jìn)行簡要描述。接著參照圖3-15對本發(fā)明進(jìn)行更多的細(xì)節(jié)描述。
圖2是一個說明依照本發(fā)明一個示例實(shí)施方案的在一個輸入事件序列中挖掘非同步周期模式的全過程的示意圖。從事件序列中識別候選1-模式(下文中表示為“1-模式”)(步驟210)。一個1-模式是一個包含一個事件的模式(1-模式也由此被稱為“單一模式”)。例如,(d1,*,*)被認(rèn)為是一個1-模式。因?yàn)橐还灿?(T×Lmax2)個1-模式的總數(shù),所有的1-模式不能立即裝入到內(nèi)存。相應(yīng)地,一個基于時間間隔的修剪方法被用于1-模式,以減少1-模式的數(shù)目(步驟212)。
接下來,對于每個1-模式,校驗(yàn)1-模式是否是有效的(步驟214)。當(dāng)一個模式關(guān)于包含該模式的事件序列的一個子序列滿足min_rep和max_dis時,該模式被認(rèn)為是有效的。應(yīng)該注意到,術(shù)語“有意義”和“有效”在這里是可以交換使用的。
沒有效的1-模式被忽略(步驟216)。相反,對于每個有效的1-模式,相應(yīng)的具有最大的該1-模式重復(fù)次數(shù)的子序列(即最長子序列)被識別(步驟218)。有效的復(fù)雜模式,連同它們的相關(guān)的最長子序列被識別(步驟220)。一個復(fù)雜模式是一個包含多于一個事件的模式。
圖3是一個說明依照本發(fā)明一個示例實(shí)施方案的基于時間間隔的修剪過程(圖1的步驟101)的示意圖。掃描事件序列來識別其中的每個事件。對于事件序列中的每個事件,執(zhí)行下面的步驟310。
對于輸入時間當(dāng)前處理位置(current_position)上的一個給定的事件d,所有與該給定事件d相關(guān)的時間間隔計(jì)數(shù)器都被更新(步驟310)。時間間隔計(jì)數(shù)器被用于在事件序列中確定事件的位置。確定在事件序列中是否存在多個事件(步驟312)。如果是,過程返回到步驟310(處理序列中的下一個事件)。否則,產(chǎn)生1-模式候選集(步驟312),而后該方法結(jié)束。
圖4是一個說明依照本發(fā)明一個示例實(shí)施方案的時間間隔計(jì)數(shù)器的更新過程(圖3的步驟310)的示意圖。為變量d賦值來表示一個當(dāng)前正在處理的事件(步驟410)。一個變量i被設(shè)置成當(dāng)前位置值減1(即current_position-1)(步驟412)。然后確定d是否等于序列中第i個位置的事件(即d前面的事件)(步驟414)。如果是,具有一個i-current_position周期的事件d的計(jì)數(shù)器被加1(其中,current_position等于當(dāng)前正在處理的事件的位置)(步驟416),并且過程進(jìn)行到步驟418。否則,過程進(jìn)行到步驟418。
在步驟418,i值被減1。然后確定i(即第i個位置)與current_positon之間的差別是否小于或等于Lmax。如果是,過程返回到步驟414。否則,過程結(jié)束。
圖5是一個說明依照本發(fā)明一個示例實(shí)施方案的從時間間隔計(jì)數(shù)器中產(chǎn)生的一個1-模式候選集的過程(圖3的步驟314)的示意圖。對于事件序列中的一個獨(dú)特的事件d,每個周期長度l被識別(步驟510)。對于一個給定的周期長度l,確定計(jì)數(shù)器[d][l]是否大于min_rep(步驟512)。如上面聲明,min_rep是(預(yù)先定義的)一個給定事件序列中一個給定子序列所展現(xiàn)的最小重復(fù)次數(shù)。
如果是,模式(d,*,…,*)被插入到1-模式的候選集中(步驟514)。注意,插入的模式包括一個事件和周期。否則,過程進(jìn)行到步驟516。
在步驟516,確定對于當(dāng)前正在處理的清楚事件d是否存在多出的周期長度l。如果是,過程返回到步驟512。否則,確定是否還有需要處理的事件d(步驟516)。如果是,過程返回到步驟510。否則,過程結(jié)束。
圖6是一個說明依照本發(fā)明一個示例實(shí)施方案的識別出現(xiàn)一個給定的模式1的最長的子序列的過程(圖2的步驟218)的示意圖。如上面注釋,一個給定的1-模式的最長子序列是其中出現(xiàn)該1-模式最多重復(fù)的子序列。
對于事件序列中一個給定的事件d,valid_seq被修剪(步驟610)。Valid_seq是一個子序列列表,其中列表中的每個子序列可以通過向其中附加有效段來擴(kuò)展。在本發(fā)明的一個優(yōu)選實(shí)施方案中,valid_seq通過一個隊(duì)列來實(shí)現(xiàn),其中valid_seq中所列的子序列根據(jù)其結(jié)尾位置按照降序排列。
接下來,更新ongoing_seq(步驟612)。ongoing_seq是一個包含子序列列表的列表,其中每個子序列列表具有相同的結(jié)尾位置,并且子序列的最后段是活動增長的。在本發(fā)明的一個優(yōu)選實(shí)施方案中,ongoing_seq通過一個隊(duì)列來實(shí)現(xiàn),其中ongoing_seq中相同列表的所有子序列具有相同的結(jié)尾位置,并且根據(jù)其結(jié)尾位置按照升序排列。
一個新的子序列被插入到ongoing_seq(步驟614)。確定是否存在更多需要處理的事件d(步驟616)。如果是,那么過程返回到步驟610。否則,Valid_seq和longest_seq中的最長子序列被識別為給定模式的最長子序列(步驟618)。Longest_seq是sequence_set中具有重復(fù)最多的子序列。sequence_set是一個用于臨時存儲的子序列的列表。
圖7是一個說明依照本發(fā)明一個示例實(shí)施方案的在valid_seq中修剪序列表的過程(圖6的步驟610)的示意圖。New_seq被初始化為空(步驟710)。New_seq是一個新產(chǎn)生的子序列。
從valid_seq的頭部取出一個子序列(seq)(步驟712)。確定seq是否為空(即valid_seq中的所有子序列都已被處理)(步驟714)。如果是,則方法進(jìn)行到步驟724。否則,確定序列seq的結(jié)尾位置(seq.ending)與檢測事件位置(current_position)間的時間間隔是否小于或等于max_dis(步驟716)。如上所述,max_dis是一個給定事件序列的一個給定子序列中的一個模式的兩個連續(xù)的重復(fù)之間最大的時間間隔。
如果是,過程進(jìn)行到步驟722。否則,確定總的seq重復(fù)次數(shù)是否小于總的最長序列的重復(fù)次數(shù),后面被稱為longest_seq(注意longest_seq恰好是序列seq)(步驟718)。如果不是,過程回到步驟712。否則,序列seq被指定為longest_seq(步驟720),過程返回到步驟712。
在步驟722,序列seq被插入到new_seq中,過程返回到步驟712。在步驟724,當(dāng)valid_seq中所有的子序列都被處理完后,new_seq被賦給valid_seq。
圖8是一個說明依照本發(fā)明一個示例實(shí)施方案的更新ongoing_seq中子序列列表的過程(圖6的步驟612)的示意圖。首先,從ongoing_seq中提出一個項(xiàng)(即一個序列列表)并賦給sequence_set(步驟810)。確定sequence_set是否是空的(步驟812)。如上所述,sequence_set是一個用于臨時存儲的子序列列表。在本發(fā)明的一個優(yōu)選的實(shí)施方案中,sequence_set是利用一個隊(duì)列來實(shí)現(xiàn)的。
如果sequence_set是空的,則處理過程結(jié)束。否則,確定當(dāng)前位置后子序列是否處于sequence_set的結(jié)尾處(步驟814)。如果是,那么sequence_set被插回到ongoing_seq的頭部(步驟816),處理過程結(jié)束。否則,確定sequence_set中的結(jié)尾位置(sequence_set.ending)是否就是當(dāng)前位置前面的位置(current_position-1)(步驟818)。如果不是,則處理過程返回到步驟810。否則,sequence_set的子序列被擴(kuò)展,多包括一個相配的發(fā)生(即多出一個該模式的發(fā)生)(步驟820),過程返回到步驟810。
圖9是一個說明依照本發(fā)明一個示例實(shí)施方案的擴(kuò)展相配的子序列的過程(圖8的步驟820)的示意圖。
sequence_set的子序列被擴(kuò)展,多包括一個該模式的發(fā)生(步驟910)。然后,sequence_set被修剪(步驟912)。sequence_set的有效子序列被識別,而后,這些有效的子序列被復(fù)制并被插入到valid_seq中(步驟914)。接著,sequence_set被放置到ongoing_seq的尾部(末尾)(步驟916),處理過程結(jié)束。
圖10是一個說明依照本發(fā)明一個示例實(shí)施方案的在sequence_set中擴(kuò)展子序列的過程(圖8的步驟801)的示意圖。對sequence_set中的每個seq執(zhí)行圖10中的方法。
對于sequence_set中給定的子序列seq,在給定子序列seq的結(jié)尾位置增加一個周期長度l(步驟1010)。確定在sequence_set中是否存在多出的子序列seq(步驟1012)。如果是,處理過程回到步驟1010。否則,過程結(jié)束。
圖11是一個說明依照本發(fā)明一個示例實(shí)施方案的修剪sequence_set的過程(圖9的步驟912)的示意圖。對于sequence_set1001中的每個子序列的seq,重復(fù)執(zhí)行步驟1110、1112和1114。對于sequence_set 1001中的每個子序列的seq,還重復(fù)執(zhí)行步驟1116和1118。
對于sequence_set中給定子序列的seq,確定序列當(dāng)前重復(fù)的次數(shù)(seq.current_rep)是否大于閾值min_rep(即seq_valid),以及序列總的重復(fù)次數(shù)(set.total_rep)是否大于目前所發(fā)現(xiàn)的最大子序列的總的重復(fù)次數(shù)(largest.total_rep)(步驟1110)。如果是,那么最大的子序列被設(shè)定為給定子序列seq(步驟1112),處理過程進(jìn)行到步驟1114。否則,處理過程進(jìn)行到步驟1114。
在步驟1114中,確定在sequence_set中是否存在更多的沒有被用于步驟1110的子序列seq。如果是,處理過程返回到步驟1110(處理sequence_set中下一個子序列seq)。否則,確定seq當(dāng)前重復(fù)的次數(shù)是否大于min_rep(即seq_valid),以及seq總的重復(fù)次數(shù)是否小于總的largest的重復(fù)次數(shù)(步驟1116)。如果是,那么從sequence_set中移除seq(步驟1118),處理過程進(jìn)行到步驟1120。否則,處理過程進(jìn)行到步驟1120。在步驟1120,確定在sequence_set中是否存在更多的沒有被用于步驟1116的子序列seq。如果有,處理過程進(jìn)行到1116。否則,處理過程結(jié)束。
圖12是一個說明依照本發(fā)明一個示例實(shí)施方案的在sequence_set中識別有效子序列,以及復(fù)制并插入有效子序列到valid_seq的過程(圖9的步驟914)的示意圖。對sequence_set中的每個子序列seq重復(fù)進(jìn)行步驟1210和1212。
對于sequence_set中的一個給定的子序列seq,確定該給定子序列seq當(dāng)前的重復(fù)次數(shù)是否大于或等于min_rep(步驟1210)。如果是,子序列seq,被復(fù)制并被插入到valid_seq中(步驟1212),處理過程進(jìn)行到步驟1214。否則,處理過程進(jìn)行到步驟1214。
在步驟1214中,確定在sequence_set中是否存在更多的子序列seq。如果是,處理過程進(jìn)行到1210。否則,處理過程結(jié)束。
圖13是一個說明依照本發(fā)明一個示例實(shí)施方案的在ongoing_seq中插入一個新的序列的過程(圖6的步驟614)的示意圖。對valid_seq中的每個子序列seq重復(fù)進(jìn)行步驟1310和1 312。
對于一個valid_seq中給定子序列的seq,確定序列當(dāng)前重復(fù)的次數(shù)(seq.total_rep)是否大于目前所發(fā)現(xiàn)的最大子序列的總的重復(fù)次數(shù)(largest.total_rep)(步驟1310)。如果是,那么子序列seq被設(shè)定為largest(步驟1312),處理過程進(jìn)行到步驟1314。否則,處理過程進(jìn)行到步驟1314。
在步驟1314中,確定在valid_seq中是否存在多出子序列seq。如果是,處理過程返回到步驟1310。否則,largest的結(jié)尾位置(largest.ending)被擴(kuò)展,包含當(dāng)前的匹配(l+current_position-1)(即包含該模式的另一個發(fā)生)(步驟1316)。然后,largest的被插入到ongoing_seq(步驟1316),處理過程結(jié)束。
圖14是一個說明依照本發(fā)明一個示例實(shí)施方案的識別sequence_set中重復(fù)次數(shù)最多的子序列和子序列l(wèi)ongest_seq過程(圖X的步驟XXX)的示意圖對于一個valid_seq中給定子序列的seq,確定序列當(dāng)前重復(fù)的次數(shù)(seq.total_rep)是否大于目前所發(fā)現(xiàn)的最大子序列的總的重復(fù)次數(shù)(largest.total_rep)(步驟1410)。如果是,那么序列seq被設(shè)定為largest(步驟1412),處理過程進(jìn)行到步驟1414。否則,處理過程進(jìn)行到步驟1414。
在步驟1414中,確定在valid_seq中是否存在更多的子序列seq。如果是,處理過程返回到步驟1410。否則,處理過程進(jìn)行到步驟1416。
在步驟1416中,確定longest_seq的總的重復(fù)次數(shù)(longest_seq.total)是否大于最大子序列的總的重復(fù)次數(shù)(largest.total_rep)。如果是,則返回longest_seq(步驟1418)。否則,返回largest。
圖15是一個說明依照本發(fā)明一個示例實(shí)施方案的識別復(fù)雜模式的過程(圖2的步驟220)的示意圖。
一個變量i被初始化為1(步驟1510)。根據(jù)有效i模式的識別(圖2的步驟220),產(chǎn)生i+1-模式的候選集(步驟1512)。如果(d1,*,*)和(d2,*,*)是有效的,則(d1,d2,*)、(d1,*,d2)、(d2,d1,*)和(d2,*,d2)是有效2模式的候選集。
確定i+1-模式的候選集是否是空的。如果是,則處理過程結(jié)束。否則,有效i+1-模式連同其最長的相應(yīng)子序列一起被識別(步驟1516)。變量i加1(步驟1518),過程進(jìn)行到步驟1512。
下面將簡要描述本發(fā)明的某些方面和優(yōu)勢。本發(fā)明允許一個模式被局部指定,例如,(d1,*,*)。這樣,有利地提供一個更靈活的非同步周期模型,允許挖掘周期范圍很大的、預(yù)先未知的所有模式。當(dāng)所有模型僅出現(xiàn)在一個事件序列的一個子序列中時,可使用本發(fā)明的模型。而且,該模型可以用于因插入某種隨機(jī)擾動而導(dǎo)致其發(fā)生的方向偏離的所有的模式。提供了一個兩階段的方法,首先通過基于時間間隔的修剪產(chǎn)生潛在的周期,接著是一個派生和核實(shí)候選模式,并定位包含每個模式的最長有效子序列的重復(fù)過程。
應(yīng)該意識到,盡管本發(fā)明所用的一些變量(如valid_seq、sequence_set等子序列的列表)是用隊(duì)列的形式來描述,但相關(guān)技術(shù)領(lǐng)域的一般技術(shù)人員將很容易考慮到許多其它的方法來實(shí)現(xiàn)這些變量,而不會超出本發(fā)明的宗旨和范圍。
盡管這里結(jié)合附圖描述了本發(fā)明的示例實(shí)施方案,應(yīng)當(dāng)清楚,本系統(tǒng)和方法并不局限于這些實(shí)際的實(shí)施方案,該技術(shù)領(lǐng)域的熟練人員可以進(jìn)行其它不同的更改和修正,而不背離本發(fā)明的宗旨和范圍。所有這些更改和修正不應(yīng)超出附加的權(quán)利聲明中所規(guī)定的本發(fā)明的范圍。
權(quán)利要求
1.一種在一個事件序列中識別局部周期模式的方,每一模式包括一個事件序列中的事件列表,該方法包括下列步驟識別事件序列的至少一個子序列和至少一個子序列中的至少一個模式,以便使得至少一個模式在至少一個子序列中的重復(fù)次數(shù)超過一個最小數(shù)目,和至少一個子序列中的至少一個模式的兩次連續(xù)的重復(fù)的間隔時間不超過一個預(yù)先規(guī)定的時間間隔閾值;以及存儲至少一個模式和至少一個子序列兩者中的至少一個。
2.依照權(quán)利要求1的方法,其中一個給定模式中的每個事件是獨(dú)特的與非獨(dú)特的兩者中的一種,每個非獨(dú)特的事件匹配同為任意的清楚事件。
3.依照權(quán)利要求1的方法,其中該方法通過可由機(jī)器讀取的程序存儲設(shè)備來實(shí)現(xiàn),該程序存儲設(shè)備適合實(shí)施由機(jī)器執(zhí)行的指令程序以進(jìn)行該方法的步驟。
4.一種在一個事件序列中識別局部周期模式的方法,每一模式包括一個事件序列中的事件列表,該方法包括下列步驟識別候選模式周期的一個CPP集和候選事件的多個CE集,其中在CPP集中的每個候選模式周期都是對應(yīng)于候選事件的多個CE集中的一個;識別至少一個包括CE集中的候選事件并帶有CPP集中的相關(guān)候選模式具有相同周期的模式,而且,識別包含至少一個模式的事件序列中的至少一個子序列,以便使得至少一個模式在至少一個子序列中超過最小的重復(fù)次數(shù),至少一個子序列中的至少一個模式的兩個連續(xù)的重復(fù)之間的間隔不超過一個預(yù)定的時間間隔閾值;和存儲至少一個模式和至少一個子序列兩者中的至少一個。
5.依照權(quán)利要求4的方法,其中CPP集中每個候選模式周期要比預(yù)先指定的最長周期長度短
6.依照權(quán)利要求4的方法,其中至少一個子序列是包含至少一個模式的最長的事件子序列。
7.依照權(quán)利要求4的方法,其中所述的識別候選模式周期的CPP集和候選事件的多個CE集的步驟包括初始化多個時間間隔計(jì)數(shù)器。每個時間間隔計(jì)數(shù)器與多個事件和周期組合中的一個相關(guān)聯(lián),每一個組合包括來自于CPP集的一個周期和來自于相關(guān)的候選事件CE集中的一個事件;更新每個時間間隔計(jì)數(shù)器的值以反映出一個相關(guān)的事件與上一次相關(guān)事件的發(fā)生之間的時間間隔;和識別事件和周期的組合,以便使得與每個識別的組合相關(guān)聯(lián)的時間間隔計(jì)數(shù)器的值超過最小的重復(fù)次數(shù)。
8.依照權(quán)利要求4的方法,其中多個事件和周期組合的每一個周期長度小于指定的最大的周期長度
9.依照權(quán)利要求4的方法,其中所述的識別候選模式周期的CPP集和候選事件的多個CE集的步驟包括識別單一模式和包括單一模式的子序列,其中每個單一模式僅有一個由事件序列的一個事件來填充的位置;和識別復(fù)雜模式并確認(rèn)其有效,其中每個復(fù)雜模式具有一個以上的由事件序列的一個事件來填充的位置。
10.依照權(quán)利要求9的方法,進(jìn)一步包括核實(shí)單一模式有效性的步驟。
11.依照權(quán)利要求10的方法,其中有效性核實(shí)的步驟包括對于每次發(fā)生的給定單一模式事件修剪子序列集Z中包含的子序列,集Z中每個子序列對應(yīng)于一個事件和周期組合,相應(yīng)的事件和周期組合中的每個周期與一個給定模式相關(guān)聯(lián),給定模式超出集Z中一個給定子序列中的一個最小的重復(fù)次數(shù),以及在給定子序列中的給定模式連續(xù)重復(fù)之間的時間間隔不超過預(yù)定的時間間隔閾值;和根據(jù)集Y中子序列的結(jié)尾位置,更新包含在集Y中的子序列,集Y包括一個子序列表的列表,其中包含在集Y中的每個列表中的子序列具有同樣的結(jié)尾位置。
12.依照權(quán)利要求11的方法,其中所述的修剪集Z中的子序列的步驟包括從集Z中移除那些結(jié)束位置距集Z的一個子序列的給定單一模式中的當(dāng)前位置的距離大于的預(yù)定時間間隔閾值的所有的子序列;和更新一個集X,集X包括一個子序列集W中的一個子序列,集X中的該子序列具有比集W中任何其它子序列都多的給定模式的重復(fù)次數(shù),集W中的每個子序列都是可以進(jìn)一步處理的,當(dāng)集X中的子序列具有比從集Z中移除的子序列少的重復(fù)次數(shù)時,進(jìn)行上述的更新操作。
13.依照權(quán)利要求11的方法,其中更新包含在集Y中的子序列的步驟包括把在事件序列的當(dāng)前處理位置的上一個位置之前結(jié)束的所有子序列從集Y中移除;擴(kuò)展剛好在事件序列中當(dāng)前處理位置的前一個位置處結(jié)束的集Y的子序列,包含進(jìn)一個給定單一模式的當(dāng)前的重復(fù);和通過給定單一模式的一次重復(fù)來擴(kuò)展集Z中最長的子序列,并將該最長子序列插入到集Y中。
14.依照權(quán)利要求13的方法,其中擴(kuò)展恰好在事件序列的當(dāng)前處理位置的前一個位置處結(jié)束的集Y的子序列的步驟包括當(dāng)擴(kuò)展后的子序列的上一個段的重復(fù)次數(shù)超過預(yù)定的閾值時,移除集Y中那些與一個最長子序列相比重復(fù)次數(shù)較少的子序列。
15.依照權(quán)利要求12的方法,進(jìn)一步包括為存儲集Z、Y、X和W中的子序列而維持至少一個數(shù)據(jù)結(jié)構(gòu)。
16.依照權(quán)利要求15的方法,其中該至少一個的數(shù)據(jù)結(jié)構(gòu)是一個隊(duì)列。
17.依照權(quán)利要求15的方法,其中集Z中的每個子序列根據(jù)結(jié)束位置按照升序排列。
18.依照權(quán)利要求15的方法,其中集Y中的每個子序列根據(jù)結(jié)束位置按照升序排列。
19.依照權(quán)利要求9的方法,其中事件序列中的事件是獨(dú)特的和非獨(dú)特的兩者中的一種,所述的識別和核實(shí)復(fù)雜模式的步驟包括從一個有效(i-1)-模式的集J中識別一個候選i-模式的一個集I,每個i-模式包含i個事件,每個(i-1)-模式包含i-1個事件;核實(shí)候選i-模式的集I的有效性;和重復(fù)上述的識別和核實(shí)候選i-模式的集I的步驟,直至集J中的一個子序列為空,并且集J中的每個模式的所有位置都填充上獨(dú)特的事件。
20.依照權(quán)利要求19的方法,其中識別候選i-模式的集I的步驟包括對于集W中的一個給定的有效(i-1)-模式P通過用一個清楚事件替換給定(i-1)-模式P中的一個非清楚事件來識別一個i-模式P′;和當(dāng)用一個非清楚事件替換P′中的一個清楚事件會產(chǎn)生一個有效的(i-1)-模式時,將P′識別為一個候選i-模式,而不能識別出新的i-模式。
21.依照權(quán)利要求4的方法,其中該方法通過可由機(jī)器讀取的程序存儲設(shè)備來實(shí)現(xiàn),該程序存儲設(shè)備適合實(shí)施由機(jī)器執(zhí)行的指令程序以進(jìn)行該方法的步驟。
22.一種在一個事件序列中識別局部周期模式的方法,每一模式包括一個事件序列中的事件列表,該方法包括下列步驟在一個事件序列的一個子序列中指定一個模式的最小重復(fù)次數(shù),和該子序列中該模式連續(xù)重復(fù)間最大的時間間隔;識別事件序列中的事件和包含該模式的事件序列的子序列;和僅存儲模式和子序列,這樣使得一個存儲的模式超出一個存儲子序列內(nèi)的最小重復(fù)次數(shù),存儲子序列內(nèi)的存儲模式的連續(xù)重復(fù)不超出最大的時間間隔。
23.依照權(quán)利要求22的方法,其中該方法通過可由機(jī)器讀取的程序存儲設(shè)備來實(shí)現(xiàn),該程序存儲設(shè)備適合實(shí)施由機(jī)器執(zhí)行的指令程序以進(jìn)行該方法的步驟。
全文摘要
本發(fā)明提供一種在一個事件序列中識別局部周期模式的方法,其中模式包括一個事件序列的事件列表。事件序列的至少一個子序列和至少一個子序列中的至少一個模式被識別,這樣使得至少一個模式在至少一個子序列中超過一個最小的重復(fù)次數(shù),在至少一個子序列中的至少一個模式的連續(xù)的重復(fù)的時間間隔不超過一個預(yù)定的時間間隔限定值。至少一個模式和至少一個子序列兩者中至少一個被存儲起來。
文檔編號G06F17/30GK1327191SQ0112124
公開日2001年12月19日 申請日期2001年6月1日 優(yōu)先權(quán)日2000年6月2日
發(fā)明者W·王, J·楊, P·S-L·余 申請人:國際商業(yè)機(jī)器公司