關聯規則(AssociationRules),無監督學習方法,用於知識發現。
其可以用於給數據進行標注,但缺點是其結果難以進行評估。
關聯規則的最經典的案例就是購物籃分析。同樣也可用於電影推薦、約會網站或者葯物間的相互副作用。
關聯規則首先定義:為項集(items),其中
為項。
則為數據庫(database),其中
為事務(transaction)。事務是項的集合,即
,每個事務有唯一的標識索引,而規則定義如下:
每條規則有兩個不同的項集X和Y組成,X稱為前提,Y則稱為結論。
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 |
表1-1 超市銷售記錄表
在表中 {butter, bread} → {milk}是一條關聯規則,表示如果顧客在購買butter和bread后,有很大的可能會購買milk。而類似這樣的規則能夠幫助超市制定一些促銷活動,提高營業。
這條規則的發現,需要其符合一定的指標。這些指標分別為支持度(support)和置信度(confidence)等等。
支持度,用來表示項集在數據庫中出現的頻率。對於數據庫D中的項集X,其定義為:數據庫中包含項集X的事務數t與所有事務數T之比
置信度,用來衡量規則的可信程度,對於規則 X → Y ,其置信度定義為:數據庫中同時包含X 和 Y的事務數 與 只包含X的事務數之比
Lift定義為:
如果一個規則的lift值等於1,這表示前提和結論對應的事件相互獨立;如果lift值大於1,指示了兩個事件之間的相互依賴程度,值越大,關聯越強;如果lift值小於1,表明一個item的出現對其他item的出現存在消極影響(相斥),反之亦然(其中一個出現另一個一般不會出現)。lift的意義在於其即考慮了置信度也考慮了整個數據集中結論的支持度。
Conviction,用來表示規則預測出錯的概率,定義為:
在有了這些可計算的指標后,還需要給這些指標設定一個閾值,關聯規則只有滿足最小支持度閾值和最小置信度閾值,這條規則才能認為是有趣的。而且關聯規則的生成可分以下兩個步驟:
- 利用最小支持度閾值從數據庫中找出所有的頻繁項集;
-
利用最小置信度閾值從這些頻繁項集中生成規則。
關聯規則的生成規則的階段是直接的,但尋找頻繁項集卻是非常耗時的,常用的高效的算法有Apriori,FP-growth等。
Apriori算法
假設一家商鋪經營着四種商品:商品0,商品 1,商品 2 和商品 3。根據排列組合,購買商品的情況有15種組合。如果商品的種類增加的話,購買商品的情況組合則可能呈指數級增長。Apriori根據:
- 如果某個項集是頻繁的,那么它的所有子集也是頻繁的;
-
如果某個項集是非頻繁的,那么它的所有超集也是非頻繁的
來幫助減少在頻繁項集上的搜索遍歷。
圖1-1 Apriori搜索頻繁項集的原理
Apriori 算法是發現頻繁項集的一種方法。過程如下:
- 生成所有單個物品的項集列表。
- 接着掃描交易記錄來查看哪些項集滿足最小支持度要求,那些不滿足最小支持度的集合會被去掉。
- 對剩下來的項集進行組合以生成包含兩個元素的項集。再重新掃描交易記錄,去掉不滿足最小支持度的項集。
- 重復 步驟3 進行直到所有項集都被去掉。