Apriori演算法分析以及FP tree演算法

2021-08-26 06:32:33 字數 1641 閱讀 3553

提高apriori演算法的有效性

主要的挑戰:

1. 要對資料進行多次掃瞄

2. 會產生大量的候選集

3. 對候選項集的支援度計算會非常繁瑣

解決思路

1. 減少對資料的掃瞄

2. 縮小產生的候選項集

3. 改進對候選項集的支援度的計算方法

方法1:基於hash表的項集計數

將每個項集通過相應的hash函式對映到hash表中的不同的桶中,這樣可以將桶中的項集計數跟最小支援度計數相比較,先淘汰一部分項集。

(淘汰整個桶)

方法2:事務壓縮(壓縮進一步迭代的事務數)

不包含任何k項集的事務不可能包含任何(k+1)項集,這種事務在下一步的計算中可以加上標記或刪除

方法3:劃分

挖掘頻繁項集只需要2次資料掃瞄

d中的任何頻繁項集必須作為區域性頻繁項集至少出現在乙個部分中

第一次掃瞄:將資料劃分為多個部分並找到區域性頻繁項集

第二次掃瞄:評估每個候選項集的實際支援度,以確定全域性頻繁項集。

方法4:選樣(在給定資料的乙個子集挖掘)

基本思想:選擇原始資料的乙個樣本,在這個樣本上用apriori演算法挖掘頻繁模式

通過犧牲精確度來減少演算法開銷,為了提高效率,樣本大小應該可以放在記憶體中為宜,可以適當降低最小支援度來減少遺漏的頻繁模式。

可以通過一次全域性掃瞄來驗證從樣本中發現的模式

可以通過第二次全域性掃瞄來找到遺漏的模式

方法5:動態項集計數

在掃瞄的不同點新增候選項集,這樣,如果乙個候選項集已經滿足最小支援度,則在可以直接將它新增到頻繁項集,而不必在這次掃瞄的以後對比中繼續計算。

從資料庫構建乙個fp樹

apriori演算法的主要開銷:

可能要產生大量的候選項集

(10,4)個頻繁1-項集會導致(10,7)個頻繁2-項集

對長度為100的頻繁模式,會產生(2,100)個候選

重複掃瞄資料庫,通過模式匹配檢查乙個很大的候選集合

不產生候選頻繁項集的演算法-fp樹頻集演算法

一種採用divide and conquer的方法

在經過第一遍掃瞄之後,把資料庫的頻集壓縮進一顆頻繁模式樹(fp-tree),同時依然保留其中的關聯資訊

將fp-tree分化成一些條件庫,每個庫和乙個長度為1的頻集相關,然後再對這些條件庫分別進行挖掘。

從資料庫構建乙個fp樹

步驟:1. 掃瞄一次資料庫,匯出頻繁項的集合(1-項集)

2. 將頻繁項按降序排列

3. 再次掃瞄資料庫,構建fp樹

fp樹挖掘

1. 建立樹的根節點,用null標記

2. 將每個事務中的項按遞減支援度計數排列,並對每個事務建立乙個分支

3. 當為乙個事務考慮增加分支時,沿共同字首上的每乙個節點的計數+1,為跟隨字首後的項建立節點並連線

比如將第二個事務加到樹上時,將為f,c,a各增計數1,然後為建立分支

4. 建立乙個項頭表,以方便遍歷,每個項通過乙個節點鏈指向它在樹中的出現。

fp樹的挖掘步驟:

由長度為1的頻繁模式(初始字尾模式)開始,構造它的條件模式基(乙個「子資料庫」,由fp樹中與字尾模式一起出現的字首路徑集組成)

構造該初始字尾模式的條件fp樹,並遞迴的在該樹上實現挖掘。模式增長通過字尾模式與條件fp樹產生的頻繁模式連線實現。

Apriori演算法 關聯分析

apriori演算法是資料探勘演算法中的重要一員,它是通過對資料集進行關聯分析,從而分析出資料集裡項與項之間的關聯關係。演算法最簡單直接的應用,當屬對超市裡被購買的物品的關聯分析,從而挖掘出顧客購買產品及其附屬產品的關係,例如經典的尿布與啤酒,或者現在各大電商 上,當入手一樣物品後,會給推送來各種很...

關聯分析演算法Apriori介紹

apriori 演算法其名字是因為演算法基於先驗知識 prior knowledge 根據前一次找到的頻繁項來生成本次的頻繁項。apriori 是關聯分析中核心的演算法。apriori 演算法的特點 只能處理分類變數,無法處理數值型變數 資料儲存可以是交易資料格式 事務表 或者是事實表方式 資料 演...

關聯分析(一) Apriori演算法

關聯分析分為非時序關聯分析和時序關聯分析,其中非時序關聯分析採用apriori演算法,利用先驗知識產生頻繁項集以及關聯規則,而時序關聯分析採用gsp演算法。apriori演算法 其名字是因為演算法基於先驗知識 prior knowledge 根據前一次找到的頻繁項來生成本次的頻繁項。apriori是...