Apriori工具包安裝及做關(guān)聯(lián)分析示例

efficient_apriori工具包安裝

本文使用的工具是efficient_apriori,導(dǎo)入會出現(xiàn)報錯:No module named 'efficient_apriori',則需進(jìn)行安裝工具包

image.png

直接pip install efficient_apriori會出現(xiàn)超時的報錯
需要借助鏡像源,如下也會報錯:

pip install efficient_apriori http://mirrors.aliyun.com/pypi/simple/
image.png

需要對鏡像源進(jìn)行調(diào)整,就可以成功,如下:

pip install efficient_apriori -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pip
image.png

Apriori算法原理

在介紹Apriori算法之前,先簡單了解一下關(guān)聯(lián)規(guī)則:

Association Rules,或者是 Basket Analysis
解釋了:如果一個消費者購買了產(chǎn)品A,那么他有多大幾率會購買產(chǎn)品B?

故事:

啤酒和尿布:
沃爾瑪在分析銷售記錄時,發(fā)現(xiàn)啤酒和尿布經(jīng)常一起被購買,于是他們調(diào)整了貨架,把兩者放在一起,結(jié)果真的提升了啤酒的銷量。
原因解釋:爸爸在給寶寶買尿布的時候,會順便給自己買點啤酒?
沃爾瑪是最早通過大數(shù)據(jù)分析而受益的傳統(tǒng)零售企業(yè),對消費者購物行為進(jìn)行跟蹤和分析。

根據(jù)舉例內(nèi)容,理解支持度、置信度、提升度:

image.png

支持度:

是個百分比,指的是某個商品組合出現(xiàn)的次數(shù)與總次數(shù)之間的比例。支持度越高,代表這個組合出現(xiàn)的頻率越大。
“牛奶”的支持度=4/5=0.8
“牛奶+面包”的支持度=3/5=0.6。

置信度:

是個條件概念
指的是當(dāng)你購買了商品A,會有多大的概率購買商品B
置信度(牛奶→啤酒)=2/4=0.5
置信度(啤酒→牛奶)=2/3=0.67

提升度:

商品A的出現(xiàn),對商品B的出現(xiàn)概率提升的程度
如果我們單純看置信度(可樂→尿布)=1,也就是說可樂出現(xiàn)的時候,用戶都會購買尿布,那么當(dāng)用戶購買可樂的時候,就需要推薦尿布么?

提升度:商品A的出現(xiàn),對商品B的出現(xiàn)概率提升的程度
提升度(A→B)=置信度(A→B)/支持度(B)
提升度的三種可能:
提升度(A→B)>1:代表有提升;
提升度(A→B)=1:代表有沒有提升,也沒有下降;
提升度(A→B)<1:代表有下降。

Apriori算法原理
我們把上面案例中的商品用ID來代表,

牛奶、面包、尿布、可樂、啤酒、雞蛋的商品ID分別設(shè)置為1-6
Apriori算法就是查找頻繁項集(frequent itemset)的過程
頻繁項集:支持度大于等于最小支持度(Min Support)閾值的項集。
非頻繁項集:支持度小于最小支持度的項集


image.png

(1)
先計算K=1項的支持度

image.png

假設(shè)最小支持度=0.5,那么Item4和6不符合最小支持度的,不屬于頻繁項集

image.png

(2)
在這個基礎(chǔ)上,我們將商品兩兩組合,得到k=2項的支持度

image.png

篩選掉小于最小值支持度的商品組合

image.png

(3)
將商品進(jìn)行K=3項的商品組合,可以得到:

image.png

篩選掉小于最小值支持度的商品組合

image.png

得到K=3項的頻繁項集{1,2,3},也就是{牛奶、面包、尿布}的組合

Apriori算法的流程:

Step1,K=1,計算K項集的支持度;
Step2,篩選掉小于最小支持度的項集;
Step3,如果項集為空,則對應(yīng)K-1項集的結(jié)果為最終結(jié)果。
否則K=K+1,重復(fù)1-3步。

示例

from efficient_apriori import apriori
# 設(shè)置數(shù)據(jù)集
transactions = [('牛奶','面包','尿布'),
                ('可樂','面包', '尿布', '啤酒'),
                ('牛奶','尿布', '啤酒', '雞蛋'),
                ('面包', '牛奶', '尿布', '啤酒'),
                ('面包', '牛奶', '尿布', '可樂')]
# 挖掘頻繁項集和頻繁規(guī)則
itemsets, rules = apriori(transactions, min_support=0.5,  min_confidence=1)
print("頻繁項集:", itemsets)
print("關(guān)聯(lián)規(guī)則:", rules)
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容