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