1. 程式人生 > 其它 >關聯規則挖掘——Apriori

關聯規則挖掘——Apriori

演算法目的

關聯規則挖掘中有一個非常典型的案例,"啤酒紙尿褲"案例,講的是通過對一家超市的銷售情況研究發現,很多買了紙尿褲的客戶,同時會購買啤酒,經過調查發現,買這些紙尿褲的一般是家庭父親,他們在被家庭主婦派去買紙尿褲時,會同時選擇購買啤酒來犒勞自己,根據這個發現,超市將紙尿褲和啤酒放在一起,或者將它們進行捆綁銷售,提高了產品的銷量。
關聯規則挖掘就是通過挖掘演算法來找到事物背後隱藏的關聯規則,從而來指導實踐,相類似的還有鍵盤與滑鼠等

關聯規則基礎概念

  • 關聯規則:形式為A->B,如{麵包}->{牛奶,果醬},表示麵包與牛奶和果醬之間存在關聯關係
  • 項:事物的型別,類似資料表中的欄位,在"啤酒紙尿褲"中,啤酒和質量庫就是兩個項
  • 項集:項的集合,根據所含項的多少,分為單位項,2項,3項等等
  • 事務:行為的記錄,類似資料表中的記錄,在"啤酒紙尿褲"中,指代使用者的一次次購買行為
  • 支援計數:某一項集在所有事務中出現的次數
  • 支援度:某一項集在所有事務中佔的比例,即支援計數除以總事務數,用於判斷某一項集是否為頻繁項集
  • 置信度:關聯規則中,後件項集在前件項集中出現的頻繁程度,對於{麵包}->{牛奶,果醬},就是牛奶,果醬這一組合在所有出現麵包的事務中出現的頻率,置信度越高,表示關聯性越強
  • 最小支援度:用於判斷某一項集是否為頻繁項集,大於最小支援度時,為頻繁項集
  • 最小置信度,用於判斷某一關聯規則是否為強關聯規則,大於最小支援度時,為強關聯規則

Apriori原理

  • 1、找出所有可能的大小為1候選項集,大小為1時,所有項集都是候選項集,當大於1時,只有當該項集的子項集為頻繁項集時,該項集才為候選項集
  • 2、根據最小支援度,從候選項集中篩選出頻繁項集
  • 3、重複1、2步驟,尋找大小+1的頻繁項集,直到沒有更大的候選項集
    事務集:
TID 商品
1 {麵包,牛奶,果醬,餅乾,可樂,泡麵}
2 {麵包,牛奶,果醬,餅乾}
3 {麵包,牛奶,果醬}
4 {可樂,泡麵}
5 {可樂,泡麵}

第一步,找出大小為1的候選集:

項集 支援度計數
{麵包} 3
{牛奶} 3
{果醬} 3
{餅乾} 2
{可樂} 3
{泡麵} 3

第二步,根據最小支援度來篩選出頻繁項集,設最小支援度為0.5,則頻繁項集為:

項集 支援度計數
{麵包} 3
{牛奶} 3
{果醬} 3
{可樂} 3
{泡麵} 3

第三步,找出大小為2的候選集:

項集 支援度計數
{麵包,牛奶} 3
{牛奶,果醬} 3
{麵包,果醬} 3
{可樂,泡麵} 3
{麵包,可樂} 1
{牛奶,可樂} 1
{果醬,可樂} 1
{麵包,泡麵} 1
{牛奶,泡麵} 1
{果醬,泡麵} 1

第四步,根據最小支援度來篩選出頻繁項集,設最小支援度為0.5,則頻繁項集為:

項集 支援度計數
{麵包,牛奶} 3
{牛奶,果醬} 3
{麵包,果醬} 3
{可樂,泡麵} 3

第五步,找出大小為3的候選集:

項集 支援度計數
{麵包,牛奶,果醬} 3

第四步,根據最小支援度來篩選出頻繁項集,設最小支援度為0.5,則頻繁項集為:

項集 支援度計數
{麵包,牛奶,果醬} 3