頻繁項集的產生
格結構(lattice structure)常常用來表示所有可能的項集。

發現頻繁項集的一個原始方法是確定格結構中每個候選項集的支持度。但是工作量比較大。另外有幾種方法可以降低產生頻繁項集的計算復雜度。
- 減少候選項集的數目。如先驗(apriori)原理,是一種不用計算支持度而刪除某些候選項集的方法。
- 減少比較次數。利用更高級得到數據結構或者存儲候選項集或者壓縮數據集來減少比較次數。
先驗原理(Apriori)
使用支持度對候選項集進行剪枝。
先驗原理:如果一個項集是頻繁的,則它的所有子集也一定是頻繁的。

相反,如果一個項集是非頻繁的,則它所有的超集都是非頻繁的,這種基於支持度度量修剪指數搜索空間的策略稱為基於支持度的剪枝,依賴於一個性質,即一個項集的支持度決不會超過它的自己的支持度,這個性質稱為反之尺度度量的反單調性(anti-monotone)。

Apriori算法的頻繁項集產生
Apriori算法是第一個關聯規則挖掘算法,它開創性地使用基於支持度的剪枝技術,系統地控制候選項集指數增長。
算法:
- 初始通過單遍掃描數據集,確定每個項的支持度,得到所有頻繁1-項集的集合F1.
- 迭代地使用上一步得到的k-1項集,產生新的候選k項集。
- 為了對候選項的支持度技術,算法需要再次掃描一遍數據集。
- 計算候選項的支持度,山區支持度小於minsup的左右后選集。
- 當沒有新的頻繁項集產生,算法結束。

Apriori算法的頻繁項集產生的部分有兩個重要的特點:(1)逐層算法,從頻繁1-項集到最長的項集,每次遍歷項集格中的一層。(2)它使用產生-測試(generate-and-test)策略來發現頻繁項集,每次迭代后的候選項集都由上一次迭代發現的頻繁項集產生。算法總迭代次數為\(k_{max+1}\),其中\(k_{max}\)為頻繁項集最大長度。
候選的產生與剪枝
剪枝:考慮候選k項集\(X={i_1,i_2,i_3……}\),如果X的一個真子集非頻繁,則X將會被剪枝。對於每一個候選k-項集,確保\(X-{i_n}\)都是頻繁的,該操作的復雜度是O(k),然而並不需要檢查給定候選項集的所有k個子集。如果k個子集中的m個用來產生候選項集,則候選項集剪枝時只需要檢查剩下的k-m個子集。如{a, b, c, d}項集,正常情況下需要檢查{a, b, c}, {a, b, d}, {a, c, d}, {b, c, d}都是頻繁項集,但是如果a,b 是用來產生后選集的,則說明它們是頻繁的,因此主要檢查{a, b, c}和{a, b, d}是頻繁項集。
候選產生
- 應當避免產生太多不必要的后選集,如果一個候選項集的子集是非頻繁的,則該后選集肯定是非頻繁的。
- 確保候選項集的集合完整性,即產生候選項集過程沒有遺漏任何頻繁項集。
- 不應當產生重復的候選項集。
蠻力方法:把所有的k-項集都看做可能的候選集,然后使用候選剪枝除去不必要的候選。但是剪枝開銷比較大。
\(F_{k-1} \times F_1\)方法:用其他頻繁項來擴展每個頻繁k-1項集。但是這種方法很難避免產生重復的后選集。其中一種方法是每個頻繁項集的項使用字典序存儲。

使用這種方法得到了些許的改進,但是還是會產生大量不必要的候選,如當{b, c}是不頻繁時,{a, b}和{c}合並是不必要的。有幾種啟發式方法可以減少不必要的后選集。如每個頻繁k項集,它的每一個項都必須在頻繁k-1項集中出現,否則該候選就是非頻繁。
的。
\(F_{k-1} \times F_{k-1}\)方法:當它們的前k-2個項都相同時,合並一對頻繁k-1項集。
令$ A = {a_1, a_2, \cdots, a_{k-1}} \(,滿足\)a_i = b_i (i = 1, 2, \cdots , k-2)$ 並且$ a_{k-1} \neq b_{k-1} $
k-2集合項順序也要相同,並確保是頻繁的。

支持度計數
一種方法是將每個事務所有的候選項集進行比較,並且更新包含正在事務中的候選項集的支持度計數。這種計算的代價是昂貴的。
另一種方法是枚舉每個事務所包含的項集,並利用它們更新對應的候選項集的支持度。

使用Hash樹進行支持度計數
在Apriori算法中,候選集划分為不同的桶,並存放在hash樹中。在支持度計數時,將包含在事務中的項集也散列在相應的桶中,將事務中的每個項集與同一個桶中的候選項集進行匹配。

如下圖所示,將候選集散列在Hash樹的葉結點中,計數時,將事務的項集散列到Hash樹中,如果葉結點包含該項,則計數加一

Apriori計算復雜度
支持度閾值,降低支持度閾值將會導致更多的頻繁項集。隨着支持度閾值的降低,頻繁項集的最大長度將增加,因而掃描數據的次數也將增加。
項數(維度),項數增加,需要更多空間來存儲支持度。
事務數,由於Apriori算法反復掃描數據集的時間增加。
事務平均寬度

時間復雜度
頻繁1-項集產生,需要更新每個項支持度,因而時間為\(O(Nw)\),其中w為事務平均寬度,N為事務數。
候選產生,為了產生k項集,需要合並一對頻繁k-1項集,最好情況是每次能產生一個可行的候選k項集,最壞情況是必須合並上次迭代發現的每對k-1項集。因此開銷為
Hash樹在候選產生時構造,以存放候選項集,由於Hash樹的最大深度為k,將候選項集散列到Hash樹的開銷為\(O( \sum_{k=2}^w k |C_k| )\)。在候選項剪枝的過程中,需要檢驗每個候選k項集的k-2項集時候頻繁,由於在Hash樹上查找一個候選的花費是O(k),因此候選剪枝的時間需要\(O( \sum_{k=2}^w k(k-2) |C_k| )\)。
支持度計數,每個長度為t的事務將差生\(C_{|t|}^k\)個k項集,這也是每個事務遍歷Hash樹的有效次數,若更新每個候選集的支持度計數的開銷是,則支持度計數的總開銷為\(O(N \sum_k C_w^k \alpha_k)\)。
數據挖掘之關聯分析一(基本概念)
數據挖掘之關聯分析二(頻繁項集的產生)
數據挖掘之關聯分析三(規則的產生)
數據挖掘之關聯分析四(連續屬性處理)
數據挖掘之關聯分析五(序列模式)
數據挖掘之關聯分析六(子圖模式)
數據挖掘之關聯分析七(非頻繁模式)
