• 沒有找到結果。

1-1 研究背景與研究動機

在資料探勘的領域中,從大量資料中進行常見項目集(frequent itemset)探勘 [17]是一個基本而重要的研究主題,因為找出常見項目集之後,可進一步探勘出 出項目集之間的關聯法則(association rules)[16],或是作為進行分類(classification) 或分群(clustering)中特徵萃取的前處理。以往需要進行探勘的資料大多儲存於靜 態資料庫中,代表性的探勘演算法包括如 Apriori 演算法[16]及 FP-growth 演算法

[1]。

由於電腦科技應用的快速發展,愈來愈多的資料以動態資料流的形式產生,

例如:顧客的消費行為、感測網路、股票行情資訊等等。在這種隨著時間不斷有 新資料產生的資料流環境下,資料可能無法全部儲存在資料庫中,常見項目集也 可能會隨著時間而有所不同;如果必頇對資料庫中的大量交易資料重複掃描進行 探勘,不僅耗費很高的計算成本,且不易即時反應目前的最新狀況。因此近來開 始有許多研究針對動態資料流的環境,提出有效率的探勘常見項目集方法。

許多研究提出不同資料結構的設計來儲存項目集相關出現資訊,以便有效率 的找出資料流中常見項目集(frequent itemset)[5, 7, 11, 14, 15]、最大常見項目集

(maximal frequent itemset)[4]、或是封閉項目集(closed itemset)[2, 3]。針對考慮探 勘資料的時間性,這些探勘方法可分成兩種不同類型[13],一種以地標視窗

(landmark window)為單位進行探勘,另一種則是以滑動視窗(sliding window)為單 位進行探勘。在以地標視窗為單位的前提下,是針對從最初到目前進入資料流中 的所有交易資料來進行探勘,因此累積的歷史資料會隨著時間愈來愈龐大,且探 勘結果受歷史資料影響很大,不易反映最近狀況。在以滑動視窗為單位的作法,

則會設定一個視窗大小 w,表示探勘範圍為目前最近 w 個時間中所輸入的資料,

由於有時間範圍的限制,在一個新的時間點,除了可能有新進資料新增,原視窗 中亦可能有資料變為過時而必頇排除於探勘範圍之外。以滑動視窗為模型的作法 能明確訂出探勘區間,並能即時反應資料最近趨勢,因此為本論文所採用。

目前針對資料流環境的研究大多著重在如何有效率的探勘出常見項目集,但 是對資料流連續進行常見項目集探勘,只是在每一時間不斷列舉出當時出現的常 見項目集,特別在常見項目集數量繁多時,使用者並不容易直覺得知常見項目集 的變化狀況。由於資料流中的資料出現狀況可能會隨著時間改變,因此資料流中 的概念變動(concept drift)探勘亦為一個重要的探討議題[9, 10]。然而以往提出的研 究多是以統計分析的觀點來看資料出現分佈的改變,而較少探討實際常見項目集 的變動探勘。若在初始時間提供常見項目集的探勘結果,接下來的時間點皆提供 有哪些常見項目集不再是常見項目集,以及有哪些新產生的常見項目集,使用者 就可以很快的得知常見項目集合的變動狀況。

欲提供常見項目集變動探勘,在以滑動視窗模型為概念的情況下,直覺的作 法是由各時間點探勘出常見項目集再進行比較,來得知狀態產生變動的項目集。

這個方法雖然簡單,但要列舉並儲存各時間點的常見項目集,不僅需要耗費大量 的計算成本,亦需要相當大的記憶體空間。當狀態改變的項目集相對於所有的常 見項目集是屬於少數的情況下,則連續探勘出的常見項目集有大部分是相同的,

如果能避免重複探勘這些項目集,就能有效節省計算成本及記憶體空間需求。

為解決上述問題,本論文探討如何能快速找出出現頻率狀態上有變動的項目 集之探勘方法,也就是找出由常見變為非常見,或由非常見變為常見的項目集。

另外,為了對這些狀態上有變動的項目集之變動狀況提供一個整體總結資訊,本 論文中進一步探討分析項目集的變動週期,將變動項目集分類成相對常變動或不 常變動,以及相對變動週期較穩定或是不穩定的類別,以提供使用者更多關於項 目集變動特性的資訊。

1-2 文獻探討

1-2-1 常見項目集探勘

探勘靜態資料庫常見項目集的代表方法之一為 R. Agrawal 等人所提出的 Apriori 演算法[16]。此方法會先掃描資料庫一次,先統計長度為 1 的各項目集的 出現次數,並判斷該項目集是否符合使用者所定義的最小支持度門檻值(minimal

support threshold)以得知是否為常見項目集。然後重覆將長度為 L-1 的常見項目集 組合成長度為 L 的候選項目集,再掃描資料庫統計各候選項目集的支持度,從而 判斷候選項目集是否符合最小支持度門檻值。此方法雖然簡單,但是經常會產生

龐大的候選項目集,並在探勘過程中需要多次掃描資料庫,因此相當耗費記憶體 空間及時間。

為了改善 Apriori 演算法會產生龐大候選項目集的缺點,J. Han 等人提出 FP-growth 演算法[1]:該演算法會先掃描資料庫中的資料一次,統計出各項目出 現的次數後,將每一筆交易中所包含項目的順序依各項目出現次數遞減排序,接 下來利用相同字首共享樹中同一路徑節點的方式,將每一筆交易一一新增到樹的 結構中,此樹狀結構稱為 fp-tree。結構中還有一個稱為 HeaderTable 的陣列(array),

用來記錄每一項目出現的次數。依據 fp-tree 中記錄的資訊,FP-growth 演算法利 用使用者所給定的最小支持度門檻值來對 fp-tree 進行常見項目集探勘,其採用

divide-and-conquer 的策略,分別對各單一項目建立 conditional fp-tree,然後根據 該 conditional fp-tree 相對應的 HeaderTable 中統計出的項目出現次數,組出常見 項目集,再繼續以該新產生的常見項目集為基準遞迴探勘出更長的常見項目集。

1-2-2 資料流常見項目集探勘

由於現今應用資料有許多是以資料流的形式產生資料,因此近來有許多研究 針對動態資料流常見項目集探勘提出有效率的方法。在論文[18]中所提出的 Lossy

Counting 演算法為探勘動態資料流常見項目集的代表方法,此方法以地標視窗的 模型為前提,探勘出整個歷史資料流常見項目集的近似集合。Lossy Counting 演 算法會根據使用者所訂定的最小支持度門檻值 s 及最大支持度誤差值ε,將支持

度大於ε的項目集都儲存在 Lattice 的結構當中。存於 Lattice 中的每個節點都會 包含三種資訊(e, f, Δ),e 表示所儲存的資料項目集,f 表示此資料項目集的計數 值,Δ表示最大可能的誤差值。當資料流有新進交易資料進入時,會將此新進資 料所包含的子集出現次數更新到 Lattice 結構中,其對應節點的計數值也加 1,並 同時設定最大可能估算的誤差值Δ。當交易資料新增完成後,為節省記憶空間需 求,只保留支持度大於等於ε的項目集於 Lattice 結構中。此方法保證可以找出所 有的常見項目集,並且其估計出的支持度與實際支持度的誤差一定不會超過ε。

論文[19]則考慮以滑動視窗的模型為前提,每一時間固定有一筆新增交易資 料的假設下,探勘目前視窗中的最近常見項目集。除了新進資料對最近常見項目 集會有所影響外,也必頇將過時資料考慮進去。論文[19]利用 Lossy Counting 演 算法的概念來估算近似的支持度計數值,該方法會記錄資料項目集及支持度計數 值的資訊,並將資料項目集第一次加入 Lattice 中的時間點也記錄下來。如果新增 的交易資料中包含原本不存在於 Lattice 結構中的資料項目集,則在新增節點後,

先利用估算的方式計算出該資料項目集之前在視窗內可能出現次數的最大值,並 且記錄下此項目集加入的時間點。如果該資料項目集已經存在於 Lattice 結構中,

則只要將此項目集的支持度計數值加 1。在過時交易資料的處理,則是將過時交 易資料中對應到 Lattice 結構內所有子集的節點之支持度計數值減 1。如果資料項 目集記錄的加入時間點大於視窗中最早的時間點,則表示此資料項目集先前可能 已經出現過,但是因為先前此項目集為非常見而被刪除,因此其支持度計數值必

頇加上先前可能出現的最大次數;如果估算之後支持度仍然小於ε,則將此項目 集從 Lattice 中移除。

論文[5]亦考慮在動態資料流以滑動視窗模型為前提下,以視窗中的交易資料 為探勘範圍,但假設在每一時間點有一批資料數入,且資料輸入數量可不固定。

論文[5]認為當每個時間點輸入滑動視窗中的批次資料量龐大時,如果要對整個滑 動視窗中的資料進行探勘會需要耗費相當多的時間。因此,論文[5]對視窗內各批 次中的常見項目集以聯集方式記錄於一棵稱為 PT (Pattern Tree)的樹狀結構中,當 有新批次資料集加入的時候,為了得知已存於 PT 中的各項目集是否仍維持為常 見項目集,因此會對新加入的批次資料集建立一棵 FP-tree,然後藉由對 PT 及

FP-tree 同時遞迴建立 conditional-tree 來得知已存在 PT 中各項目集的新增出現次 數,以檢查原本存在 PT 中的項目集是否仍為常見項目集,且可同時探勘出新加 入之批次資料集中的常見項目集。但是對於新加入批次資料集中的常見項目集,

若其不存在 PT 中,則無法得知其在先前時間點出現的次數。因此該論文中設計 一個稱為 aux_array 的陣列結構,用來儲存這些可能新成為常見但卻不確定其出 現次數的項目集,並將該加入時間點記錄下來。使用者可以決定這些項目集是否 可以被延後做常見項目集的判定,以及可延後告知的容忍時間。隨著時間的流逝,

記錄在 aux_array 中的項目集會繼續累計其在滑動視窗新輸入資料中的出現次數,

記錄在 aux_array 中的項目集會繼續累計其在滑動視窗新輸入資料中的出現次數,

相關文件