天天看點

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

整理寫一份比較易懂的Apriori算法:

關聯規則想必大家都是聽說過 尿布和啤酒的故事;

在一家超市裡,有一個有趣的現象:尿布和啤酒赫然擺在一起出售。但是這個奇怪的舉措卻使尿布和啤酒的銷量雙雙增加了。這不是一個笑話,而是發生在美國沃爾瑪連鎖店超市的真實案例,并一直為商家所津津樂道。沃爾瑪擁有世界上最大的資料倉庫系統,為了能夠準确了解顧客在其門店的購買習慣,沃爾瑪對其顧客的購物行為進行購物籃分析,想知道顧客經常一起購買的商品有哪些。沃爾瑪資料倉庫裡集中了其各門店的詳細原始交易資料。在這些原始交易資料的基礎上,沃爾瑪利用資料挖掘方法對這些資料進行分析和挖掘。一個意外的發現是:”跟尿布一起購買最多的商品竟是啤酒!經過大量實際調查和分析,揭示了一個隐藏在“尿布與啤酒”背後的美國人的一種行為模式:在美國,一些年輕的父親下班後經常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時也為自己買一些啤酒。産生這一現象的原因是:美國的太太們常叮囑她們的丈夫下班後為小孩買尿布,而丈夫們在買尿布後又随手帶回了他們喜歡的啤酒

從這個例子中引出裡 關聯規則

關聯規則(Association Rules)是反映一個事物與其他事物之間的互相依存性和關聯性,是資料挖掘的一個重要技術,用于從大量資料中挖掘出有價值的資料項之間的相關關系。

常見的購物籃分析

該過程通過發現顧客放人其購物籃中的不同商品之間的聯系,分析顧客的購買習慣。通過了解哪些商品頻繁地被顧客同時購買,這種關聯的發現可以幫助零售商制定營銷政策。其他的應用還包括價目表設計、商品促銷、商品的排放和基于購買模式的顧客劃分。

可從資料庫中關聯分析出形如“由于某些事件的發生而引起另外一些事件的發生”之類的規則

本篇文章主要講解 關聯規則的基本算法:Apriori算法

(一)相關的名額:

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

1、支援度

支援度是個百分比,它指的是某個商品組合出現的次數與總次數之間的比例。支援度越高,代表這個組合出現的頻率越大。例如,“牛奶 + 面包”出現了 3 次,那麼這 5 筆訂單中“牛奶 + 面包”的支援度就是 3/5=0.6。

2、置信度

置信度是個條件概念,就是說在 A 發生的情況下,B 發生的機率是多少。即就是當你購買了商品 A,會有多大的機率購買商品 B。例如,置信度(牛奶→啤酒)=2/4=0.5,代表如果你購買了牛奶,有50%的機率會購買啤酒。

3、提升度

提升度代表的是“商品 A 的出現,對商品 B 的出現機率提升的”程度。計算公式如下:提升度 (A→B)= 置信度 (A→B)/ 支援度 (B)

是以提升度有三種可能:

(1)提升度 (A→B)>1:代表有提升;

(2)提升度 (A→B)=1:代表有沒有提升,也沒有下降;

(3)提升度 (A→B)<1:代表有下降。

(二)Apriori的工作原理

Step1:K=1,計算 K 項集的支援度;

Step2:篩選掉小于最小支援度的項集;

Step3:如果項集為空,則對應 K-1 項集的結果為最終結果。

否則 K=K+1,重複 1-3 步。

Apriori 在計算的過程中有以下幾個缺點:

(1)可能産生大量的候選集,因為采用排列組合的方式,把可能的項集都組合出來了;

(2)每次計算都需要重新掃描資料集,來計算每個項集的支援度。

是以 Apriori 算法會浪費很多計算空間和計算時間,為此提出了 FP-Growth 算法進行改進,其特點是:建立了一棵 FP 樹來存儲頻繁項集。在建立前對不滿足最小支援度的項進行删除,減少了存儲空間;整個生成過程隻周遊資料集 2 次,大大減少了計算量。

算法不好看 不易懂,來個例子解釋一下:

(三)執行個體解釋

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

算法推導:

我們的資料集D有4條記錄,分别是{1,3,4},{2,3,5},{1,2,3,5},{2,5}

1.設定最小支援度:50%

2.針對資料集生成頻繁1項集,并計算其支援度

根據資料集,{1},{2},{3},{4},{5},對應的出現次數為2,3,3,1,3,其支援度為2/4=0.5,3/4=0.75,3/4=0.75,1/4=0.25,3/4=0.75

3.排除支援度<0.5的項集,那麼就剩下{1},{2},{3},{5}

4.生成頻繁2項集,(根據步驟三剩下的項生成)

{1,2},{1,3},{1,5},{2,3},{2,5},{3,5} 此時第一輪疊代結束了

5.進入第二輪疊代

{1,2},{1,3},{1,5},{2,3},{2,5},{3,5}對應出現的次數為:1,2,1,2,3,2,其支援度為0.25,0.5,0.25,0.5,0.75,0.5

6.排除<0.5的支援度的項集,剩下的{1,3},{2,3},{2,5},{3,5}

7.生成頻繁3項集

{1,2,3},{1,2,5},{1,3,5},{2,3,5}此時第二輪疊代結束

8.進入第三輪疊代

{1,2,3},{1,2,5},{1,3,5},{2,3,5}對應的次數為:1,2,1,1,其支援度為:0.25,0.5,0.25,0.25

9.排除<0.5的項集,剩下的 {2,3,5}

10.此時數量為3不支援生成頻繁4項集,疊代結束。

    

繼續閱讀