生成頻繁項集的方法有哪些?
Apriori 演算法有效地解決了頻繁項集生成中的組合爆炸問題。它利用 Apriori 原理縮短了指數級搜尋空間。儘管它顯著提高了效能,但由於需要多次遍歷事務記錄集,該演算法仍然會產生相當大的 I/O 開銷。
對於稠密資料集,Apriori 演算法的效率會因為事務寬度增加而顯著下降。為了克服這些缺點並提高 Apriori 演算法的效率,已經提出了一些方法。
以下是這些方法的概述:
項集格的遍歷 - 尋找頻繁項集可以看作是對項集格的遍歷。演算法使用的搜尋方法決定了在頻繁項集生成階段如何遍歷格的結構。根據格中頻繁項集的組成,一些搜尋方法優於其他方法。
從一般到特殊與從特殊到一般 - Apriori 演算法採用從一般到特殊(general-to-specific)的搜尋方法,其中將頻繁 (k-1)-項集對組合起來以獲得候選 k-項集。如果頻繁項集的最大長度不太長,這種從一般到特殊的搜尋方法是有效的。
從特殊到一般(specific-to-general)的搜尋方法首先尋找更具體的頻繁項集,然後再尋找更一般的頻繁項集。這種方法有利於在稠密事務中查詢最大頻繁項集,其中頻繁項集邊界位於格的底部附近。
Apriori 原則可以用來剪枝一些最大頻繁項集的子集。具體來說,如果一個候選 k-項集是最大頻繁的,則不需要檢查其任何大小為 k-1 的子集。但是,如果候選 k-項集是不頻繁的,則需要在下一輪迭代中檢查其所有 k-1 子集。
另一種方法是結合從一般到特殊和從特殊到一般的搜尋方法。這種雙向方法需要更多的空間來儲存候選項集,但它可以幫助快速識別頻繁項集邊界。
等價類 - 另一種看待遍歷的方法是首先將格劃分為不相交的節點組(或等價類)。頻繁項集生成演算法首先在一個特定的等價類中搜索頻繁項集,然後再轉到另一個等價類。
Apriori 演算法中使用的逐層方法可以看作是根據項集大小對格進行劃分;即演算法首先找到一些頻繁 1-項集,然後再處理更大大小的項集。等價類也可以根據項集的字首或字尾標籤來表示。