• 沒有找到結果。

資料流常見項目集變動探勘

本章將說明在固定交易區塊大小之一般化資料流環境下,如何採用滑動視窗 模型進行狀態變動項目集探勘。

3-1 交易資料儲存結構

為了探勘狀態變動項目集,本論文利用兩棵類似 FP-tree 的相同字首樹結構來 儲存交易資料。令滑動視窗大小為 w。以時間 t 為基準點𝑡 ≥ 𝑤,本論文方法將

CTWt中所有單位交易區塊內的交易資料儲存在一棵稱為 Base-Tree 的相同字首樹 結構中。與 FP-tree 類似,Base-Tree 中會記錄一個稱為 HeaderTable 的陣列(array) 結構,其中每一元素(element)儲存以下資訊:

(1) item:記錄一個項目 i。

(2) frequency:項目 i 的出現次數。

(3) link:連結指向 Base-Tree 中對應到項目 i 的節點所形成的串列。

Base-Tree 中每一節點記錄以下欄位資訊:

(1) x:紀錄一個資料項 x。一個節點所對應表示的項目集是從樹的根節點到此節 點中,所經過路徑上節點的項目聯集而成的項目集 P。

(2) f:該節點對應項目集之計數值。

(3) children:連結指向 Base-Tree 中對應到項目集𝑃⋃ 𝑦 的節點,其中 y 為一個資 料項,𝑃⋃ 𝑦 為滑動視窗中出現過之資料集,且 y 的字母出現順序在所有 P 中

包含之資料項目之後。

當時間經過 1 個時間點,t 到 t+1 這段時間內所新增及過時的交易區塊包含之 交易資料,我們會以一棵稱為 Delta-Tree 的相同字首樹結構儲存。Delta-Tree 中同 樣也會記錄一個 HeaderTable 的陣列,儲存資訊與 Base-Tree 的 HeaderTable 類似,

每一元素有一欄位 item 記錄一項目 i,並對項目 i 記錄其新增及過時次數總和為

圖 3.1 Base-Tree 建構情形

以表 3.1 所示之一般化資料流為例,每個時間點輸入一個單位交易區塊。若 視窗大小 w 設為 3,當𝑡 ≤ 3,滑動視窗中尚未被填滿,因此所有單位交易區塊

B1到 B3中的交易資料都會被一一新增至 Base-Tree 中。以 B1為例,B1={BD, BC, CD, BCD, C}共包含 5 筆交易資料。首先將 B1內第一筆交易 BD 中包含之各資料 項 對 應 節點 加 入 至 Base-Tree 中 , 並 將 各 對 應 節 點的 支 持 度計數 值 加 1 ,

(a) 加入 B1中第一筆交易資料 BD 所建立出來的 Base-Tree

(b) 加入 B1中所有交易資料 所建立出來的 Base-Tree

(c) 加入 CTW3中各單位交易區塊所有包含 之交易資料所建立出來的 Base-Tree

HeaderTable 中各對應項目的計數值也加 1,所建立出來的 Base-Tree 如圖 3.1(a) 所示。當單位交易區塊B1中所有交易資料都加入至 Base-Tree 後,所建立出來的 Base-Tree 如圖 3.1(b)所示。直到 t = 3 之單位交易區塊B3輸入後,滑動視窗即為被

填滿行程 CTW3,所建立出來的 Base-Tree 如圖 3.1(c)所示。

圖 3.2 Delta-Tree 建構情形 (a) 移除 B1中第一筆交易資料 BD

所建立出來的 Delta-Tree

(b) 移除 B1中所有交易資料 所建立出來的 Delta-Tree

(c) 新增 B4並移除 B1中所有交易資料所建立出來的 Delta-Tree

當 t4時,由於滑動視窗中最早的交易區塊 B1變為過時而被移除,並且視窗中 新增了一個交易區塊 B4,則我們會對過時及新增的交易資料建立 Delta-Tree。以 移除過時交易區塊 B1為例,B1={BD, BC, CD, BCD, C}共包含 5 筆交易資料。首 先將 B1內第一筆交易 BD 中包含之各資料項對應節點加入至 Delta-Tree 中,並將 各對應節點的支持度計數值減 1 表示過時,HeaderTable 中各對應項目的計數值也 減 1,所建立出來的 Delta-Tree 如圖 3.2(a)所示。當單位交易區塊B1中所有交易資

料都加入至 Delta-Tree 後,所建立出來的 Delta-Tree 如圖 3.2(b)所示。接下來加入 新增交易區塊 B4至 Delta-Tree 的方式與新增交易區塊資料至 Delta-Tree 的方式相 同,因此不再多做說明,最後所建立出來的 Base-Tree 如圖 3.2(c)所示。

3-2 狀態變動項目集探勘處理

根據所建構出之 Base-Tree 及 Delta-Tree,便可以進行狀態變動項目集探勘處 理。本論文所提出探勘狀態變動項目集的方法稱為 Cross-Verify Status Change

Detection 演算法,簡稱為 CV-SCD 演算法。此方法會由 Delta-Tree 得知項目集變 動次數是否增加或減少,藉由到 Base-Tree 中進行對應探勘,判斷某個資料項集 是否為狀態變動項目集。

另將項目集 P 在時間 t 到 t+1 間的變動次數以sup1t 𝑃 表示,當sup1t 𝑃 的值

大於 0,表示 P 在 CTWt+1相較於 CTWt中的支持度為增加,因此若 P 在 CTWt為非常見項目集,則 P 才可能為 t+1 相對於 t 的一個非常見狀態變動項目集。當

sup1t 𝑃 的值小於 0,表示 P 在 CTWt+1相較於 CTWt中的支持度為減少,因此若 P

<1> 𝑃⋃ 𝑥 可能發生狀態改變:當項目集 P 出現在 Delta-Tree 中,其超集合(superset) 𝑃⋃ 𝑥 之sup1t 𝑃⋃ 𝑥 可能大於 0,等於 0,或是小於 0。當 P 在 CTWt中為非常見 項目集,則𝑃⋃ 𝑥 必為 CTWt中的非常見項目集,但是𝑃⋃ 𝑥 在 CTWt+δ中的狀態

有各種可能:常見、非常見,或未出現。因此如表 3.2 中狀況一、二、三、四、

五及七,根據其狀況下sup1t 𝑃⋃ 𝑥 及𝑃⋃ 𝑥 在 CTWt 中的可能狀態組合,顯示 𝑃⋃ 𝑥 有可能發生狀態改變,因此對 P 遞迴探勘檢查其超集合𝑃⋃ 𝑥 。其中狀況

一、四及五,可確定 P 目前的狀態並未發生改變,不需對 SCt+1(P)與 SCmin進行比 較,但是𝑃⋃ 𝑥 仍有可能發生狀態變動,故仍需遞迴探勘檢查 P 的超集合。

<2> 𝑃⋃ 𝑥 不可能發生狀態改變:如表 3.2 中的狀況八,由於 P 在 t 及 t+1 皆為非 常見項目集,𝑃⋃ 𝑥 為 P 的超集,因此𝑃⋃ 𝑥 在 t 及 t+1 亦必為非常見,不可能發

生狀態變動,因此在此種狀況下便不需再對 P 的超集合進行遞迴探勘檢查。

在必頇對 P 的超集合進行遞迴探勘檢查的情況下,CV-SCD 演算法會對 Delta-Tree 建立 P 的 conditional Delta-tree。建立 P 的 conditional Delta-Tree 時,會 利用 HeaderTable 中所儲存該項目對應節點所形成的串列,以及各節點對其父節 點的連結,向樹之根節點方向取得由樹之根節點到該項目之父節點,途中經過之 各項目所形成的資料集,以類似將資料集加入 Delta-Tree 的方式加入至 conditional

Delta-Tree 中,而此資料集的變動次數即為該項目之節點所記錄的次數。如果建 立出來的 conditional Delta-Tree 為空樹,也就是不包含任何資料項集的資料,表 示已經沒有任何項目集產生變動,因此也不必建立 conditional Base-Tree。如果

conditional Delta-Tree 不為空樹,則繼續建立 conditional Base-Tree。

建立 P 的 conditional Base-Tree 時,會先根據在 conditional Delta-Tree 中出現 的項目來決定一項目是否會被新增至 conditional Base-Tree 的節點中。如果沒有出 現在 conditional Delta-Tree 中的項目,表示該項目以及由此項目所組成的項目集 沒有出現變動,因此在建立 conditional Base-Tree 時,便可以藉由移除此一項目來 減少 conditional Base-Tree 所需建立的節點數,加速探勘的進行。建立 conditional

Base-Tree 的方法同樣是利用 HeaderTable 中所儲存該項目對應節點所形成的串列,

以及各節點對其父節點的連結,向樹之根節點方向取得由樹之根節點到該項目之 父節點,途中經過的各項目所形成的資料集,去除此資料集中沒有出現在

conditional Delta-Tree 中的項目後,再以類似將資料集加入 Base-Tree 的方式加入 至 conditional Base-Tree 中,而此資料集的出現次數為該項目之節點所記錄的次 數。

為避免重複檢查相同的項目集,我們假設 P 只會與小於 P 中各項目之字母順 序的項目進行組合,因此 P 之 conditional Delta-Tree 及 conditional Base-Tree 中的 各項目之字母順序皆會小於 P 中各項目之字母順序,如項目 B 只會與 A 進行組 合成為 AB,而項目 C 可與 A、B 進行組合而得到其超集合為 AC、BC,而 BC 可再與 A 組成其超集 ABC。P 的 conditional Delta-Tree 的 HeaderTable 中項目 x 的計數值對應到sup1t 𝑃⋃ 𝑥 ,而由在 P 的 conditional Base-Tree 的 HeaderTable 中項目 x 的對應次數可得到sup1t 𝑃⋃ 𝑥 ,並判斷𝑃⋃ 𝑥 在 CTWt是否為常見項目

集。此時將𝑃⋃ 𝑥 視為表 3.2 中的 P,即可判斷𝑃⋃ 𝑥 是否可能發生狀態變動,並

決定是否需要繼續遞迴建立 conditional Delta-Tree 及 conditional Base-Tree。當所 有遞迴動作皆停止時,即可得出所有的狀態變動項目集。

[範例 3-2]

以圖 3.1(c)所示之 Base-Tree 及圖 3.2(c)之 Delta-Tree 為例,在 SCmin設為 5 的 狀況下說明探勘過程。

以出現在 Delta-Tree 之 HeaderTable 中的各項目檢查情況整理如表 3.3 所示,

在取得 SCt(P)並計算 SCt(P)+ sup1t 𝑃 後,可找出項目集{A}、{E}皆為非常見狀態 變動項目集,項目{C}為常見狀態變動項目集。由於這 5 個項目集的狀況皆必頇 繼續檢查其超集合,因此分別對這 5 個項目集建立其 conditional Base-Tree 及

conditional Delta-Tree。以下對各項目集建立 conditional tree 進行說明,並對其超 集是否可能發生狀態變動進行討論。

表 3.3 項目檢查情況 項目 符合之狀況

編號 sup1t 𝑃 SCt(P) SCt(P)+ sup1t 𝑃 狀態變動

A 狀況二 2 4 6 非常見常見

B 狀況一 1 9 不需計算 仍保持為常見

C 狀況七 -4 8 4 常見非常見

D 狀況四 0 7 不需計算 仍保持為常見

E 狀況三 5 × 5 非常見常見

圖 3.3 B-conditional Base-Tree 及 B-conditional Delta-Tree

對 A 建立其 conditional Delta-Tree 時,可以得到一棵不包含任何項目集的空 樹,因此不需再建立 conditional Base-Tree 對 A 之超集合進行檢查。對 B 建立其

conditional Base-Tree 及 conditional Delta-Tree,結果分別為圖 3.3 中(a)及(b),由圖 中可得知 B 之超集 AB 的 SCt(AB) = 4 為非常見項目集,加上sup1t 𝐴𝐵 =2 後成為 常見項目集,故 AB 符合狀況二,為一非常見狀態變動項目集。接下來再對 AB 遞迴建立 conditional Delta-Tree,AB 之 conditional Delta-Tree 一樣為一棵不包含 任何項目集的空樹,因此不需再繼續對 AB 之超集合進行檢查。

接下來對 C 建立其 conditional Delta-Tree,其結果如圖 3.4(c)所示。在建立其 conditional Base-Tree 時,會移除沒有在 conditional Delta-Tree 中出現的項目,因 此原本建立的 conditional Base-Tree 之結果為圖 3.4(a),移除沒有在 conditional

Delta-Tree 中出現的項目後的 conditional Base-Tree 之結果為圖 3.4(b)。由圖中可 得sup1t 𝐵𝐶 = −2,且 BC 在 conditional Base-Tree 中為一非常見項目集,因此符

合表 3.2 中之狀況八,不需再進行遞迴探勘檢查其超集合。

(a) B conditional Base-Tree (b) B conditional Delta-Tree

圖 3.4 C-conditional Base-Tree 及 C-conditional Delta-Tree

圖 3.5 D-conditional Base-Tree 及 D-conditional Delta-Tree

對 D 建立其 conditional Delta-Tree 及 conditional Base-Tree,並移除 conditional Base-Tree 中未包含在 conditional Delta-Tree 中之項目後,其結果如圖 3.5 所示。

(a) D-conditional Base-Tree (b) D-conditional Delta-Tree

由圖 3.5 可得知,D 之超集 CD 的 SCt(CD) = 5 為常見項目集,加上sup1t 𝐶𝐷 = −1後 成為非常見項目集,故 CD 符合狀況七,為一常見狀態變動項目集。接下來由於 必頇再對 CD 之超集檢查是否有狀態上的變動,因此必頇遞迴建立其 conditional Base-Tree 及 conditional-Delta-Tree 進行檢查。而sup1t 𝐵𝐷 = 0,且 SCt(BD) = 2

為非常見項目集,因此符合狀況五,其超集可能有狀態上的變動。項目集 AD 之 sup1t 𝐴𝐷 = 1,表示變動次數總和新增 1,但是由於 conditional Base-Tree 中並沒

為非常見項目集,因此符合狀況五,其超集可能有狀態上的變動。項目集 AD 之 sup1t 𝐴𝐷 = 1,表示變動次數總和新增 1,但是由於 conditional Base-Tree 中並沒

相關文件