專利名稱::用于基于內(nèi)容的分割與挖掘的基于系統(tǒng)的方法
技術領域:
:在給定現(xiàn)代計算能力的情況下,比較容易采集和存儲大量數(shù)據(jù),例如事實、數(shù)值、文本等。于是,問題成為如何分析大量數(shù)據(jù),以從不太重要的數(shù)據(jù)中確定重要數(shù)據(jù)。過濾數(shù)據(jù)以確定重要數(shù)據(jù)的過程通常稱作數(shù)據(jù)挖掘。數(shù)據(jù)挖掘指的是釆集數(shù)據(jù)并且從各個角度來分析所挖掘數(shù)據(jù),并匯總?cè)魏蜗嚓P的所得數(shù)據(jù)。在事務數(shù)據(jù)庫中查找頻繁項目集(itemsets)已經(jīng)成為挖掘數(shù)據(jù)時的重要考慮因素。例如,頻繁項目集的挖掘已被用于在顧客的事務數(shù)據(jù)庫中查找有用模式(useflilpatterns)。頻繁項目集挖掘(FIM)是關聯(lián)規(guī)則挖掘(ARM)的基礎,并且已廣泛應用于市場數(shù)據(jù)分析、蛋白序列、網(wǎng)站日志(weblogs)、文本、音樂、股票市場等。一種用于頻繁項目集挖掘的流行算法是頻繁才莫式生長(FP生長)算法。FP生長算法用于挖掘事務數(shù)據(jù)庫中的頻繁項目集。FP生長算法用事務數(shù)據(jù)庫的前綴樹(稱作"FP樹")表示,并且其速度高于例如先驗挖掘算法等的其它挖掘算法。FP生長算法往往描述為遞歸消元方案(recursiveeliminationscheme)。作為預處理步驟的組成部分,F(xiàn)P生長算法按照所規(guī)定閾值將所有項目從不是單獨頻繁的事務中刪除。也就是說,F(xiàn)P生長算法刪除沒有出現(xiàn)在用戶指定最小數(shù)量的事務中的全部項目。在預處理之后,構(gòu)建FP樹,然后,F(xiàn)P生長算法構(gòu)造各頻繁項目的"條件模式庫,,,以構(gòu)造條件FP樹。然后,F(xiàn)P生長算法以遞歸方式來挖掘條件FP樹。通過將后綴才莫式與從條件FP樹生成的頻繁模式級聯(lián),來實現(xiàn)模式生長。由于FP生長算法一直^皮公認為用于頻繁項目集挖掘的強大工具,因此,在并行處理計算機中實現(xiàn)FP生長算法上作了大量的努力研究。實現(xiàn)FP生長主要有兩種方法多樹法和單樹法。多樹法分別地構(gòu)建多個FP樹,它導致許多冗余節(jié)點的引入。圖6示出通過釆用1、4、8、16、32和64個線程(樹)的常規(guī)的多樹法所產(chǎn)生的多個節(jié)點。用于產(chǎn)生圖6的示例數(shù)據(jù)庫是基準數(shù)據(jù)集"accidents",這可見于鏈接"11印://6111^3/1^^11^/6/(1&13/"(最小支持闊值為200,000)。如圖所示,與只有一個線程相比,多樹法將在四(4)個線程上產(chǎn)生兩倍的樹節(jié)點,而在六十四(64)個線程上產(chǎn)生九(9)倍的樹節(jié)點。在多個樹中構(gòu)建冗余節(jié)點的缺點導致極大的存儲器需求,并且有時存儲器不夠大到足以包含多個樹。先前的單方法僅在存儲器中構(gòu)建單個FP樹,但它需要生成一個與各樹節(jié)點關聯(lián)的鎖定,由此限制了可縮放性(scalability)。圖l是根據(jù)一實施例的、包括具有基于內(nèi)容的分割功能性的挖掘應用程序的計算裝置的框圖。圖2A-2B是示出說明根據(jù)一實施例的、由基于內(nèi)容的分割邏輯執(zhí)行的各種邏輯操作的流程圖。圖3表示一實施例的^:測樹(probetree)數(shù)據(jù)結(jié)構(gòu)。圖4A-4D示出根據(jù)一實施例的、頻繁模式(FP)樹的并行構(gòu)建中的第一批步驟。圖5示出根據(jù)一實施例的、探測樹的經(jīng)分割子分支和分組結(jié)果。圖6示出通過采用1、4、8、16、32和64個線程(樹)常規(guī)的多樹法產(chǎn)生的多個節(jié)點。具體實施例方式方法和系統(tǒng)的實施例可用于將數(shù)據(jù)庫或數(shù)據(jù)倉(datastore)的數(shù)據(jù)分割為幾個獨立部分作為數(shù)據(jù)挖掘過程的組成部分。方法和系統(tǒng)使用基于內(nèi)容的分割邏輯,通過構(gòu)建探測結(jié)構(gòu)來分割數(shù)據(jù)。在一實施例中,探測結(jié)構(gòu)包括探測樹及關聯(lián)探測表。一旦例如按照內(nèi)容分割了數(shù)據(jù),所得部分就可被分組并分配到關聯(lián)處理器以進一步處理?;趦?nèi)容的分割邏輯可用于包括共用存儲和分布式內(nèi)存多處理器計算系統(tǒng)的計算系統(tǒng)中,但是并不受此限制。如上所述,在將數(shù)據(jù)分割成獨立部分或分支(例如分離的子分支)之后,則可將各分支或各組分支分配給處理器(或線程)以進一步處理。在一個實施例中,在由主線程進行調(diào)度之后,將各事務分配^^對應處理器,以完成構(gòu)建FP樹的特定分支。根據(jù)FP生長算法,數(shù)據(jù)相關性僅存在于每個子分支內(nèi),而子分支之間不存在相關性。因此,常規(guī)單樹法所需的許多鎖定是不必要的。在一實施例中,根據(jù)事務數(shù)據(jù)庫中的事務的內(nèi)容來分割數(shù)據(jù)庫?;趦?nèi)容的分割可節(jié)省存儲,并消除構(gòu)建FP樹時的許多鎖定。存儲節(jié)省基于若干因素,包括數(shù)據(jù)庫的特性、支持闊值以及處理器的數(shù)量。本文所述的技術提供對于采用多核和其它處理架構(gòu)(processingarchitecture)的數(shù)據(jù)挖掘的有效且有價值的工具。在一實施例中,主/從處理架構(gòu)被用于有效地將處理操作分配給若干處理器(又稱作"線程")。在構(gòu)建FP樹時,主/從架構(gòu)包括主處理器(主線程),而將任何其余處理器(線程)指定為從處理器(從線程)。主線程的任務之一是從數(shù)據(jù)庫加載事務和修剪事務,并將經(jīng)修剪事務分配給各從線程,以進行FP樹的并行構(gòu)建。每個從線程有其自己的事務隊列,并且每當主線程將經(jīng)修剪事務分配給關聯(lián)從線程時,從該隊列中獲得經(jīng)修剪事務。每個從線程處理其已修剪的事務,以構(gòu)建FP樹。這種架構(gòu)允許主線程在將事務傳遞給從線程之前,對事務進行某些初步測量。根據(jù)初步測量的結(jié)果,主線程還可判定如何將事務分配給特定線程。在備選實施例中,所有線程單獨進行工作以用探測結(jié)構(gòu)來構(gòu)建FP樹。在以下描述中,介紹大量具體細節(jié),以提供對系統(tǒng)和方法的實施例的透徹了解并實現(xiàn)對它們的描述。但是,相關領域的技術人員會知道,即使沒有這些具體細節(jié)的一個或多個或者采用其它元件、系統(tǒng)等,也可實施這些實施例。在其它情況下,未示出或者沒有詳細描述眾所周知的結(jié)構(gòu)或操作,以凸顯所公開實施例的主要方面。圖1示出根據(jù)一實施例的計算裝置100,包括具有基于內(nèi)容的分割邏輯102的挖掘應用程序101,在執(zhí)行數(shù)據(jù)挖掘操作時,基于內(nèi)容的分割邏輯102與數(shù)據(jù)倉(或數(shù)據(jù)庫)104交互。下面詳細描述挖掘應用程序101和基于內(nèi)容的分割邏輯102。計算裝置100包括任何計算系統(tǒng),例如手持、移動計算系統(tǒng)、臺式計算系統(tǒng)、膝上型計算系統(tǒng)和其它計算系統(tǒng)。圖1所示的計算裝置IOO稱作多處理器或多核裝置,因為該架構(gòu)包括多個處理器106a-106x??捎行У卦谔幚砥?06a-106x之間分配任務,以免造成個別處理器負擔過重。在其它實施例中,計算裝置100可包括單處理器和其它元件。計算裝置100通常包括系統(tǒng)內(nèi)存108。根據(jù)計算裝置的配置和類型,系統(tǒng)內(nèi)存108可以是易失性(例如隨機存取存儲器(RAM)或其它動態(tài)存儲器)、非易失性(例如只讀存儲器(ROM)、閃速存儲器等)或某種組合。系統(tǒng)內(nèi)存108可包括操作系統(tǒng)110和一個或多個應用程序/沖莫塊112。計算裝置IOO可包括附加計算機存儲裝置114,例如磁存儲裝置、光存儲裝置等。計算機存儲裝置包括但不限于RAM、ROM、電可擦可編程只讀存儲器(EEPROM)、閃速存儲器或其它存儲器技術,光盤ROM(CD-ROM)、數(shù)字多功能光盤(DVD)或其它光學存儲裝置,盒式磁帶、磁帶、磁盤存儲裝置或其它磁存儲裝置,或者可用于存儲信息的任何其它介質(zhì)。計算裝置100還可包含一個或多個輸入裝置116和一個或多個輸出裝置118。計算裝置100還可包含通信連接120,它允許計算裝置100例如通過有線和/或無線網(wǎng)絡或者其它網(wǎng)絡與其它計算裝置122、處理器和/或系統(tǒng)進行通信。圖2A-2B是示出說明根據(jù)一實施例的、包括基于內(nèi)容的分割邏輯102的挖掘應用程序101的各種邏輯操作的流程圖。對于該實施例,處理器106a(本文中稱作主處理器)執(zhí)行包括基于內(nèi)容的分割邏輯102的挖掘應用程序101,如下面所描述。下表1的事務數(shù)據(jù)庫與流程圖可結(jié)合使用,以用挖掘應用程序101和基于內(nèi)容的分割邏輯102來提供說明性示例。例如,表l中的各項事務可代表一系列項目,例如作為基于網(wǎng)絡的事務的一部分而購買的項目等,其中各事務項目用唯一的字母表示。表1<table>tableseeoriginaldocumentpage10</column></row><table>在200,挖掘應用程序101使用基于內(nèi)容的分割邏輯102,并通過掃描例如表1中的事務數(shù)據(jù)庫等的事務數(shù)據(jù)庫的前一半來開始運行,以根據(jù)所規(guī)定的支持閾值來確定頻繁項目。不同的支持闊值可根據(jù)特定應用來實現(xiàn)。對于此示例,支持閾值為12。在一實施例中,在步驟202,事務數(shù)據(jù)庫的前一半的各事務被掃描,并計算各項目在該掃描中出現(xiàn)的次數(shù)。由于搜索覆蓋該事務數(shù)據(jù)庫的一半,所以支持閾值六(6)用于根據(jù)數(shù)據(jù)庫的前一半的掃描來創(chuàng)建FP樹的標題表。在步驟204,確定是否已經(jīng)掃描了數(shù)據(jù)庫的前一半。如果沒有,則流程返回到步驟200,并讀取下一事務。如果在步驟204已經(jīng)掃描了數(shù)據(jù)庫的前一半,則在步驟206,邏輯102根據(jù)事務數(shù)據(jù)庫的前一半的掃描來創(chuàng)建滿足最小支持闊值的頻繁項目的標題表。邏輯102還給在第一掃描中標識的頻繁項目指派排序。在一實施例中,邏輯102按照事務數(shù)據(jù)庫中的發(fā)生頻率,來對頻繁項目進行排序。對于此示例,邏輯102按B、A、D、F、G(B^A^D^^G)來對最頻繁項目進行排序。這種排序用來創(chuàng)建標題表和探測結(jié)構(gòu),該結(jié)構(gòu)描述如下。對于此示例,對事務數(shù)據(jù)庫的前一半的掃描導致對被插入標題表(表2)的各個項目的標識。如以下所述,在初始掃描事務數(shù)據(jù)庫的前一半之后,標題表包括經(jīng)標識的頻繁項目項目B出現(xiàn)八(8)次,項目A出現(xiàn)七CO次,項目D出現(xiàn)七CO次,項目F出現(xiàn)六(6)次,以及項目G出現(xiàn)六C6)次。表2<table>tableseeoriginaldocumentpage11</column></row><table>在步驟208,邏輯102標識用于構(gòu)建探測結(jié)構(gòu)的頻繁項目。在一實施例中,邏輯102標識用于構(gòu)建包括探測樹及關聯(lián)探測表的探測結(jié)構(gòu)的頻繁項目,下面進行描述。對于此示例,項目B、A、D和F標識為要用于構(gòu)建探測樹的項目。在步驟210,邏輯102創(chuàng)建探測樹的根節(jié)點,并開始構(gòu)建空探測表。在步驟212,邏輯102開始用事務數(shù)據(jù)庫中的第一最頻繁項目從根節(jié)點開始由已標識頻繁項目B、A、D和F構(gòu)建探測樹。在步驟214,邏輯102將具有其項目標識(ID)的子代添加到探測樹。在構(gòu)建探測樹時,邏輯102開始填充空探測表(例如將計數(shù)設置為零,如下所示)。如上所述,通過評估已標識頻繁項目來構(gòu)建探測樹。在步驟216,邏輯102確定是否存在要評估的任何剩余頻繁項目。如果存在剩余項目,則流程返回到步驟212,并按照以上所述繼續(xù)進行。如果不存在剩余項目,則流程進入步驟218。圖3表示探測樹數(shù)據(jù)結(jié)構(gòu)(或探測樹)300,它包括從步驟208-216產(chǎn)生的已標識項目。探測樹和探測表構(gòu)建的更詳細描述如下。根據(jù)一實施例,邏輯102選擇前"M"個已標識頻繁項目來構(gòu)建探測樹及關聯(lián)探測表。因此,探測樹及關聯(lián)探測表包括2M個分支。在實驗中,M=10是對于許多情況的合理選擇。如以下所述,2M個分支可進一步分組,以獲得基本上相等的分組或組塊(chunks)供進一步處理。對于此示例,探測樹300代表已標識頻繁項目(例如B、A、D、F(M^4))以及根據(jù)發(fā)生頻率和內(nèi)容的它們相互之間的事務關系。對于第一最頻繁項目B,邏輯102創(chuàng)建與最頻繁項目B對應的節(jié)點302。邏輯102取下一最頻繁項目A,并創(chuàng)建與頻繁項目A對應的節(jié)點304。邏輯102還創(chuàng)建表明A是B的"子代"的塊306。由于A只是B的子代,因此,邏輯102取下一最頻繁項目D,從而創(chuàng)建與下一最頻繁項目對應的節(jié)點308。邏輯102還在確定對于探測樹300中的B和A各自而言D是B和A的子代的基礎上,創(chuàng)建塊310、312和314。對于此示例的最低最頻繁項目F,邏輯102創(chuàng)建與頻繁項目F對應的節(jié)點316。邏輯102還創(chuàng)建塊318、320、322、324、326、328和330,說明對于探測樹300中的B、A和D各自而言,F(xiàn)是B、A和D的子代。下面對于已標識頻繁項目B、A、D和F示出對應的探測表(表3)。這里,邏輯102將各項目的計數(shù)設置為零,但是不受此限制。探測表(表3)中的各行表示基于內(nèi)容的事務,包括已標識頻繁項目B、A、D和F的一個或多個。數(shù)字"l"用來表示特定項目在包含該一個或多個頻繁項目的事務中出現(xiàn),而數(shù)字"o"用來表示沒有在關聯(lián)事務中出現(xiàn)的一個或多個項目。表3<table>tableseeoriginaldocumentpage13</column></row><table>繼續(xù)參照圖2,在創(chuàng)建探測樹和空探測表之后,流程進入步驟218,其中,邏輯102評估事務數(shù)據(jù)庫的下一事務而繼續(xù)第一掃描。對于本實施例,邏輯102掃描事務數(shù)據(jù)庫的后一半(事務10-18),從而評估每個相應事務。在步驟220,根據(jù)已掃描的事務,邏輯102在探測表中提供計數(shù),并更新滿足最小支持閾值的頻繁項目的標題表。下面示出已更新的探測表(表5)。在步驟222,如果在事務數(shù)據(jù)庫中不再存在其它事務,則流程進入步驟224。否則,如果存在要處理的其它事務,則流程返回到步驟218。根據(jù)以上已標識頻繁項目的排序(B2A2D^^G),邏輯102更新標題表(下表4)。表4<table>tableseeoriginaldocumentpage14</column></row><table>12下面示出已更新的探測表(表5),其中包括從事務數(shù)據(jù)庫的后一半的掃描中產(chǎn)生的計數(shù)字段。各計數(shù)表示在掃描事務數(shù)據(jù)庫的后一半之后包含各已標識頻繁項目的事務的數(shù)量。表5表示在事務數(shù)據(jù)庫的第一掃描之后基于內(nèi)容的事務。表5<table>tableseeoriginaldocumentpage14</column></row><table>在步驟224,各事務或探測樹分支(包含一個或多個已標識頻繁項目)被分配給一個或多個處理器,以進一步處理。探測樹和探測表可描述為事務數(shù)據(jù)的預處理,它用來分割事務數(shù)據(jù)以供數(shù)據(jù)挖掘。根據(jù)一實施例,通過標識由一個或多個項目組成的事務,4笨測表可用來平衡處理負荷,其中各事務包括唯一項目集。更具體來說,如下面所述,邏輯102嘗試平衡工作負荷,工作負荷根據(jù)通過使用探測表和探測樹所標識的特定事務的內(nèi)容及關聯(lián)事務計數(shù)來確定。根據(jù)對探測表的審查,有三(3)個包含已標識頻繁項目B、A、D和F的事務;有兩(2)個包含已標識頻繁項目B、A和D但不包含F(xiàn)的事務;有一個包含已標識頻繁項目B、A和F但不包括D的事務;沒有僅包含已標識頻繁項目B和A的事務;有兩(2)個包含已標識頻繁項目B、D和F但不包括A的事務;有一個包含已標識頻繁項目A的事務。探測表的其余事務可用相似方式確定。如下所述,與探測樹的節(jié)點關聯(lián)的鎖定較少。注意,在常規(guī)的單樹法中,每個FP樹節(jié)點需要一個鎖定。由于探測樹不需要同樣多的鎖定,使用探測樹功能性的系統(tǒng)增加了可縮放性。通過將事務組塊分配給相應處理器(例如106a-106x),使得各處理器各自構(gòu)建FP樹的相應部分(并行構(gòu)建過程),已更新探測表可用來構(gòu)造頻繁沖莫式樹(FP樹)。下面描述的分組算法可用來將探測樹的分支分為N組,其中N是可用處理器或線程的數(shù)量。然后,可將一組分支分配給相應的處理器。在挖掘數(shù)據(jù)(包括構(gòu)建FP樹)時,探測樹和探測表成為用于平4軒多個處理器之間的計算負荷的重要工具。在一實施例中,挖掘應用程序101將一組事務分配給特定線程,使得各線程可處理大致相同數(shù)量的事務。將組分配給處理器可使這些處理線程之間的沖突成為最小。如下所述,試探算法可用來將探測表(例如由各行的計數(shù)表示)的分支分為與用來構(gòu)建FP樹并執(zhí)行數(shù)據(jù)挖掘操作的處理器的數(shù)量對應的若干個大約相等的組。例如,假定計算裝置100包括四個處理器106a-106d。根據(jù)一實施例,將一個處理器如處理器106a指定為主處理器,而將其余處理器如106b-106d指定為從處理器。主處理器106a讀取各事務,并將各事務分配給特定的從處理器,以構(gòu)建FP樹。在步驟226,為FP樹創(chuàng)建根節(jié)點。在步驟228,主處理器106a使用挖掘應用程序101,以第一事務開始再一次掃描事務數(shù)據(jù)庫。在步驟230,主處理器106a將各事務分配給特定從處理器。在步驟232,各從處理器讀取由主處理器106a發(fā)送的各事務。在步驟234,各從處理器將其修剪項目集插入全FP樹。在步驟236,挖掘應用程序101確定全數(shù)據(jù)庫的各事務是否已經(jīng)被讀取和分配。如果全數(shù)據(jù)庫的各事務已經(jīng)^皮讀取和分配,則流程進入步驟240,并且挖掘應用程序101開始頻繁才莫式的FP樹的挖掘。如果全數(shù)據(jù)庫的各事務尚未被讀取和分配,則流程返回到步驟228。如果沒有要處理的更多事務,則流程繼續(xù)進行到步驟240,否則流程返回到步驟232。在圖4A-4D中示出FP樹的分布和并行構(gòu)建。如上所述,試探算法可用于將探測樹的事務分為基本上相等的組,以由四個處理器(三個從處理器構(gòu)建FP樹的相應部分)進行處理。對于此示例,挖掘應用程序101使用試探算法將探測樹的分支分為三組,因為有三個從處理器。根據(jù)一實施例,該試探算法假定Vi是包含屬于第i組的所有組塊的向量。Ci是第i組的事務的數(shù)量(Vi的大小)。目標是將事務分配到(T-1)個組,使每組中事務的總數(shù)大致相等。該算法可表示如下<formula>formulaseeoriginaldocumentpage16</formula>目的是找到V,以使f為最小。輸入為P={Pl,P2,...,Pm}。輸出為即,只于于各Pi:Findj,Cj=min(Ck,k-l,2,…,T-l)Vj=VjUchunkiCj-Cj+sizeof(chunki)ReturnV.因此,在使用試探算法后,第一組包括含項目B、A、D和F的三(3)個事務。第二組包括有項目B、A、D但無項目F的兩(2)個事務以及有項目B、A、F但無項目D的一(1)個事務(共三(3)個事務)。第三組包括有B、D、F但無項目A的兩(2)個事務以及有項目A但無項目B、D、F的一(1)個事務(共三(3)個事務)。探測樹中的其它分支沒有計數(shù)(參見探測表),因此邏輯102僅根據(jù)試探算法的結(jié)果來分配上述五(5)個分支的分組。根據(jù)以上描述,主處理器106a將第一組分配給第一從處理器106b,將第二組分配給第二從處理器106c,并將第三組分配給第三從處理器106d,以并行構(gòu)建FP樹。圖4A-4D示出由三個從處理器106b-106d并行構(gòu)建FP樹中的第一步驟。在如上所述構(gòu)建了FP樹的標題表和根節(jié)點之后,主處理器106a讀取第一事務(A,B,C,D,E),從而按照標題表內(nèi)容將其修剪為(B,A,D)。對于此示例,主處理器106a根據(jù)基于試探算法的分組、探測樹和上述的探測表,將(B,A,D)分配給從處理器106c。如圖4A所示,在接收到經(jīng)修剪項目(B,A,D)之后,從處理器106c依次創(chuàng)建節(jié)點B、A和D。從處理器106c設置從處理器106c的對應節(jié)點鏈接(表示為虛線),并且還將各節(jié)點計數(shù)設為一(l)。主處理器106a讀取第二事務(F,B,D,E,G),按照標題表內(nèi)容將它修剪成(B,D,F,G)。然后,主處理器106a將(B,D,F,G)分配給從處理器106d。此后,如圖4B所示,通過依次創(chuàng)建如圖4B所示的節(jié)點D、F和G,從處理器106d將經(jīng)修剪事務(B,D,F,G)插入FP樹。從處理器106d設置對應的節(jié)點鏈接,對于D、F和G將節(jié)點計數(shù)設為等于一(l),而將B的節(jié)點計數(shù)加一(l)。主處理器106a讀取第三事務(A,B,F,G,D),按照標題表內(nèi)容將它修剪成(B,A,D,F,G)。然后,主處理器106a將經(jīng)修剪事務(B,A,D,F,G)分配給從處理器106b。此后,通過依次創(chuàng)建節(jié)點F和G,并設置對應的節(jié)點鏈接,從處理器106b將經(jīng)修剪事務(B,A,D,F(xiàn),G)插入FP樹,如圖4C所示。從處理器106b對于F和G將節(jié)點計數(shù)設為等于一(l),而對于公共路徑中的節(jié)點B、A和D將節(jié)點計數(shù)加一(l)。主處理器106a讀取第四事務(B,D,A,E,G),按照標題表內(nèi)容將它修剪成(B,A,D,G)。然后,主處理器106a將經(jīng)修剪事務(B,A,D,G)分配給從處理器106c。此后如圖4D所示,通過創(chuàng)建節(jié)點G,并設置對應的節(jié)點鏈接,從處理器106c將修剪事務(B,A,D,G)插入FP樹。對于節(jié)點G從處理器106c將節(jié)點計數(shù)設為等于一(1),而對于公共路徑中的B、A和D將節(jié)點計數(shù)加一(l)。主處理器106a繼續(xù)掃描事務數(shù)據(jù)庫,并如上所述將各事務分配給相應的從處理器。各從處理器將經(jīng)修剪事務插入FP樹,直到構(gòu)建了包括代表鏈接和節(jié)點計數(shù)的全FP樹,如上所述。在一實施例中,當創(chuàng)建FP樹時,多個處理器在處理不同事務的同時可不訪問有鎖定的節(jié)點。因此,鎖定可阻止多個線程試圖在FP樹中創(chuàng)建重復節(jié)點。在一實施例中,F(xiàn)P樹由系統(tǒng)內(nèi)存108構(gòu)建并存儲到系統(tǒng)內(nèi)存108中。在另一實施例中,F(xiàn)P樹由分布式內(nèi)存系統(tǒng)構(gòu)建并存儲到分布式內(nèi)存系統(tǒng)中。在構(gòu)建了FP樹之后,可對于已標識頻繁項目來挖掘特定模式的FP樹??捎酶鞣N數(shù)據(jù)挖掘算法來挖掘FP樹。例如,可用FP樹來執(zhí)行基于條件(前綴)的挖掘操作。根據(jù)一實施例,F(xiàn)P樹的挖掘可匯總?cè)缦?。各處理器可用來單獨挖掘FP樹的頻繁項目。對于各頻繁項目,挖掘過程構(gòu)造"條件模式庫"(例如"子數(shù)據(jù)庫",它由隨后綴模式同現(xiàn)的FP樹中的前綴路徑集合構(gòu)成)。在構(gòu)造了條件FP樹之后,按照已標識頻繁項目以遞歸方式挖掘條件FP樹。如上所述,基于內(nèi)容的分割邏輯102用來將數(shù)據(jù)庫或數(shù)據(jù)倉的數(shù)據(jù)分割為幾個獨立部分,以便隨后分配給一個或多個處理器。基于內(nèi)容的分割邏輯102用來相等地分割數(shù)據(jù)庫,使得在構(gòu)建和挖掘FP樹時負荷得以平衡(例如,各處理器獲得大致等量的要處理事務),但并不受此限制。另一示例說明包括基于內(nèi)容的分割邏輯102的挖掘應用程序101的使用。假定數(shù)據(jù)庫包含八(8)個項目(A,B,C,D,E,F,G,H)。對于此示例,數(shù)據(jù)庫包括總共八十(80)個事務。在檢查數(shù)據(jù)庫的第一部分例如前一半之后,確定項目A、B和C是數(shù)據(jù)庫的第一部分中的前三(3)個最頻繁項目。隨后,可按照前M個最頻繁項目的內(nèi)容來分割事務。如上所述,可以部分根據(jù)可用處理器量來試探地確定M。對于當前示例,M設置成等于三(1V^3),因為有3個最頻繁項目。因此,可按照項目A、B和C將事務分割成2M即八(8)個基于內(nèi)容的組塊?;趦?nèi)容的組塊等于FP樹中的子分支。下表6給出事務分配的一個示例(例如,101表示關聯(lián)組塊包含具有項目A和C但沒有B的事務)。表6<table>tableseeoriginaldocumentpage19</column></row><table>假定有兩個可用從線程,基于內(nèi)容的分割邏輯102將八個組塊分為兩組,每個從線程一組。如上所述,試探搜索算法可用來將八個組塊分為兩組,其中各組包含大致相同數(shù)量的事務。兩個得到的組可包括第一組組塊{111,110,101,011}和第二組組塊{100,101,001,000},其中各組包含四十(40)個事務。圖5示出經(jīng)分割子分支和分組結(jié)果。虛線圍繞的兩個子分支表示分配給笫一線程的第一組組塊。實線圍繞的其它兩個子分支表示分配給第二線程的第二組組塊。由各線程處理等量的事務導致在構(gòu)建FP樹時負荷的有效平衡。此外,在用探測樹進行分割后,對于并行樹構(gòu)建過程中可能的共用節(jié)點(例如,只包括FP樹中的a、b、c)僅需要八(8)(2勺個鎖定。與常規(guī)構(gòu)建的256(28)=256個鎖定形成對照。因此,預先分割導致鎖定數(shù)量的極大減少(例如,power(2,items_num)-power(2,N))。另外,基于內(nèi)容的分割可以不需要如同常規(guī)多樹法中那樣的節(jié)點復制。因此,基于內(nèi)容的分割和分組導致線程之間良好的負荷平衡,同時實現(xiàn)高的可縮放性。下表7根據(jù)基于內(nèi)容的樹分割和多樹法之間的比較來提供實驗結(jié)果。測試平臺是16處理器共享內(nèi)存系統(tǒng)。測試基準數(shù)據(jù)庫"accidents"可直接從鏈接"http:〃fimi.cs.helsinki.fi/data/"下載,而數(shù)據(jù)庫"bwebdocs"和"swebdocs"從數(shù)據(jù)庫"webdocs"剪下。表7<table>tableseeoriginaldocumentpage20</column></row><table>表7示出整個應用程序的運行時間,包括第一掃描、樹構(gòu)造過程和挖掘階段。下表8示出各方法對于全部三個基準數(shù)據(jù)庫上的挖掘階段的運行時間。<table>tableseeoriginaldocumentpage21</column></row><table>如以上表7和表8所示,大家看到,樹分割法在總運行時間上具有可與舊的多樹法相比擬的性能,只是在挖掘階段稍好一些。結(jié)果是合理的在第一和第二階段,樹分割法對于各事務根據(jù)其內(nèi)容進行附加分割。但是,樹分割法應當在挖掘階段略快,因為沒有重復樹節(jié)點。本文所述的方法和系統(tǒng)的方面可實現(xiàn)為編程到任何各種電路的功能性,包括如現(xiàn)場可編程門陣列("FPGA")等可編程邏輯裝置("PLD")、可編程陣列邏輯("PAL")裝置、電可編程邏輯和存儲器裝置及基于標準單元的裝置以及專用集成電路。實現(xiàn)方式還可包括具有存儲器(例如EEPROM)的微控制器、嵌入微處理器、固件、軟件等。另外,可實現(xiàn)在具有基于軟件的電路模擬的微處理器、離散邏輯(順序和組合)、定制裝置、模糊(神經(jīng))邏輯、量子器件(quantumdevices)以及上述裝置類型的任一種的混合中。當然,基礎器件工藝可通過各種元件類型來實現(xiàn),例如互補金屬氧化物半導體("CMOS")等金屬氧化物半導體場效應晶體管("MOSFET")工藝、例如發(fā)射極耦合邏輯("ECL")等雙極型工藝、聚合物技術(例如硅共軛聚合物和金屬共軛聚合物金屬結(jié)構(gòu))、混合才莫擬和數(shù)字工藝等。本文中一般使用的術語"處理器"指的是任何邏輯處理單元,例如一個或多個中央處理器("CPU")、數(shù)字信號處理器("DSP")、專用集成電路("ASIC,,)等。雖然本文中一般使用術語"元件,,,但是大家要理解,"元件"包括電路、元件、模塊和/或電路、元件和/或模塊的任何組合,因為這些術語是本領域已知的。按照其行為、寄存器傳送、邏輯元件和/或其它特性,本文所公開的各種元件和/或功能可用任何數(shù)量的硬件、固件的組合來描述,和/或描述為各種機器可讀或計算機可讀介質(zhì)中包含的數(shù)據(jù)和/或指令??砂@類格式化數(shù)據(jù)和/或指令的計算機可讀介質(zhì)包括(但不限于)各種形式的非易失性存儲介質(zhì)(例如光、磁或半導體存儲介質(zhì)),以及可用于通過無線、光或有線信令介質(zhì)或者它們的任何組合來傳送這類格式化數(shù)據(jù)和/或指令的載波。由載波來傳送這類格式化數(shù)據(jù)和/或指令的示例包括(但不限于)通過互聯(lián)網(wǎng)和/或其它計算機網(wǎng)絡、經(jīng)由一個或多個數(shù)據(jù)傳輸協(xié)議的傳送(上載、下載、電子郵件等)。除非上下文明確要求,在整個描述和權利要求書中,詞語"包括"、"包含"等要從包含在內(nèi)的意義上來理解,這與排他或窮舉的意義相反,也就是說,應在"包含但不限于"的意義上理解。使用單數(shù)或復數(shù)的詞語還分別包括復數(shù)或單數(shù)。此外,詞語"本文"、"以下"、"以上"、"下面"以及相似意義的詞語提及的是本申請的總體而不是本申請的任何特定部分。當詞"或者"用于提到兩個或更多項目的列表時,該詞涵蓋該詞的如下全部解釋列表中的項目的4壬一個;列表中的所有項目;以及列表中的項目的任何組合。所示實施例的以上描述不是窮舉的或者受本公開限制的雖然本文為了進行說明而描述了系統(tǒng)和方法的具體實施例及示例,但相關領域的技術人員當知,可進行各種等效修改。本文所提供的理論可適用于其它系統(tǒng)和方法,而不是4又用于以上所述的系統(tǒng)和方法??山M合以上所述各種實施例的元件和動作以提供其它實施例??筛鶕?jù)以上詳細描述對方法和系統(tǒng)進行這些及其它變更。一般來說,以下權利要求中所使用的術語不應理解為對說明書和權利要求書中公開的具體實施例,而是應當理解為包括本申請權利要求項下操作的所有系統(tǒng)和方法。因此,所述方法和系統(tǒng)不受本公開限制,其范圍完全由權利要求書規(guī)定。盡管以某些權利要求的形式展示了某些形態(tài),但是本發(fā)明人考慮的是任何數(shù)量的權利要求形式的各個形態(tài)。因此,本發(fā)明人保留在提交本申請后添補附加權利要求的權利,從而為其它形態(tài)追補這樣的附加權利要求。權利要求1.一種挖掘數(shù)據(jù)的系統(tǒng),包括包含具有若干項目的數(shù)據(jù)的數(shù)據(jù)倉;挖掘所述數(shù)據(jù)倉中的數(shù)據(jù)的挖掘應用程序,所述挖掘應用程序包含邏輯,所述邏輯在被執(zhí)行時執(zhí)行以下步驟標識所述數(shù)據(jù)倉的若干頻繁項目;根據(jù)已標識頻繁項目的數(shù)量來計算探測結(jié)構(gòu);以及按照所述探測結(jié)構(gòu)的內(nèi)容來分割所述數(shù)據(jù);其中,所述挖掘應用程序用所述探測結(jié)構(gòu)來構(gòu)建頻繁模式樹(FP樹);以及存儲所述探測結(jié)構(gòu)和所述FP樹的存儲器。2.如權利要求l所述的系統(tǒng),其中,所述數(shù)據(jù)倉的數(shù)據(jù)包含若干事務,其中各事務包含在標識所述數(shù)據(jù)倉的所述頻繁項目時由所述邏輯標識的唯一的項目序列。3.如權利要求2所述的系統(tǒng),其中,所述邏輯根據(jù)所述已標識頻繁項目的內(nèi)容來分割事務以獲得所述探測結(jié)構(gòu),其中所述探測結(jié)構(gòu)包括所述已標識頻繁項目和一個或多個基于內(nèi)容的事務的發(fā)生次數(shù)的組合。4.如權利要求3所述的系統(tǒng),其中,所述邏輯根據(jù)所述數(shù)據(jù)倉中各已標識項目的發(fā)生頻率將所述已標識頻繁項目排序。5.如權利要求3所述的系統(tǒng),還包括試探算法,其中,所述試探算法將所述一個或多個基于內(nèi)容的事務分為大致相等的組。6.如權利要求l所述的系統(tǒng),還包括主處理器和一個或多個從處理器,其中,所述主處理器將一組事務分配給所述一個或多個從處理器,以構(gòu)建所述FP樹。7.如權利要求6所述的系統(tǒng),其中,所述一個或多個從處理器根據(jù)對基于內(nèi)容的事務的分組來構(gòu)建所迷FP樹的一部分。8.如權利要求7所述的系統(tǒng),其中,所述多個處理器挖掘所述FP樹,以確定關于所述數(shù)據(jù)倉的項目的唯一信息。9.如權利要求l所述的系統(tǒng),還包括多核系統(tǒng)架構(gòu)。10.—種挖掘數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括包含若干事務的數(shù)據(jù)庫;對所述數(shù)據(jù)庫執(zhí)行挖掘操作的至少一個處理器,所述至少一個處理器對所述事務運行基于內(nèi)容的分割邏輯,其中,所述基于內(nèi)容的分割邏輯根據(jù)基于若千已標識頻繁項目的內(nèi)容來分割所述事務,以獲得探測結(jié)構(gòu);以及存儲所述探測結(jié)構(gòu)的存儲器。11.如權利要求10所述的系統(tǒng),所述探測結(jié)構(gòu)還包括探測樹和探測表,其中,所述探測樹和探測表還包括2M個分支,其中M對應于已標識頻繁項目的數(shù)量。12.如權利要求11所述的系統(tǒng),其中,所述存儲器還包括存儲所述探測樹和探測表的共享內(nèi)存。13.如權利要求11所述的系統(tǒng),還包括以遞歸方式挖掘所述數(shù)據(jù)庫的多個處理器,其中,各處理器根據(jù)對所述2M個分支的分組和分配來分攤基本上相等的負荷。14.如權利要求13所述的系統(tǒng),所述多個處理器還包括主處理器和至少一個從處理器以執(zhí)行挖掘操作,其中,在用所述探測結(jié)構(gòu)來構(gòu)建頻繁才莫式樹(FP樹)時,所述主處理器將操作分配給所述至少一個從處理器。15.—種用于挖掘數(shù)據(jù)庫的數(shù)據(jù)的方法,包括標識所述數(shù)據(jù)庫的頻繁項目;根據(jù)所述已標識頻繁項目來構(gòu)建探測結(jié)構(gòu),其中,所述探測結(jié)構(gòu)的各分支包括若干基于內(nèi)容的已標識頻繁項目;根據(jù)各分支的所述內(nèi)容對所述探測結(jié)構(gòu)的分支進行分組;以及根據(jù)所述探測結(jié)構(gòu)來構(gòu)建頻繁^^莫式樹(FP樹)。16.如權利要求15所述的方法,還包括在標識所述數(shù)據(jù)庫的頻繁項目時掃描所述數(shù)據(jù)庫的第一部分,并且在構(gòu)建所述探測結(jié)構(gòu)時掃描所述數(shù)據(jù)庫的第二部分,其中,所述探測結(jié)構(gòu)包括在掃描所述數(shù)據(jù)庫的第二部分之后與所述探測結(jié)構(gòu)的各分支關聯(lián)的若干計數(shù)。17.如權利要求15所述的方法,還包括構(gòu)建所述探測結(jié)構(gòu)以包括探測樹和探測表,并用所述探測樹和探測表來構(gòu)建所述FP樹,用于挖掘所述FP樹以確定頻繁數(shù)據(jù)^t式。18.如權利要求15所述的方法,還包括在構(gòu)建所述FP樹之前,將各組分支分配給關聯(lián)處理器。19.如權利要求18所述的方法,還包括用主處理器將各組分支分配給一個或多個從處理器,并用所述一個或多個從處理器來構(gòu)建所述FP樹。20.如權利要求15所述的方法,還包括根據(jù)所述已標識頻繁項目的內(nèi)容來分割所述數(shù)據(jù)庫以獲得所述探測結(jié)構(gòu),其中,所述探測結(jié)構(gòu)包括所述已標識頻繁項目和一個或多個基于內(nèi)容的事務的發(fā)生次數(shù)的組合。全文摘要提供用于將數(shù)據(jù)庫或數(shù)據(jù)倉的數(shù)據(jù)分割為幾個獨立部分而作為數(shù)據(jù)挖掘過程的組成部分的方法和系統(tǒng)。所述方法和系統(tǒng)使用具有基于內(nèi)容的分割邏輯的挖掘應用程序來分割數(shù)據(jù)。數(shù)據(jù)一旦分割,所分割的數(shù)據(jù)就可被分組并分配到關聯(lián)處理器以進一步處理。挖掘應用程序和基于內(nèi)容的分割邏輯可用于計算系統(tǒng)中,其中包括共享內(nèi)存和分布式內(nèi)存多處理器計算系統(tǒng)。還描述了其它實施例并提出了權利要求。文檔編號G06F17/30GK101427248SQ200680054391公開日2009年5月6日申請日期2006年4月27日優(yōu)先權日2006年4月27日發(fā)明者C·賴,W·胡申請人:英特爾公司