什麼是Apriori演算法?


Apriori是由R. Agrawal和R. Srikant於1994年開發的一種開創性演算法,用於挖掘布林關聯規則的頻繁項集。該演算法依賴於演算法需要事先了解頻繁項集屬性的情況。

Apriori使用一種稱為逐層搜尋的迭代方法,其中k-項集可以探索(k+1)-項集。首先,透過瀏覽資料庫來收集每個專案的計數,並接收滿足最小支援度的專案,從而發現頻繁1-項集的集合。結果集表示為L1

接下來,L1可以找到L2,即頻繁2-項集的集合,它可以找到L3,等等,直到無法發現更多頻繁的k-項集。每個Lk的發現都需要對資料庫進行一次完整掃描。

它可以提高頻繁項集逐層生成的效率,這是一個稱為Apriori屬性的重要特性。它可以減少搜尋空間。

Apriori屬性 - 頻繁項集的某些非空子集也應該頻繁。

Apriori屬性依賴於以下觀察結果。根據定義,如果項集I不滿足最小支援度閾值min sup,則I不頻繁;也就是說,P(I) < min_sup。

如果將項A插入到項集I中,則生成的項集(即I ∪ A)不能比I更頻繁地出現。因此,I∪A不頻繁,例如P (I ∪ A) < min_sup。

此屬性屬於一類稱為反單調的屬性,從某種意義上說,如果一個集合不能透過測試,則某些超集也將無法透過相同的測試。它被稱為反單調,因為該屬性在拒絕測試的上下文中是單調的。

遵循一個兩步過程,包括連線和剪枝操作,如下所示:

連線步驟 - 它可以找到Lk,透過將Lk−1自身連線起來生成一組候選k-項集。這組候選表示為Ck。設L1和L2為Lk−1中的項集。文件Li[j]定義Li中的第j個項(例如,L1 [k−2]定義L1中倒數第二個項)。

剪枝步驟 - Ck是Lk的超集,即它的成員可能不頻繁,但Ck中包含一些頻繁的k-項集。對資料庫進行掃描以確定Ck中每個候選的計數,可以導致Lk的確定(即,根據定義,某些計數不少於最小支援度計數的候選是頻繁的,因此屬於Lk)。Ck可能很大,並且可能涉及大量的計算。

更新於:2022年2月16日

1K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.