• 沒有找到結果。

演算法特性

在文檔中 中 華 大 學 (頁 31-35)

第三章 研究設計理念

第一節 演算法特性

本論文所提出的演算法完全不同於之前相關資料探勘研究所用到的資料結 構與搜尋方式。對於儲存交易資料中高頻項目的資料結構,我們提出一個 DFPBT(Descending Frequent Patterns Binary Tree)以及全新的搜尋方式,本演算 法的特性如下:

(1) Left Child-Right Sibling Tree 樹狀結構:

我們在進行資料探勘搜尋資料庫兩次之後,會得到 1 次高頻項目以及每筆 交易資料含有哪些高頻項目,之後我們會把這些高頻項目儲存一樹狀結構中,

此樹狀結構是一左子-右兄樹(Left Child-Right Sibling Tree)[11]。此樹上的每個節 點(Node)最多包含有一個左邊的節點與一個右邊的節點,我們利用樹狀結構裡 左邊的節點為上一個節點的子節點,而右邊的節點和同一層的其他節點是兄弟 節點,也同樣是上一層節點的子節點之特性,建構出有順序性的資料排列樣式。

左節點連結方式則是由項目次數從高到低(Descending)連結,右節點的連結方式 同樣由項目次數從高到低方式連結起來,所以我們的演算法所用到的樹狀結構 上每個節點,包含有項目名稱(Item)、項目次數(Count)、左節點連結(Left Child Link)與右節點連結(Right Sibling Link),如圖 3-1。這樣的排列方式,對於左邊

節點來說,我們可以很清楚地知道每個節點上的次數一定大於或等於其左節點 的次數。

圖 3-1:DFPBT 架構 (2) DFPBT 節省建構所需的空間:

對於樹狀的排列順序,DFPBT 是依項目次數的高低來排列,讀入一筆交易 資料的高頻項目,依項目次數上面圖表 Header Table 次數的高低順序排列後,

開始建立 DFPBT 結構,當讀入的項目已存在於某子樹的節點上,則我們就把 此節點的次數加 1,然後讀入下一個項目;反之,依高頻項目產生另一個分支 的 節 點 , 然 後 再 繼 續 讀 入 下 一 個 項 目 。 例 如 說 : 假 設 DFPBT 裡 已 有 {D:6,C:,B:2,A:1}這個分支,當有一筆高頻項目{C,D,E}排序後得到{D,C,E},讀 入第一個項目 D,因為 DFPBT 第一個項目為{D:6}的節點,因此把此節點的次 數加 1 變成{D:7},然後讀入第二個節點,剛好{D:7}節點的左節點的項目為 C,

因此把 C 的節點次數加 1,再讀入最後一個項目 E,因為{C:3}節點的左節點與 其左節點{B:2}之右節點沒有項目 E 的節點,所以新增一個分支節點,而 E 在 Header Table 的項目次數順序是在 B 之後,所以產生 B 的右節點{E:1}。以這樣 的方式不但可以壓縮讀入的高頻項目,用樹狀結構來呈現所有高頻資訊外,而 且因為 DFPBT 是依高的項目次數降冪排列,所以出現頻率高的項目會很容易 出現重複的節點,就只需項目次數再加 1 而已,不需額外空間儲存新的節點。

因此本論文所提出的用來建構高頻項目的 DFPBT 樹狀結構可以有效節省記憶

體空間。相對地,對於非常龐大資料庫的探勘,能夠有效降低記憶體空間需求,

節省探勘時間。

(3) 合併左子樹(Merge Left Child Tree):

對於資料探勘演算法的研究,有一些學者專家提出一些探勘的資料結構與 搜尋方法,其中如 Jiawei Han 等人所提出的 FP Growth 演算法,此演算法使用 FP Tree 來儲存高頻項目,雖然 FP Tree 同樣使用降冪的排列方式節省建構 FP Tree 所需的空間,但是 FP Growth 在進行探勘的時候,要反覆建立額外的條件 頻繁樣式樹(Conditional FP Tree),所以需要許多的空間來儲存這些條件頻繁樣 式樹。因此本論文提出合併左子樹(Merge Left Child Tree)的方式,此種方式可 避免產生額外的樹狀結構,以節省空間成本。在我們所提出的 DFPBT 結構上,

每個節點的右節點是依照 Header Table 的次數順序排列,因此某個項目節點的 右節點的其他分支不會再出現此項目節點,但是此節點的左節點及左節點的其 他分支可能包含其他節點的分支,因此需要把此節點下的左節點分支合併到此 節點的右節點分支,如圖 3-2。如此才能讓探勘演算法正確挖掘出所有高頻項 目集合。

圖 3-2:Merge Left Child Tree 架構 (4) 快速探勘高頻項目集合:

關於本論文所提出的探勘方式,因為 DFPBT 是依降冪的方式由高到低排

序,因此在搜尋的時候也同樣由 DFPBT 的最上面節點開始搜尋,先搜尋左節 點再搜尋右節點的方式探勘出所有高頻項目集合。而因為 DFPBT 是從次數高 的項目排列到次數低的項目,因此上一層的節點必定大於或等於其左節點的項 目次數。我們可以得到一個規則:某一節點如果沒有符合支持度,其左節點的 所有分支也不會符合支持度的要求。所以我們在進行探勘高頻項目集的時候,

只要搜尋到沒有大於支持度的節點為止,就不用向左節點繼續搜尋下去,因為 其節點有左節點的項目次數必定小於支持度。

(5) 快速回復 DFPBT:

當完成一次資料探勘後,可能需要一段時間之後,才會再進行新增資料的 漸進式探勘,所以我們會把探勘過程所建立的 DFPBT 儲存起來,以方便下一 次探勘時快速得到以前探勘的高頻記錄,為了方便儲存,以及之後 DFPBT 會 越來越大,因此我們使用關聯式資料庫來 DFPBT。如表 3-1。

表 3-1:DFPBT 存入資料庫

表 3-1 為我們上面圖 3-1 所舉例的 DFPBT 儲存入資料庫的結果,表格上的

個項目,所以有 7 個欄位,Support 為此列高頻項目出現的次數。另外,儲存 DFPBT 是使用升冪的排列,我們從此表可以看到我們把會把樹狀右邊節點儲存 在資料庫的前面,比較左邊的節點則儲存在資料庫後面。例如,我們先把 A 開 頭的分支資料放到資料庫前面,再新增 C 開頭的資料,而後是 D 開頭的資料,

因為 DFPBT 建構出的樹狀結構是採降冪方式排列,因此從資料庫依序讀回 DFPBT 時,都是插入到最左邊的節點,而不用一個一個比對到最後一個節點才 新增另一個新節點,這樣可以很快地還原 DFPBT。

(6) 快速新增刪除高頻項目:

為了讓儲存在資料庫的高頻項目資訊能夠快速回復成 DFPBT 樹狀結構,

我們使用升冪的方式把 DFPBT 儲存在資料庫中,也就是說,次數較低的高頻 項目會排在前面,次數較多的高頻項目會排列在後面。而我們在進行漸進式探 勘的時候,大部分都會有一些高頻項目在當時變成了非高頻項目,或者是非高 頻項目在當時變成高頻項目了,而這些高頻變成非高頻的項目或非高頻變成高 頻的項目大部分都出現在出現次數與支持度門檻次數相近的項目上,因此如果 我們把這些最有可能變動的項目放在前面的話,在搜尋的時候就可以很快的找 到這些項目進行新增、刪除,因此可以減少探勘的時間。

(7) 可變動支持度:

在探勘的過程,我們會記錄每個項目的名稱與出現的次數,當新進資料進 來做資料探勘時,我們就可以把項目加總得到最新的高頻項目,再由最新產生 的高頻項目去建構出 DFPBT。因此理論上,本演算法可以依使用者不同的需 求,去更動支持度的設定。

在文檔中 中 華 大 學 (頁 31-35)

相關文件