關聯規則挖掘 Apriori演算法

2021-06-21 23:00:32 字數 1488 閱讀 2596

1 apriori 介紹

apriori演算法使用頻繁項集的先驗知識,使用一種稱作逐層搜尋的迭代方法, k項集用於探索 (k+1) 項集。

首先,通過掃瞄資料庫,累積每個項的計數,並收集滿足最小值尺度的項,找出頻繁 1 項集的集合,該集合記做 l1 。然後利用 l1 找頻繁 2 項集的集合 l2 ,l2 找 l3 ...如此下去,直到不能再找到任何頻繁 k 項集。最後再在所有的頻繁集中找出強規則,即產生使用者感興趣的關聯規則。

其中,apriori演算法具有這樣一條性質:頻繁項集的所有非空子集也必須是頻繁的。

apriori性質基於這樣的觀察:如果項集i不滿足最小值尺度min_sup,則項集i不是頻繁的。即 p(i)

該性質屬於一類特殊的性質,即反單調性。指如果乙個集合不能通過測試,則它所有的超級也都不能通過相同的測試。

2   使用候選產生發現頻繁項集

apriori演算法採用連線步和剪枝步兩種方式來找出所有的頻繁項集。

(1)  連線步

為找出 lk (所有的頻繁 k 項集),通過將 lk-1 (所有的頻繁 k-1 項集)與自身連線產生候選 k項集的集合。該候選集合記作 ck 。

設 l1 和 l2 是 lk-1 中的成員。記 li [j] 表示 li 中的第 j 項(例如 l1[k-2] 表示l1的倒數第2項)。假設 apriori 演算法對事務或項集中的項按字典次序排序,即對於( k-1 )項集 li , li [1]i [2]

上面是韓家煒《資料探勘 - 概念與技術》中的描述。用人的話來說就是:l1是頻繁項集 lk-1 中的項,在於自身連線時,l1保持不變,在新增這樣的項:除了最後一項,其它與l1相同,組成新的k項。

(2)  剪枝步

ck 是 lk 的超集,也就是說, ck 的成員可能是也可能不是頻繁的,但所有的頻繁項集k都包含在ck 中。通過掃瞄所有的事務(交易),確定 ck中每個候選的計數,判斷是否小於最小支援度計數,如果不是,則認為該候選是頻繁的。要計算ck 的支援度,就要不斷的掃庫,成本太高了。

如何壓縮ck ,來減少掃庫的次數呢?

我們可以利用apriori 性質: 任一頻繁項集的所有非空子集也必須是頻繁的,反之,如果某個候選的非空子集不是頻繁的,那麼該候選肯定不是頻繁的,從而可以將其從 ck 中刪除。即如果k項集的(k-1)項子集不在 lk-1 中,那麼該候選集也不在k項集中。回想連線步的候選集構造, l1 和 l2 本身都是頻繁的,只是在連線另乙個的元素後產生的不頻繁。只需要計算這些項集是否頻繁就好了。也可以採用hash的方法實現,是否能夠對映到hash表中。

3 由頻繁項集產生關聯規則

一旦由資料庫中的事務找出頻繁項集(滿足最小支援度),可以由他們產生強關聯規則(滿足最小置信度)。

置信度的計算公式:

其中,支援度用事務數來計算。

關聯規則挖掘(二) Apriori演算法

在資料探勘領域,apriori演算法是挖掘關聯規則的經典演算法。apriori演算法採用的是自底向上的方法,從1 頻繁集開始,逐步找出高階頻繁集。它的基本流程是 第一次掃瞄交易資料庫d時,產生1 頻繁集。在此基礎上經過連線 修剪產生2 頻繁集。以此類推,直到無法產生更高階的頻繁集為止。在第k次迴圈中...

資料探勘之關聯規則挖掘(Apriori演算法)

一 概述 本篇博文主要闡述資料探勘相關的關聯規則挖掘的演算法 apriori演算法 主要介紹關聯規則的基本概念 apriori演算法原理和apriori演算法例項,文章末尾處附加apriori演算法源程式。二 關聯規則挖掘的基本概念 關聯規則挖掘發現大量資料中項集之間有趣的關聯關係。如果兩項或者多項...

資料探勘之關聯規則挖掘 Apriori演算法

關聯規則,肯定很多人都聽說過 乙個男士買尿布時順帶買啤酒的事情 具體事物之間真的是否具有關聯,有多大的關聯,這就是本篇部落格需要分享學習的知識。在這裡x,y就是購買的部分商品,i表示所有的商品 其含義就是購買商品x與購買商品y之間的關聯關係 同時在這裡引入對規則定量的描述 支援度就是所買商品中中同時...