【機器學習】--關聯規則演算法從初識到應用

LHBlog發表於2018-04-07

一、前述

  關聯規則的目的在於在一個資料集中找出項之間的關係,也稱之為購物藍分析 (market basket analysis)。例如,購買鞋的顧客,有10%的可能也會買襪子,60%的買麵包的顧客,也會買牛奶。這其中最有名的例子就是"尿布和啤酒"的故事了。

二、相關概念

交易集:包含所有資料的一個資料集合,資料集合中的每條資料都是一筆交易

關聯分析在大規模資料集中尋找有趣關係的任務。這些關係可以有兩種形式:頻繁項集或者關聯規則。
關聯關係:(association rules)暗示兩種物品之間可能存在很強的關係。
項:交易集中的每個商品被成為一個項

模式/項集(ItemSet):項組合被成為模式/項集

支援度(Support):個項集在在整個交易集中出現的次數/出現的頻度,比如:Support({A,C})=2表示A和C同時出現的次數是2次
最小支援度:交易次數達到最小支援度的情況下,該項集才會被計算
頻繁項集:如果項集的支援度大於等於最小支援度,那麼改項集被成為頻繁項集,即出現的比較頻繁。

置信度(Confidence):關聯規則左件和右件同時出現的頻繁程度,該值越大,表示同時出現的機率越大。

關聯規則:LHS --- RHS(confidence) -----> 如果客戶購買了左件(LHS),也可能購買右件(RHS),購買的置信度為confidence

比如上面的{尿布,葡萄酒}就頻繁出現,他們之間可能存在一些關係,辣麼,如何來確定是否是頻繁項集呢?主要是依靠支援度和可信度。

首先我們來看,什麼是規則?規則形如"如果…那麼…(If…Then…)",前者為條件,後者為結果。例如一個顧客,如果買了可樂,那麼他也會購買果汁。

如何來度量一個規則是否夠好?有兩個量,置信度(Confidence)和支援度(Support)

假設有如下表的購買記錄。

整理後如圖:

上表中橫欄和縱欄的數字表示同時購買這兩種商品的交易條數。如購買有Orange的交易數為4,而同時購買Orange和Coke的交易數為2。

 

置信度表示了這條規則有多大程度上值得可信設條件的項的集合為A,結果的集合為B。置信度計算在A中,同時也含有B的概率。即Confidence(A==>B)=P(B|A)。例 如計算"如果Orange則Coke"的置信度。由於在含有Orange的4條交易中,僅有2條交易含有Coke.其置信度為0.5。

 

支援度計算在所有的交易集中,既有A又有B的概率。例如在5條記錄中,既有Orange又有Coke的記錄有2條。則此條規則的支援度為2/5=0.4。現在這條規則可表述為,如果一個顧客購買了Orange,則有50%的可能購買Coke。而這樣的情況(即買了Orange會再買Coke)會有40%的可能發生。支援度是針對項集來說的,因此可以定義一個最小支援度,而只保留滿足最小支援度的項集

關聯規則要求項集必須滿足的最小支援閾值,稱為項集的最小支援度(Minimum Support),記為supmin支援度大於或等於supmin的項集稱為頻繁項集,簡稱頻繁集,反之則稱為非頻繁集。通常k-項集如果滿足supmin,稱為k-頻繁集,記作Lk。關聯規則的最小置信度(Minimum Confidence)記為confmin,它表示關聯規則需要滿足的最低可靠性。

三、Apriori演算法

1、原理

 

如果某個項集是頻繁的,那麼它的所有子集也是頻繁的。該定理的逆反定理為:如果某一個項集是非頻繁的,那麼它的所有超集(包含該集合的集合)也是非頻繁的。Apriori原理的出現,可以在得知某些項集是非頻繁之後,不需要計算該集合的超集,有效地避免項集數目的指數增長,從而在合理時間內計算出頻繁項集。
2、實現
Apriori演算法是發現頻繁項集的一種方法。Apriori演算法的兩個輸入引數分別是最小支援度和資料集。該演算法首先會生成所有單個物品的項集列表->接著掃描交易記錄來檢視哪些項集滿足最小支援度要求,其中不滿足最小支援度的集合會被去掉->然後對剩下的集合進行組合以生成包含兩個資料集的項集->接著重新掃描交易記錄,去掉不滿足最小支援度的項集->該過程重複進行直到所有項集都被濾掉。




 

相關文章