直面Apriori算法

引言

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同時發生的概率(也稱爲相對支持度).
    Support(AB)=P(AB)=ABSupport(A\Rightarrow B)=P(A\bigcup B)=\frac{A、B同時發生的事務個數}{所有事務個數}
    e.g. 若A {a,b} 、B {c},則在10個事務中有3個事務包含 a,b,c 即 P(AB)=P({a,b,c})=310=0.3P(A\bigcup B)=P(\{a,b,c\})=\frac{3}{10}=0.3.

  • 置信度:項集A發生,則項集B發生的概率.
    Confidence(AB)=P(BA)=Support(AB)Support(A)=ABAConfidence(A\Rightarrow B)=P(B|A)=\frac{Support(A\Rightarrow B)}{Support(A)}=\frac{A、B同時發生的事務個數}{A發生的事務個數}
    e.g. 若A {a,b} 、B {c},則Support(AB)=0.3,Support(A)=0.5,P(BA)=0.6Support(A\Rightarrow B)=0.3,Support(A)=0.5, P(B|A)=0.6 .

  • 最小支持度和最小置信度:它們都是由專家定義的一個閾值,表示項目集在統計意義上的重要性和可靠性。同時滿足最小支持閾值和最小置信閾值的規則稱爲強規則。

  • 頻繁項集:如果項集II的相對支持度滿足預定義的最小支持度閾值,則II是頻繁項集。(性質:頻繁項集的所有非空子集也必須是頻繁項集)

Apriori算法

Apriori算法兩個基本過程
  • 連接步: 連接步目的是找到K項集。對給定的最小支持閾值,分別對1項候選集C1C_1,剔除小於該閾值的項集得到1項頻繁集L1L_1;下一步由L1L_1與自身連接產生2項候選集C2C_2,保留C2C_2中滿足約束條件的項集得到2項頻繁集,記爲L2L_2;下一步由L2L_2L1L_1連接得到3項候選集C3C_3,保留C3C_3中滿足約束條件的項集得到3項頻繁集,記爲L3L_3;…這樣循環下去,得到最大項集。(兩個集合求笛卡爾積).
  • 剪枝步: 根據頻繁項集的性質,在產生頻繁項集CkC_k的過程中起到減小搜索空間的目的。主要是生成候選集後先根據性質剔除一部分,之後再掃描所有事務,減小搜索空間,提高算法效率。
算法過程

上圖表格爲數據,最小支持度:0.2 則有以下:
在這裏插入圖片描述

  1. 算法簡單掃描所有的事務,事務中的每一項都是候選1項集的集合C1C_1的成員,計算每一項的支持度。e.g. P({a})={a}=710=0.7P(\{a\})=\frac{項集\{a\}的事務計數}{所有事務個數}=\frac{7}{10}=0.7
  2. C1C_1中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到1項頻繁集L1L_1
  3. L1L_1L1L_1連接得到候選2項集C2C_2,掃描所有事務,計算每一項的支持度。e.g. P({a,b})={a,b}=510=0.5P(\{a,b\})=\frac{項集\{a,b\}的事務計數}{所有事務個數}=\frac{5}{10}=0.5。由於L1L_1中都爲頻繁項集,沒有從項集中剔除。
  4. C2C_2中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到2項頻繁集L2L_2
  5. L2L_2L1L_1連接得到候選2項集C3C_3,掃描所有事務,計算每一項的支持度。e.g. P({a,b,c})={a,b,c}=310=0.3P(\{a,b,c\})=\frac{項集\{a,b,c\}的事務計數}{所有事務個數}=\frac{3}{10}=0.3剪枝:L2L_2L1L_1連接後會產生S{b,c,e}\{b,c,e\}等子集,但是S子集{b,e}\{b,e\}不是頻繁項集,故剔除。
  6. C3C_3中的各項集的支持度與預先設定的最小支持度閾值進行比較,保留大於或等於該閾值的項,得到3項頻繁集L3L_3
  7. L3L_3L1L_1連接後得候選4項集C4C_4,易得剪枝後爲空集,最後得頻繁項集{a,b,c}\{a,b,c\}{a,c,e}\{a,c,e\}

結果

在這裏插入圖片描述
若以上爲餐飲數據,以aba\rightarrow b爲例,則支持度可以理解爲同時餐品a,b同時點的概率,置信度爲點a後再點b的概率。我們根據Apriori算法的到以上數據,就可以對這些內容,商品等進行智能推薦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章