整理寫一份比較易懂的Apriori算法:
關聯規則想必大家都是聽說過 尿布和啤酒的故事;
在一家超市裡,有一個有趣的現象:尿布和啤酒赫然擺在一起出售。但是這個奇怪的舉措卻使尿布和啤酒的銷量雙雙增加了。這不是一個笑話,而是發生在美國沃爾瑪連鎖店超市的真實案例,并一直為商家所津津樂道。沃爾瑪擁有世界上最大的資料倉庫系統,為了能夠準确了解顧客在其門店的購買習慣,沃爾瑪對其顧客的購物行為進行購物籃分析,想知道顧客經常一起購買的商品有哪些。沃爾瑪資料倉庫裡集中了其各門店的詳細原始交易資料。在這些原始交易資料的基礎上,沃爾瑪利用資料挖掘方法對這些資料進行分析和挖掘。一個意外的發現是:”跟尿布一起購買最多的商品竟是啤酒!經過大量實際調查和分析,揭示了一個隐藏在“尿布與啤酒”背後的美國人的一種行為模式:在美國,一些年輕的父親下班後經常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時也為自己買一些啤酒。産生這一現象的原因是:美國的太太們常叮囑她們的丈夫下班後為小孩買尿布,而丈夫們在買尿布後又随手帶回了他們喜歡的啤酒
從這個例子中引出裡 關聯規則
關聯規則(Association Rules)是反映一個事物與其他事物之間的互相依存性和關聯性,是資料挖掘的一個重要技術,用于從大量資料中挖掘出有價值的資料項之間的相關關系。
常見的購物籃分析
該過程通過發現顧客放人其購物籃中的不同商品之間的聯系,分析顧客的購買習慣。通過了解哪些商品頻繁地被顧客同時購買,這種關聯的發現可以幫助零售商制定營銷政策。其他的應用還包括價目表設計、商品促銷、商品的排放和基于購買模式的顧客劃分。
可從資料庫中關聯分析出形如“由于某些事件的發生而引起另外一些事件的發生”之類的規則
本篇文章主要講解 關聯規則的基本算法: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 次,大大減少了計算量。
算法不好看 不易懂,來個例子解釋一下:
(三)執行個體解釋
算法推導:
我們的資料集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項集,疊代結束。