1、演算法簡介
apriori algorithm是關聯規則裡一項基本演算法。其核心思想是通過候選集生成和情節的向下封閉檢測兩個階段來挖掘頻繁項集,是由rakesh agrawal和ramakrishnan srikant兩位博士在2023年提出的關聯規則挖掘演算法。關聯規則的目的就是在乙個資料集中找出項與項之間的關係,也被稱為購物藍分析 (market basket analysis),「購物藍分析」很貼切的表達了適用該演算法情景中的乙個子集。關於這個演算法有乙個非常有名的故事:"尿布和啤酒"。故事是這樣的:美國的婦女們經常會囑咐她們的丈夫下班後為孩子買尿布,而丈夫在買完尿布後又要順 手買回自己愛喝的啤酒,因此啤酒和尿布在一起被購買的機會很多。這個舉措使尿布和啤酒的銷量雙雙增加,並一直為眾商家所津津樂道。
2、演算法的一些基本概念和定義
資料庫(transaction database):儲存著二維結構的記錄集。定義為:d
所有項集(items):所有專案的集合。定義為:i。
記錄 (transaction ):在資料庫裡的一筆記錄。定義為:t,t ∈ d
項集(itemset):同時出現的項的集合。定義為:k-itemset(k項集),k均表示項數。
支援度(support):定義為 supp(x) = occur(x) / count(d) = p(x)。p(a
∩ b)表示既有a
又有b的概率,例如購物籃分析:牛奶 ⇒
麵包,支援度3%
:意味著
3%顧客同時購買牛奶和麵包
置信度(confidence):定義為 conf(x->y) = supp(x ∪ y) / supp(x) = p(y|x)。 p(b|a),在a
發生的事件中同時發生
b的概率
p(ab)/p(a) 例如購物籃分析:牛奶 ⇒
麵包,置信度40%
:意味著購買牛奶的顧客
40%也購買麵包
候選集(candidate itemset):通過向下合併得出的項集。定義為c[k]。 頻繁
k項集:如果事件a
中包含k
個元素,那麼稱這個事件a為
k項集事件
a滿足最小支援度閾值的事件稱為頻繁
k項集。即支援度大於等於特定的最小支援度(minimum support/minsup)的項集,表示為l[k]。注意,頻繁集的子集一定是頻繁集。
強規則:同時滿足最小支援度閾值和最小置信度閾值的規則稱為強規則。即lift(x -> y) = lift(y -> x) = conf(x -> y)/supp(y) = conf(y -> x)/supp(x) = p(x and y)/(p(x)p(y))
3、實現步驟:
apriori演算法是一種最有影響的挖掘布林關聯規則頻繁項集的演算法,正如我們之前所提到的,我們希望置信度和支援度要滿足我們的閾值範圍才算是有效的規則,實際過程中我們往往會面臨大量的資料,如果只是簡單的搜尋,會出現很多的規則,相當大的一部分是無效的規則,效率很低,那麼
apriori
就是通過產生頻繁項集,然後再依據頻繁項集產生規則,進而提公升效率。
以上所說的代表了
apriori
演算法的兩個步驟:產生頻繁項集和依據頻繁項集產生規則。
頻繁項集
就是對包含專案
a的專案集
c,其支援度大於等於指定的支援度,則c(
a)為頻繁項集,包含乙個專案的頻繁項集稱為頻繁
1-項集,即l1。
如何尋找頻繁項集?apriori使用一種稱作逐層搜尋的迭代方法,即「
k-1項集」用於搜尋「
k項集」。首先,找出頻繁「1
項集」的集合,該集合記作l1。
l1用於找頻繁「
2項集」的集合
l2,而
l2用於找
l3。如此下去,直到不能找到「
k項集」。找每個
lk都需要一次資料庫掃瞄。核心思想是:連線步和剪枝步。連線步是自連線,原則是保證前k-2
項相同,並按照字典順序連線。剪枝步,是使任一頻繁項集的所有非空子集也必須是頻繁的。反之,如果某個候選的非空子集不是頻繁的,那麼該候選肯定不是頻繁的,從而可以將其從ck
中刪除。簡單的講,1
、發現頻繁項集,過程為:(1
)掃瞄(
2)計數(
3)比較(
4)產生頻繁項集(
5)連線、剪枝,產生候選項集 重複步驟(1)~
(5)直到不能發現更大的頻集。
這裡不再講述,直接說乙個例子大家就都明白了。
apriori
尋找頻繁項集的過程是乙個不斷迭代的過程,每次都是兩個步驟,產生候選集
ck(可能成為頻繁項集的專案組合);基於候選集
ck計算支援度,確定lk。
apriori
的尋找策略就是從包含少量的專案開始逐漸向多個專案的專案集搜尋。
資料如下:
我們看到,資料庫儲存的資料格式,會員
100購買了
1 3 4
三種商品,那麼對應的集合形式如右邊的圖所示。那麼基於候選集
c1,我們得到頻繁項集
l1,如下圖所示,在此**中
的支援度為
1,而我們設定的支援度為
2。支援度大於或者等於指定的支援度的最小閾值就成為
l1了,這裡
沒有成為
l1的一員。因此,我們認定包含
4的其他項集都不可能是頻繁項集,後續就不再對其進行判斷了。
此時我們看到
l1是符合最低支援度的標準的,那麼下一次迭代我們依據
l1產生c2(
4就不再被考慮了),此時的候選集如右圖所示
c2(依據
l1*l1
的組合方式)確立。
c2的每個集合得到的支援度對應在我們原始資料組合的計數,如下圖左所示。
此時,第二次迭代發現了
的支援度只有
1,低於閾值,故而捨棄,那麼在隨後的迭代中,如果出現
的組合形式將不被考慮。
如上圖,由
l2得到候選集
c3,那麼這次迭代中的
哪去了?如剛才所言,
的組合形式將不被考慮,因為這兩個項集不可能成為頻繁項集
l3,此時
l4不能構成候選集
l4,即停止。
如果用一句化解釋上述的過程,就是不斷通過
lk的自身連線,形成候選集,然後在進行剪枝,除掉無用的部分。
第二個例子更容易理解,如下圖過程:
得到了頻繁項集,就可以根據頻繁項集產生簡單關聯規則
4、演算法的優缺點:
apriori演算法的優點:
apriori
的關聯規則是在頻繁項集基礎上產生的,進而這可以保證這些規則的支援度達到指定的水平,具有普遍性和令人信服的水平。
apriori演算法的缺點:需要多次掃瞄資料庫;生成大量備選項集;計數工作量太大。
資料探勘十大經典演算法
最近想看看資料探勘是個什麼東西,因此特別的關注了下,首先看看資料探勘包含哪些演算法,網上找到了十大經典演算法 01.c4.5 是機器學習演算法中的一種分類決策樹演算法,其核心演算法是 id3演算法 02.k means演算法 是一種聚類演算法。03.svm 一種 監督式學習 的方法,廣泛運用於統計分...
資料探勘十大經典演算法
1 c4.5 2 k means 3 svm 4 apriori 5 em 6 pagerank 7 adaboost 8 knn 9 bayes 10 cart 1 c4.5 計算增益率 step1 計算資料集d的熵 單位為位元 info d step2 計算每個屬性的熵info x d step...
十大經典資料探勘演算法
c4.5演算法 機器學習演算法中的乙個分類決策樹演算法 cart 分類與回歸樹 c4.5與cart都是決策樹演算法 id3用資訊增益,c4.5用資訊增益率,cart用gini係數 knn 樸素貝葉斯 bayes 在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型 decision tree ...