引言
Apriori算法是一種常用的關聯規則算法,也是最經典的挖掘頻繁項集的算法,其核心是通過連接產生候選項以其支持度然後通過剪枝生成頻繁項集。之外還有FP-Tree、Eclat、灰色關聯法等其他算法。
在這裏通過具體的例子詳細的介紹下Apriori算法原理,以下面數據爲例:第一列表示數據的條目、第二列爲每個條目裏面的數據,我們可以把下表作爲超市商品訂單號和訂單內容。我們主要是通過算法去挖掘頻繁項集也就是隱藏在訂單中的信息,另外我們把每一條數據稱爲事務。
基本概念
-
項:基本數據單元(e.g. 以上數據中的 a、b、c、d、e …).
-
項集:項集是項的集合。(e.g. A {a,b} 、B {c}、 … 含有k項被稱爲k項集,A爲2項集).
-
支持度:項集A、B同時發生的概率(也稱爲相對支持度).
e.g. 若A {a,b} 、B {c},則在10個事務中有3個事務包含 a,b,c 即 . -
置信度:項集A發生,則項集B發生的概率.
e.g. 若A {a,b} 、B {c},則 . -
最小支持度和最小置信度:它們都是由專家定義的一個閾值,表示項目集在統計意義上的重要性和可靠性。同時滿足最小支持閾值和最小置信閾值的規則稱爲強規則。
-
頻繁項集:如果項集的相對支持度滿足預定義的最小支持度閾值,則是頻繁項集。(性質:頻繁項集的所有非空子集也必須是頻繁項集)
Apriori算法
Apriori算法兩個基本過程
- 連接步: 連接步目的是找到K項集。對給定的最小支持閾值,分別對1項候選集,剔除小於該閾值的項集得到1項頻繁集;下一步由與自身連接產生2項候選集,保留中滿足約束條件的項集得到2項頻繁集,記爲;下一步由與連接得到3項候選集,保留中滿足約束條件的項集得到3項頻繁集,記爲;…這樣循環下去,得到最大項集。(兩個集合求笛卡爾積).
- 剪枝步: 根據頻繁項集的性質,在產生頻繁項集的過程中起到減小搜索空間的目的。主要是生成候選集後先根據性質剔除一部分,之後再掃描所有事務,減小搜索空間,提高算法效率。
算法過程
上圖表格爲數據,最小支持度:0.2 則有以下:
- 算法簡單掃描所有的事務,事務中的每一項都是候選1項集的集合的成員,計算每一項的支持度。e.g. 。
- 對中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到1項頻繁集。
- 與連接得到候選2項集,掃描所有事務,計算每一項的支持度。e.g. 。由於中都爲頻繁項集,沒有從項集中剔除。
- 對中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到2項頻繁集。
- 與連接得到候選2項集,掃描所有事務,計算每一項的支持度。e.g. 。剪枝:與連接後會產生S等子集,但是S子集不是頻繁項集,故剔除。
- 對中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到3項頻繁集。
- 與連接後得候選4項集,易得剪枝後爲空集,最後得頻繁項集,。
結果
若以上爲餐飲數據,以爲例,則支持度可以理解爲同時餐品a,b同時點的概率,置信度爲點a後再點b的概率。我們根據Apriori算法的到以上數據,就可以對這些內容,商品等進行智能推薦。