初識機器學習:關聯規則

語言: CN / TW / HK

這是我參與「掘金日新計劃 · 8 月更文挑戰」的第4天,點擊查看活動詳情

關聯規則,或者關聯規則學習(Association Rule Learning)是一種在大量數據點中發現隱蔽的關聯關係的方法。能夠利用一些有趣的量度來識別數據點集中發現的強規則。

關聯規則最常見的使用場景就是購物,不管是線上還是線下,上架都希望從顧客的購物記錄中,尋找不同商品之間並非顯而易見的關係,以此來推薦商品、優化商品陳列、推送廣告等。

如何量化關聯規則:支持度、置信度和提升度

我們以超市購物的訂單數據為例,如下是一組示例數據

| 交易 | 商品 | | --- | ----------- | | 交易1 | 🍎 🍺 🍚 🍗 | | 交易2 | 🍎 🍺 🍚 | | 交易3 | 🍎 🍺 | | 交易4 | 🍎 🍺 🍐 | | 交易5 | 🍼 🍺 🍚 🍗 | | 交易6 | 🍼 🍺 🍚 | | 交易7 | 🍼 🍺 | | 交易8 | 🍼 🍺 🍐 |

支持度

支持度某個項集出現的頻率,也就是包含這個項集的交易數佔總交易數的比例。在上面的例子中,🍎 的支持度,可以表示為:支持度{🍎}=4/8

置信度

置信度是指當 X 項出現的時候,Y 項同時出現的概率,用 {X->Y} 表示,也就是同時包含 X 項和 Y 項的交易數佔包含 X 項的交易數的比例。

在上面的例子中,置信度{🍎->🍺} 的置信度是:置信度{🍎->🍺}=支持度{🍎,🍺}/支持度{🍎}。根據上面的交易數據可以得出,結果為3/4

不過,置信度這個指標存在一個缺陷,當購買 🍎 的顧客大概率也會購買 🍺 的時候,並不一定代表兩者的關聯度比較高,也有可能,🍎 和 🍺 之間其實並沒有什麼關聯關係,只是,兩者都屬於非常暢銷的單品,因此才同時出現在了很多顧客的訂單中。

這種情況下,置信度其實給了我們錯誤的判斷,「提升度」這個指標可以幫我們規避這個問題。

提升度

提升度指的是,X 項和 Y 項同時出現的頻率,並且同時考慮了 X 項和 Y 項各自出現的頻率。它的計算方式是這樣:提升度{🍎->🍺}=支持度{🍎,🍺}/支持度{🍎}*支持度{🍺},結合前面的兩個指標,不難看出,實際上,提升度{🍎->🍺}=置信度{🍎->🍺}/支持度{🍺},結果是 1。結果是 1 則代表,兩者之間並無關聯,如果這個結果比 1 大,則代表兩者存在關聯,結果越大,提升度越高,則代表兩者關聯度越大,反之,如果這個結果小於 1,則代表兩者負相關的關係。

關聯規則的特點

在數據規模特別大的時候,偶爾會出現假關聯的情況,這個時候,為了確保關聯規則的普適性,需要對結果進行驗證。

關聯規則的一個更大的問題是,需要非常大的計算量來完成,即使只有 10 種商品,也需要對上千種組合進行計算(2^10-1=1023),而在真實的商場超市或者線上商城中的商品數量,能夠組成的組合數會是一個天文數字。關於這個問題如何解決,我會在下一篇中介紹。


參考:《白話機器學習算法》