本文主要來自《資料倉儲和資料探勘》一書,這本書講的和維基百科裡的非常相似,懷疑是從某本外文書籍裡翻譯過來的。
關聯規則挖掘(association rule mining)是資料探勘中最活躍的研究方法之一,可以用來發現事情之間的聯絡,最早是為了發現超市交易資料庫中不同的商品之間的關係。
這裡有一則沃爾瑪超市的趣聞。沃爾瑪曾今對資料倉儲中一年多的原始交易資料進行了詳細的分析,發現與尿布一起被購買最多的商品竟然是啤酒。借助資料倉儲和關聯規則,發現了這個隱藏在背後的事實:美國的婦女經常會囑咐丈夫下班後為孩子買尿布,而30%~40%的丈夫在買完尿布之後又要順便購買自己愛喝的啤酒。根據這個發現,沃爾瑪調整了貨架的位置,把尿布和啤酒放在一起銷售,大大增加了銷量。
這裡借用乙個引例來介紹關聯規則挖掘[1]。
表1 某超市的交易資料庫
交易號tid
顧客購買的商品
交易號tid
顧客購買的商品
t1bread, cream, milk, tea
t6bread, tea
t2bread, cream, milk
t7beer, milk, tea
t3cake, milk
t8bread, tea
t4milk, tea
t9bread, cream, milk, tea
t5bread, cake, milk
t10bread, milk, tea
定義一:設i=,是m個不同的專案的集合,每個ik稱為乙個專案。專案的集合i稱為項集。其元素的個數稱為項集的長度,長度為k的項集稱為k-項集。引例中每個商品就是乙個專案,項集為i=,i的長度為6。
定義二:每筆交易t是項集i的乙個子集。對應每乙個交易有乙個唯一標識交易號,記作tid。交易全體構成了交易資料庫d,|d|等於d中交易的個數。引例中包含10筆交易,因此|d|=10。
定義三:對於項集x,設定count(x⊆t)為交易集d中包含x的交易的數量,則項集x的支援度為:
support(x)=count(x⊆t)/|d|
引例中x=出現在t1,t2,t5,t9和t10中,所以支援度為0.5。
定義四:最小支援度是項集的最小支援閥值,記為supmin,代表了使用者關心的關聯規則的最低重要性。支援度不小於supmin 的項集稱為頻繁集,長度為k的頻繁集稱為k-頻繁集。如果設定supmin為0.3,引例中的支援度是0.5,所以是2-頻繁集。
定義五:關聯規則是乙個蘊含式:
r:x⇒y
其中x⊂i,y⊂i,並且x∩y=⌀。表示項集x在某一交易中出現,則導致y以某一概率也會出現。使用者關心的關聯規則,可以用兩個標準來衡量:支援度和可信度。
定義六:關聯規則r的支援度是交易集同時包含x和y的交易數與|d|之比。即:
support(x⇒y)=count(x⋃y)/|d|
支援度反映了x、y同時出現的概率。關聯規則的支援度等於頻繁集的支援度。
定義七:對於關聯規則r,可信度是指包含x和y的交易數與包含x的交易數之比。即:
confidence(x⇒y)=support(x⇒y)/support(x)
可信度反映了如果交易中包含x,則交易包含y的概率。一般來說,只有支援度和可信度較高的關聯規則才是使用者感興趣的。
定義八:設定關聯規則的最小支援度和最小可信度為supmin和confmin。規則r的支援度和可信度均不小於supmin和confmin ,則稱為強關聯規則。關聯規則挖掘的目的就是找出強關聯規則,從而指導商家的決策。
找出交易資料庫中所有大於或等於使用者指定的最小支援度的頻繁項集。
利用頻繁項集生成所需要的關聯規則,根據使用者設定的最小可信度篩選出強關聯規則。
目前研究人員主要針對第乙個問題進行研究,找出頻繁集是比較困難的,而有了頻繁集再生成強關聯規則就相對容易了。生成頻繁集比較經典的演算法有apriori演算法。
[1] 韓慧等。資料倉儲與資料探勘。清華大學出版社,2009。
[2] association rule mining. 2011.
關聯規則挖掘基本概念與Aprior演算法
我計畫整理資料探勘的基本概念和演算法,包括關聯規則挖掘 分類 聚類的常用演算法,敬請期待。今天講的是關聯規則挖掘的最基本的知識。關聯規則挖掘在電商 零售 大氣物理 生物醫學已經有了廣泛的應用,本篇文章將介紹一些基本知識和aprori演算法。啤酒與尿布的故事已經成為了關聯規則挖掘的經典案例,還有人專門...
關聯規則挖掘基本概念與Aprior演算法
關聯規則挖掘在電商 零售 大氣物理 生物醫學已經有了廣泛的應用,本篇文章將介紹一些基本知識和aprori演算法。啤酒與尿布的故事已經成為了關聯規則挖掘的經典案例,還有人專門出了一本書 啤酒與尿布 雖然說這個故事是哈弗商學院杜撰出來的,但確實能很好的解釋關聯規則挖掘的原理。我們這裡以乙個超市購物籃迷你...
資料探勘基本概念
1 過擬合 overfitting 顧名思義,某種演算法產生的分類器能夠百分百正確分類訓練樣本,而對於新出現的樣本,它都認為不屬於這個類別,實際資料不完全是訓練樣本能夠覆蓋的,訓練樣本只是其中一小部分,這導致其在新樣本的分類上準確率較低。如圖,可以看出在a中雖然完全的擬合了樣本資料,但對於b中的測試...