十大機器學習算法之Apriori

一、算法簡介

Apriori算法是一種挖掘關聯規則的頻繁項集算法,其核心思想是通過候選集生成和清潔的向下封閉檢測兩個階段來挖掘頻繁項集。
Apriori算法(先驗的、推測的)應用廣泛,可用於消費市場價格分析,猜測顧客的消費習慣;網絡安全領域中的入侵檢測技術;可用於高校管理中,根據挖掘規則可以有效地輔助學校管理部門有針對性地開展貧困助學工作;也可以用在移動通信領域中,知道運營商的業務運營和輔助業務提供商的決策制定。

二、基本概念

對於A——>B
①支持度P(A∩B)
②置信度P(B|A)在A發生的同時B發生的概率
P(B|A)=P(AB)/P(A)
例如:購物車分析 牛奶——>麪包
支持度:
P(牛奶∩麪包)=3%
支持度3%意味着3%的顧客同時購買了牛奶和麪包。
置信度:
P(牛奶|麪包)=40%
置信度40%意味着有40%的顧客買了牛奶的同時買了麪包。
③如果事件A中包含K個元素,那麼稱這個事件A爲K項事件,A滿足最小支持度發值得時間稱爲頻繁K項集。
④同時滿足最小支持度閾值和最小置信度閾值的規則成爲強規則。

三、挖掘步驟

1、依據支持度找出所有的頻繁項集(依據頻度)
2、依據置信度產生關聯規則(強度)

四、算法實現步驟

1、Apriori算法是一種最有影響的挖掘布爾關聯規則頻繁項集的算法。Apriori使用一種叫做逐層搜索的迭代方法,“K-1項集”用於搜索“K項集”。首先找出頻繁“1項集”的集合,該集合記爲L1,L1用於找到頻繁“2項集”的集合L2,…,如此下去,知道找到每個Lk都需要一次數據庫掃描。(就是知道所有的數據都被用到時候就結束。)

核心思想:

連接步和剪枝步。
連接步是自然連接,原則是保證前k-2項相同,並按照字典順序連接。
剪枝步是使任一頻繁項集的所有非空子集也必須是頻繁的。反之,如果某個候選的非空子集不是頻繁的,那麼該候選項集肯定不是頻繁的,從而可以將其從Ck中刪除。

簡單來說就是 :
1、發現頻繁項集過程爲①掃描(掃描所有數據)②計數(計算各個候選集的支持度)③比較(選出適合條件的頻繁項集)④產生頻繁集⑤連接、再剪枝產生候選集
2、產生關聯規則。過程:根據前面提到的置信度的定義,關聯規則的產生如下:
①對於每個頻繁項集L,產生L的所有非空子集。
②對於L的每個非空子集S,如果P(L)/P(S)>=min_conf,則輸出規則“Sa L-S”。(L-S表示在項集中除去S子集的項集。)

五、Apriori缺點:

①由頻繁k-1項集進行自連接生成的候選頻繁k項集數量巨大
②在驗證候選頻繁k項集的時候需要對整個數據庫進行掃描,非常耗時。

例子:

(博主很懶,懶得去做表格了,看圖片,手寫)

這裏寫圖片描述

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