【十大經典數據挖掘算法】系列
1. 關聯分析
關聯分析是一類非常有用的數據挖掘方法,能從數據中挖掘出潛在的關聯關系。比如,在著名的購物籃事務(market basket transactions)問題中,
TID | Iterms |
---|---|
1 | {Bread, Milk} |
2 | {Bread, Diapers, Beer, Eggs} |
3 | {Milk, Diapers, Beer, Cola} |
4 | {Bread, Milk, Diapers, Beer} |
5 | {Bread, Milk, Beer, Cola} |
關聯分析則被用來找出此類規則:顧客在買了某種商品時也會買另一種商品。在上述例子中,大部分都知道關聯規則:{Diapers} → {Beer};即顧客在買完尿布之后通常會買啤酒。后來通過調查分析,原來妻子囑咐丈夫給孩子買尿布時,丈夫在買完尿布后通常會買自己喜歡的啤酒。但是,如何衡量這種關聯規則是否靠譜呢?下面給出了度量標准。
支持度與置信度
關聯規則可以描述成:項集 → 項集。項集\(X\)出現的事務次數(亦稱為support count)定義為:
其中,\(t_i\)表示某個事務(TID),\(T\)表示事務的集合。關聯規則\(X \longrightarrow Y\)的支持度(support):
支持度刻畫了項集\(X \cup Y\)的出現頻次。置信度(confidence)定義如下:
對概率論稍有了解的人,應該看出來:置信度可理解為條件概率\(p(Y|X)\),度量在已知事務中包含了\(X\)時包含\(Y\)的概率。
對於靠譜的關聯規則,其支持度與置信度均應大於設定的閾值。那么,關聯分析問題即等價於:對給定的支持度閾值min_sup、置信度閾值min_conf,找出所有的滿足下列條件的關聯規則:
\begin{aligned}
& 支持度 >= min\_sup \cr
& 置信度 >= min\_conf \cr
\end{aligned}
把支持度大於閾值的項集稱為頻繁項集(frequent itemset)。因此,關聯規則分析可分為下列兩個步驟:
- 生成頻繁項集\(F=X \cup Y\);
- 在頻繁項集\(F\)中,找出所有置信度大於最小置信度的關聯規則\(X \longrightarrow Y\)。
暴力方法
若(對於所有事務集合)項的個數為\(d\),則所有關聯規則的數量:
如果采用暴力方法,窮舉所有的關聯規則,找出符合要求的規則,其時間復雜度將達到指數級。因此,我們需要找出復雜度更低的算法用於關聯分析。
2. Apriori算法
Agrawal與Srikant提出Apriori算法,用於做快速的關聯規則分析。
頻繁項集生成
根據支持度的定義,得到如下的先驗定理:
- 定理1:如果一個項集是頻繁的,那么其所有的子集(subsets)也一定是頻繁的。
這個比較容易證明,因為某項集的子集的支持度一定不小於該項集。
- 定理2:如果一個項集是非頻繁的,那么其所有的超集(supersets)也一定是非頻繁的。
定理2是上一條定理的逆反定理。根據定理2,可以對項集樹進行如下剪枝:
項集樹共有項集數:\(\sum_{k=1}^d k \times C_{d}^k = d \cdot 2^{d-1}\)。顯然,用窮舉的辦法會導致計算復雜度太高。對於大小為\(k-1\)的頻繁項集\(F_{k-1}\),如何計算大小為\(k\)的頻繁項集\(F_k\)呢?Apriori算法給出了兩種策略:
-
\(F_k = F_{k-1} \times F_1\)方法。之所以沒有選擇\(F_{k-1}\)與(所有)1項集生成\(F_k\),是因為為了滿足定理2。下圖給出由頻繁項集\(F_2\)與\(F_1\)生成候選項集\(C_3\):
-
\(F_k = F_{k-1} \times F_{k-1}\)方法。選擇前\(k-2\)項均相同的\(f_{k-1}\)進行合並,生成\(F_{k-1}\)。當然,\(F_{k-1}\)的所有\(f_{k-1}\)都是有序排列的。之所以要求前\(k-2\)項均相同,是因為為了確保\(F_k\)的\(k-2\)項都是頻繁的。下圖給出由兩個頻繁項集\(F_2\)生成候選項集\(C_3\):
生成頻繁項集\(F_k\)的算法如下:
關聯規則生成
關聯規則是由頻繁項集生成的,即對於\(F_k\),找出項集\(h_m\),使得規則\(f_k-h_m \longrightarrow h_m\)的置信度大於置信度閾值。同樣地,根據置信度定義得到如下定理:
定理3:如果規則\(X \longrightarrow Y-X\)不滿足置信度閾值,則對於\(X\)的子集\(X'\),規則\(X' \longrightarrow Y-X'\)也不滿足置信度閾值。
根據定理3,可對規則樹進行如下剪枝:
關聯規則的生成算法如下:
3. 參考資料
[1] Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introduction to Data Mining.