關聯規則挖掘算法

關聯規則挖掘是一種基于規則的機器學習算法,該算法可以在大數據庫中發現感興趣的關系。它的目的是利用一些度量指標來分辨數據庫中存在的強規則。也即是說關聯規則挖掘是用于知識發現,而非預測,所以是屬于無監督的機器學習方法。

“尿布與啤酒”是一個典型的關聯規則挖掘的例子,沃爾瑪為了能夠準確了解顧客在其門店的購買習慣,對其顧客的購物行為進行購物籃分析,想知道顧客經常一起購買的商品有哪些。沃爾瑪利用所有用戶的歷史購物信息來進行挖掘分析,一個意外的發現是:"跟尿布一起購買最多的商品竟是啤酒!

關聯規則挖掘算法不僅被應用于購物籃分析,還被廣泛的應用于網頁瀏覽偏好挖掘,入侵檢測,連續生產和生物信息學領域。

與序列挖掘算法不同的是,傳統的關聯規則挖掘算法通常不考慮事務內或者事件之間的順序

支持度和置信度

那么我們如何能夠從所有可能規則的集合中選擇感興趣的規則呢?需要利用一些度量方法來篩選和過濾,比較有名的度量方法是最小支持度(minimum support)最小置信度(minimum confidence)

假定我們一個數據庫包含5條事務,每行表示一個購物記錄,1 表示購買,0 表示沒有購買,如下圖表格所示:

ID | milk | bread | butter | beer | diapers
----|------|------|------|----
1 | 1| 1 | 0 | 0 | 0
2| 0| 0| 1| 0| 0
3| 0| 0| 0| 1| 1
4| 1| 1| 1| 0| 0
5| 0| 1| 0| 0| 0

讓 X,Y 各表示為一個 item-set, X ? Y 表示為一條規則(尿布 ? 啤酒 就是一條規則),用 T 表示為事務數據庫(并不是說只局限于事務數據庫)。

支持度(Support)

支持度表示 item-set 在整個 T 中出現的頻率。假定 T 中含有 N 條數據,那么支持度的計算公式為:

譬如在上面的示例數據庫中,{beer, diaper} 的支持度為 1/5 = 0.2。5 條事務中只有一條事務同事包含 beer和 diaper ,實際使用中我們會設置一個最低的支持度(minimum support),那些大于或等于最低支持度的 X 稱之為頻繁的 item-set 。

置信度(Confidence)

置信度表示為規則 X ? Y 在整個 T 中出現的頻率。而置信度的值表示的意思是在包含了 X 的條件下,還含有 Y 的事務占總事務的比例。同樣假定 T 中含有 N 條數據,那么置信度的計算公式為:

譬如再上面的示例數據庫中,{beer, diaper} 的置信度為 0.2/0.2 = 1。表面在所有包含 beer 的事務中都會一定包含 diaper。同樣的,在實際使用中我們會設置一個最低置信度,那些大于或等于最小置信度的規則我們稱之為是有意義的規則。

相關性度量

有時候使用支持度和置信度挖掘到的規則可能是無效的。

舉個例子:

10000 個事務中, 6000 個事務包含計算機游戲, 7500 個包含游戲機游戲, 4000 個事務同時包含兩者。關聯規則(計算機游戲 ? 游戲機游戲) 支持度為 0.4 ,看似很高,但其實這個關聯規則是一個誤導。在用戶購買了計算機游戲后有 (4000÷6000) = 0.667 的概率的去購買游戲機游戲,而在沒有任何前提條件時,用戶反而有 (7500÷10000) = 0.75的概率去購買游戲機游戲,也就是說設置了購買計算機游戲這樣的前置條件反而會降低用戶去購買游戲機游戲的概率,所以計算機游戲和游戲機游戲是相斥的,也即表明是獨立的。

因此我們可以通過下面的一些相關性度量方法來篩選挖掘到的規則。

提升度(Lift)

提升度可以用來判斷規則 X ? Y 中的 X 和 Y 是否獨立,如果獨立,那么這個規則是無效的。

計算提升度的公式如下:

如果該值等于 1 ,說明兩個條件沒有任何關聯。如果小于 1 ,說明 X 與 Y 是負相關的關系,意味著一個出現可能導致另外一個不出現。大于 1 才表示具有正相關的關系。一般在數據挖掘中當提升度大于 3 時,我們才承認挖掘出的關聯規則是有價值的。

他可以用來評估一個出現提升另外一個出現的程度。

提升度是一種比較簡單的判斷手法,實際中受零事務(也即不包含 X 也不包含 Y 的事務)的影響比較大。所以如果數據中含有的零事務數量較大,該度量則不合適使用。

全置信度 和 最大置信度

給定兩個項集 X 和 Y ,其全置信度為

不難知道,最大置信度為

全置信度和最大置信度的取值都是從 0 ~ 1 ,值越大,聯系越大。

該度量是不受零事務影響的。

KULC 度量 + 不平衡比(IR)

給定兩個項集 X 和 Y,其 Kulczynski(Kulc) 度量定義為:

可以看做是兩個置信度的平均值,同樣取值也是從 0 ~ 1,值越大,聯系越大,關系越大。

該度量同樣也是不受零事務影響的。

Apriori 算法

在執行算法之前,用戶需要先給定最小的支持度和最小的置信度。
生成關聯規則一般被劃分為如下兩個步驟:
1、利用最小支持度從數據庫中找到頻繁項集。

給定一個數據庫 D ,尋找頻繁項集流程如下圖所示

頻繁項集的流程示意圖

C1 中 {1} 的支持度為 2/4 = 0.5 表示在 D 中的 4 條事務中,{1} 出現在其中的兩條事務中,以后幾個步驟的支持度計算方式也是類似的。假定給定的最小支持度為 0.5,那么最后我們可以得到一個包含 3 個項的頻繁項集 {2 3 5}。

另外,從圖中我們可以看到 itemset 中所包含的 item 是從 1 增長到 3 的。并且每次增長都是利用上一個 itemset 中滿足支持度的 item 來生成的,這個過程稱之為候選集生成(candidate generation)。譬如說 C2 里就不包含 C1 中的 4 。

2、利用最小置信度從頻繁項集中找到關聯規則。

同樣假定最小的置信度為 0.5 ,從頻繁項集 {2 3 5} 中我們可以發現規則 {2 3} ? {5} 的置信度為 1 > 0.5 ,所以我們可以說 {2 3} ? {5} 是一個可能感興趣的規則。

從第一步中我們看出每次計算支持度都需要掃描數據庫,這會造成很大的 I/O 開銷,所以有很多變種的算法都會在該問題上進行優化(FP-Growth)。此外如何有效的生成候選集也是很多變種算法優化的問題之一(Apriori-all)。

總結

  • 關聯規則是無監督的學習算法,能夠很好的用于知識的發現。
  • 缺點是很難嚴重算法的有效性,一般只能夠通過肉眼觀察結果是否合理。

>> 下一篇:加權關聯規則挖掘算法

參考資料

  1. Association Rule Learning
  2. Data mining: Concepts and Technique
  3. Fast Algorithm For Mining Association Rule (Apriori-all 算法)
  4. Mining frequent patterns without candidate generation: a frequent-pattern tree approach (FP-Growth算法)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容