Apriori算法
1.定義:一種用于關聯(lián)規(guī)則挖掘的代表性算法
2.一些基本的概念:
2.1 數(shù)據(jù)挖掘可以視為數(shù)據(jù)庫、機器學習和統(tǒng)計學三者的交叉。第一者提供了數(shù)據(jù)管理技術;后兩者提供了數(shù)據(jù)分析技術。
2.2關聯(lián)規(guī)則是形如 X→Y 的蘊涵表達式,其中X和Y是不相交的項集【包含0個或多個項的集合被稱為項集(itemset)】,即 X∩Y=?。關聯(lián)規(guī)則的強度可以用以下兩個指標來衡量:
- 支持度(support):持度確定規(guī)則可以用于給定數(shù)據(jù)集(全局)的頻繁程度
- 置信度(confidence):確定Y在包含X的交易中出現(xiàn)的頻繁程度
兩者的公式如下:
兩個公式
2.3 用一個簡單的例子來解釋該概念:
一個超市的收銀數(shù)據(jù)
[圖片上傳失敗...(image-a983f3-1532249865361)]
2.4 因此,大多數(shù)關聯(lián)規(guī)則挖掘算法通常采用的一種策略是,將關聯(lián)規(guī)則挖掘任務分解為如下兩個主要的子任務:
- 頻繁項集產(chǎn)生:其目標是發(fā)現(xiàn)滿足最小支持度閾值的所有項集,這些項集稱作頻繁項集(frequent itemset)。
- 規(guī)則的產(chǎn)生:其目標是從上一步發(fā)現(xiàn)的頻繁項集中提取所有高置信度的規(guī)則,這些規(guī)則稱作強規(guī)則(strong rule)。
- ps:常常頻繁項集產(chǎn)生所需的計算開銷遠大于產(chǎn)生規(guī)則所需的計算開銷。尋找頻繁項集最容易想到的方法是暴力法(Brute-Force),但此方法通常不可行。
3.先驗原理
3.1 Apriori 兩條定律:
-
定律1:如果一個集合是頻繁項集,則它的所有子集都是頻繁項集。
- 例如:假設一個集合{A,B}是頻繁項集,即A、B同時出現(xiàn)在一條記錄的次數(shù)大于等于最小支持度min_support,則它的子集{A},{B}出現(xiàn)次數(shù)必定大于等于min_support,即它的子集都是頻繁項集。
-
定律2:如果一個集合不是頻繁項集,則它的所有超集都不是頻繁項集。
- 舉例:假設集合{A}不是頻繁項集,即A出現(xiàn)的次數(shù)小于 min_support,則它的任何超集如{A,B}出現(xiàn)的次數(shù)必定小于min_support,因此其超集必定也不是頻繁項集。
3.2 運用定理的一個例子:
下圖表示當我們發(fā)現(xiàn){A,B}是非頻繁集時,就代表所有包含它的超級也是非頻繁的,即可以將它們都剪除。
image
4.Apriori算法與實例【核心】
4.1 算法的形式化描述:
image
4.2 算法的實例:
image
4.3 上條C集生成策略的解釋:
image
首先是self-joining部分。例如,假設我們有一個L3={abc, abd, acd, ace, bcd}(注意這已經(jīng)是排好序的}。選擇兩個itemsets,它們滿足條件:前k-1個item都相同,但最后一個item不同,把它們組成一個新的Ck+1的項集c。如下圖所示,{abc}和{abd}組成{abcd},{acd}和{ace}組成{acde}。
-
生成策略的第二部分是pruning。對于一個位于Ck+1中的項集c,s是c的大小為k的子集,如果s不存在于Lk中,則將c從Ck+1中刪除。如下圖所示,因為{acde}的子集{cde}并不存在于L3中,所以我們將{acde}從C4中刪除。最后得到的C4,僅包含一個項集{abcd}。
image