深度解析資料探勘關聯規則Apriori演算法

2021-09-09 01:24:42 字數 2318 閱讀 7524

01、關聯規則挖掘背景和基本概念

如下所示的資料集,表中的每一行代表一次購買清單,注意我們只關心記錄出現與否,不關心某條記錄購買了幾次,如購買十盒牛奶也只計一次。

資料記錄的所有項的集合稱為總項集,上表中的總項集:

s=關聯規則

就是有關聯的規則,形式是這樣定義的:兩個不相交的非空集合x、y,如果有

x->y,就說x-->y是一條關聯規則,例如,-->就是一條關聯規則。

關聯規則的強度用支援度(support)和自信度(confidence)來描述。

支援度

support(x-->y) = 集合x與集合y中的項在一條記錄中同時出現的次數 / 資料記錄的個數。例如:support(-->) = 啤酒和尿布同時出現的次數 / 資料記錄數 = 3/5=60%

自信度

confidence(x-->y) = 集合x與集合y中的項在一條記錄中同時出現的次數 / 集合x出現的個數 。例如:confidence(-->) = 啤酒和尿布同時出現的次數 / 尿布出現的次數 = 3/4 = 75%。

總結

支援度和自信度越高,說明規則越強,關聯規則挖掘就是挖掘出滿足一定強度的規則。

02、關聯規則挖掘的之窮舉演算法

關聯規則挖掘

給定乙個交易資料集t,找出其中所有支援度 support >= min_support、自信度confidence >= min_confidence的關聯規則。

窮舉演算法

找出所需要的規則就是窮舉項集的所有組合,並測試每個組合是否滿足條件,乙個元素個數為n的項集所需要的時間複雜度為o(2^n)。上表的總項集 s=,元素的個數為6,所有的組合個數為63 。

為了簡單起見,已知乙個商品編號的總項集為:,那麼所有可能的組合為: 

共有7項(2^3 - 1),分別檢查以上各種組合,在每一種組合上找出滿足支援度和自信度要求的關聯規則。

對於普通的超市,其商品的項集數也在1萬以上,用指數時間複雜度的演算法不能在可接受的時間內解決問題。

怎樣快速挖出滿足條件的關聯規則是關聯挖掘的需要解決的主要問題。

03、關聯規則挖掘優化演算法之apriori演算法

關聯規則挖掘分兩步進行:

1)生成頻繁項集

這一階段找出所有滿足最小支援度的項集,找出的這些項集稱為頻繁項集。

2)生成規則

在上一步產生的頻繁項集的基礎上生成滿足最小自信度的規則,產生的規則稱為強規則。

關聯規則挖掘所花費的時間主要是在第一步:生成頻繁項集上。因為找出的頻繁項集往往不會很多,所以2)相對1)耗時少。

為了減少 1):頻繁項集的生成時間,應該盡早的消除一些完全不可能是頻繁項集的集合,apriori演算法主要通過兩個規律減少頻繁項集。

兩個定律

高階到低階。如果乙個集合是頻繁項集,則它的所有子集都是頻繁項集。假設乙個集合是頻繁項集,則它的子集, 都是頻繁項集。

低階到高階。如果乙個集合不是頻繁項集,則它的所有超集都不是頻繁項集。假設集合不是頻繁項集,則它的任何超集如,必定也不是頻繁項集。

具有實際應用價值的還是第2條,從低階的頻繁項集到高階的頻繁項集的演化,試想,如果二級項集 支援度都沒有大於閾值,即不是頻繁項集,**或更高階怎麼可能是頻繁項集呢?如果是的話,就一定是頻繁項集了,這不和原來的條件矛盾了嗎?

首先統計一級候選項集,清除不滿足條件的候選集,得到滿足條件的一級項集,在生成一級項集的基礎上,生成二級項集,得到滿足條件的二級項集,在生成**項集時,再次根據定律2的思想,如,不是頻繁項集,所以,都不是頻繁項集。 

apriori演算法

屬於候選消除演算法,是乙個根據定律2生成候選集、根據支援度和可信度的預置消除不滿足條件的候選集,並不斷迴圈直到不再產生候選集的過程。

演算法的偽**: 

總結了關聯規則挖掘的經典演算法apriori演算法,這個演算法利用了乙個定律:如果乙個集合不是頻繁項集,則它的所有超集都不是頻繁項集,自下而上,挖掘出滿足支援度和可信度閾值的所有級別的頻繁項集。

結語

如果有對大資料感興趣的小夥伴或者是從事大資料的老司機可以**:

658558542

最後祝福所有遇到瓶頸的大資料程式設計師們突破自己,祝福大家在往後的工作與面試中一切順利。

資料探勘 關聯規則挖掘

關聯規則 association rule 是資料中所蘊含的一類重要規律。關聯規則挖掘的目標是在資料專案中找出所有的併發關係 cooccurrence relationships 這種關係也稱為關聯 association 關聯規則挖掘的經典應用是購物籃 market basket 關聯規則挖掘並沒...

關聯規則挖掘

關聯規則反映事物之間的相互依存性和關聯性。如果事物之間存在一定的關聯,那麼我們就可以通過乙個事物去 另乙個事物。我們要挖掘大量資料中人們感興趣的,有價值的資訊,包括概念,規則,規律等。關聯規則 發現資料中的規律 超市中什麼產品會 起購買?組合推薦 顧客在買了 臺pc之後下 步會購買?搭配推薦 哪種d...

關聯規則挖掘

直接用例項來解釋概念更清楚一些,加入資料庫中存在10條交易記錄 transaction 具體如下表所示 交易id tid 購買商品 items b bread c cream m milk t tea t01b c m t t02b c m t03c m t04m t t05b c m t06b t...