關聯規則挖掘-Apriori算法


1. 搞懂關聯規則中的幾個重要概念:支持度、置信度、提升度;
2. Apriori 算法的工作原理;
3. 在實際工作中,我們該如何進行關聯規則挖掘。

一、搞懂關聯規則中的幾個概念(支持度、置信度、提升度)

Apriori 算法的核心就是理解頻繁項集和關聯規則。在算法運算的過程中,還要重點掌握對
支持度、置信度和提升度的理解。

 

超市購物的例子,下面是幾名客戶購買的商品列表:

1.1、什么是支持度呢?

支持度是個百分比,它指的是某個商品組合出現的次數與總次數之間的比例。支持度越
高,代表這個組合出現的頻率越大。


在這個例子中,我們能看到“牛奶”出現了 4 次,那么這 5 筆訂單中“牛奶”的支持度就
是 4/5=0.8。
同樣“牛奶 + 面包”出現了 3 次,那么這 5 筆訂單中“牛奶 + 面包”的支持度就是
3/5=0.6。

1.2什么是置信度呢?

它指的就是當你購買了商品 A,會有多大的概率購買商品 B,在上面這個例子中:
置信度(牛奶→啤酒)=2/4=0.5,代表如果你購買了牛奶,有多大的概率會購買啤酒?
置信度(啤酒→牛奶)=2/3=0.67,代表如果你購買了啤酒,有多大的概率會購買牛奶?

我們能看到,在 4 次購買了牛奶的情況下,有 2 次購買了啤酒,所以置信度 (牛奶→啤酒)=0.5,

而在 3 次購買啤酒的情況下,有 2 次購買了牛奶,所以置信度(啤酒→牛奶)=0.67。

所以說置信度是個條件概念,就是說在 A 發生的情況下,B 發生的概率是多少。

1.3什么是提升度呢?

我們在做商品推薦的時候,重點考慮的是提升度,因為提升度代表的是“商品 A 的出現,
對商品 B 的出現概率提升的”程度。

提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)


這個公式是用來衡量 A 出現的情況下,是否會對 B 出現的概率有所提升。
所以提升度有三種可能:
1. 提升度 (A→B)>1:代表有提升;
2. 提升度 (A→B)=1:代表有沒有提升,也沒有下降;
3. 提升度 (A→B)<1:代表有下降。

 1.4頻繁項集 itemsets

itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)

就是支持度大於等於最小支持度 (Min Support) 閾值的項集

 1.5關聯規則rules

例如A與B出現的概率很高

data數據集是列表形式,里面每一個值可以是集合或者列表

 

k=1時,單個商品

例如啤酒

{1:{('啤酒',):3,(‘尿布’,):5}

2:{(‘啤酒’,‘尿布’):3,}

}

from efficient_apriori import apriori # 設置數據集
data = [('牛奶','面包','尿布'), ('可樂','面包', '尿布', '啤酒'), ('牛奶','尿布', '啤酒', '雞蛋'), ('面包', '牛奶', '尿布', '啤酒'), ('面包', '牛奶', '尿布', '可樂')] # 挖掘頻繁項集和頻繁規則
itemsets, rules = apriori(data, min_support=0.5, min_confidence=1) print(itemsets) print(rules)

 

data 是個 List 數組類型,其中每個值都可以是一個集合。實際上你 也可以把 data 數組中的每個值設置為 List 數組類型,比如: data = [['牛奶','面包','尿布'], ['可樂','面包', '尿布', '啤酒'], ['牛奶','尿布', '啤酒', '雞蛋'], ['面包', '牛奶', '尿布', '啤酒'], ['面包', '牛奶', '尿布', '可樂']]

 

# 挖掘頻繁項集和關聯規則
itemsets, rules = apriori(data, min_support=0.5, min_confidence=1) print(itemsets) print(rules)

最小支持度和最小置信系數,這樣我們可以找到支持度大於 50%,置信系數為 1
的頻繁項集和關聯規則。



你能看出來,寧浩導演喜歡用徐崢和黃渤,並且有徐崢的情況下,一般都會用黃渤。

 

Apriori原理為:如果某一項集是頻繁的,則它的所有子集也是頻繁的,反之,如果某一項集是非頻繁的,則其所有超集也是非頻繁的。

生成關聯規則需要:頻繁項集列表、包含頻繁項集支持數據的字典、最小可信度。 用更高效的方法來進行挖掘頻繁項集:使用FP-growth算法來高效發現頻繁項集 互聯網在處理龐大的用戶數據時就是使用FP-growth算法,來發現頻繁項集,找出經常一起出現的詞對。

 

二、提出問題

導演是如何選擇演員的

三、獲取數據

https://movie.douban.com/

在豆瓣電影中輸入導演名字

 周星馳

 

采用Python,進行爬蟲

 

 

 

 

1111


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM