Apriori算法

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

5.參考資料

  1. https://blog.csdn.net/baimafujinji/article/details/53456931
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容