資料分析|有關係就是沒關係-淺談Apriori演算法

2022/07/21閱讀時間約 9 分鐘

最近在公司跟資料科學家一起討論了產品推薦機制的運作邏輯,才開始理解了甚麼是關聯分析(Associative Analysis),覺得挺有趣的,想說把學習心得記錄下來,藉此機會跟大家分享。
關聯分析的主要發展目的,其實就是為了在一個資料集當中,找尋各項間彼此的關係,在行銷資料科學領域,它也被稱為購物籃分析(Market Basket Analysis),大家比較熟悉的,應該就是流傳許久的經典案例「Walmart 尿布與啤酒的故事」,也是透過關聯分析法發現的。
「尿布與啤酒」的故事,美國的婦女們經常會囑咐她們的丈夫下班後,幫孩子買些尿布回家,可是丈夫通常在買完尿布後,很容易順手買回自己愛喝的啤酒,因此賣場就嘗試著將尿布和啤酒擺在相鄰的附近,結果這樣的商品擺放方式,造成尿布和啤酒的銷量雙雙增加。
關聯分析的概念最早是由Agrawal et. al. (1993) 所提出,隨後,Agrawal & Srikant (1994) 進一步推出了 Apriori演算法,以做為關聯分析的主要演算邏輯,它就是以「支持度」(Support)「信賴度」(Confidence)「提升度」(Lift)三個評估指標,來對商品項目之間的關聯性,進行篩選工作。
接著下來,我們就以「樂屋網」產品的使用者行為資料庫,做為假設的範例,進行簡單的解釋說明。
有四位用戶在「樂屋網」網站上各自看了幾間房屋物件,伺服器的紀錄資料集如下:

支持度(Support)的計算

接著,我們就可以從資料集中整理出每個房屋物件的出現次數來得出支持度,支持度的公式為:
Support(X) = number(X) / number(All Samples)
Support(X,Y)=number(XY)/number(All Samples)
在關聯性分析中,我們通常還會先設定最小支持度(Min Support)與最小信賴度(Min Confident),這需要自行定義,在此我們假設建議此關聯模式的最小支持度為50%,因為資料集筆數(列數)有4筆,所以4*50%=2,也就是說超過2筆以上就為高頻項目集,低於2筆就予以捨棄不用。
根據最低支持度的要求,我們捨棄次數未達2筆的項目集,同時再往下進行兩種以及三種商品同時出現的次數比例。
最後,將以上三個表進行彙整,找出支持度超過50%的項目集,並將其子集合刪除,所以得到三個高頻項目集,此就是為關聯分析的初步結果。
下一步就要進行「信賴度」(Confidence)的分析,它的解釋意義是當事件X發生的情況下,同時會發生Y的可能性,公式為:
Confidence(X→Y) = P(Y|X) ,= P(X∩Y) / P(X)
但是在正式進入「信賴度」這個環節前,為了避免大家對於「機率」理論忘得差不多了,所以想先回顧一下以前學校所教過的基礎數學,後續才會比較容易理解。

條件機率與貝氏定理

機率與集合的概念息息相關,所以要了解如何透過「機率」分析來解釋「集合」的問題時,怎麼推理問題的脈絡就是一個非常重要的課題,如何使用邏輯的方式產生我們的命題,進而推理出結果。換質換位定律就是一種常用的邏輯推理法。
基本上可分為「換質推理」「換位推理」,以及「換質換位推理」,完整的論述相當複雜,但有一個基本觀念就好,我們就先以covid-19的議題假設性討論,來做簡單示範:
  • 換質推理
    所有確診者都是PCR陽性------>原命題
    沒有確診者是非PCR陽性------>換質推理的結果
    有些快篩陰性是確診者------>原命題
    有些快篩陰性不是確診者------>換質推理的結果
  • 換位推理
    有些快篩陰性是確診者------>原命題
    有些確診者是快篩陰性------>換位推理的結果
    沒有確診者是PCR陰性------>原命題
    沒有PCR陰性是確診者------>換位推理的結果
  • 換質換位推理
    所有PCR陽性都是確診者------>原命題
    所有PCR陰性都不是確診者------>換質換位推理的結果
    有些確診者不是快篩陽性------>原命題
    有些快篩陰性不是非確診者------>換質換位推理的結果
上面的換質換位推理很常應用在反證思維上,假如我們無法直接證明原命題的真假,只要判斷換質換位後的結果是真還是假,就能間接證明原命題的真假了!以上這些數學的推理都有嚴謹的邏輯性,沒有模糊的空間,但套用在真實世界中,卻是有很多例外狀況,比如說【感冒------>發燒超過37度】的邏輯命題若是正確的,則換質換位推理反證就會變成【體溫正常------>非感冒】,很顯然這樣的說法,跟我們常理判斷有很大的出入。
因此,真實世界反而是利用機率和統計的思考方式來做「真假」判斷,【感冒------>發燒超過37度】這個命題,就應該被調整為【感冒------>發燒超過37度的機率有多少%】,而這樣的思考模式也已經大量的運用於現今的AI機器學習領域上。
以上的論證方法都熟悉之後,我們簡單學習,基本的邏輯符號如何用來表達集合關係。首先我們假設,有兩個由數字組成的集合,A集合為{1, 2, 3, 4},B集合為{3, 4, 5, 6}。
接著就進一步聊最重要的主題,條件機率最常使用的方法論—貝氏定理(Bayesian statistics),它是「利用已知事件的發生機率來推測未知事件的機率」,用來幫助未知事件做分類。
實際應用上,我們都會採取簡化版的單純貝氏定理分類器,單純的定義是我們將事件假設完全獨立,彼此之間不會有所影響,這樣的假設雖然與現實不符,可是能簡化計算,也具有一定程度的準確性。
一樣的,我們用實際範例來解釋「貝氏定理」,會比較容易理解。
有一間公司由A、B、C三台機器生產螺帽,其中,A機器生產量佔總體50%,不良品的機率為3%;B機器生產量佔總體30%,不良品的機率為4%;C機器生產量佔總體20%,不良品的機率為5%。公司產線主管在所有螺帽中抽出一個,其為不良品之機率為多少?以及若已知為不良品,求此螺帽為A機器生產出來之機率是多少?
看上面的公式似乎很複雜,但其實觀念相當簡單,相信大家應該都學會了,接下來就可以回到我們的Apriori演算法。

信賴度(Confidence)的計算

我們之前的「樂屋網」看屋行為範例,透過「支持度分析」得出了AB、AC、BCE三者存在著關聯性,接著進入「信賴度」的計算,以AB項目集為範例,會有A->B以及B->A兩個狀況,其中A->B指的是,在A出現的情況下,B出現的機率,公式為P(B|A)=P(A∩B)/P(A)。
從上面的瀏覽房屋物件行為資料庫中可發現,
P(A∩B)為2/4=0.5(總共出現的次數為4次,同時出現A與B的次數為2次)
P(A)為2/4=0.5(總共出現的次數為4次,A出現的次數為2次)
所以P(B|A)=P(A∩B)/P(A)=0.5/0.5=100%。
同理可證,B->A是指,在B出現的情況下,A出現的機率。因此,B共出現4次(P(B)=4/4=1),而B與A同時出現為2次(P(B∩A)=2/4=0.5),所以
P(A|B)=P(B∩A)/P(B)=0.5/1=50%,所有可能出現的計算結果如下圖:
假設我們最小信賴度(Min Confident)設定為70%,所以把信賴度高於70%的項目集挑出來,就可以得出AB中的A->B,AC中的A->C,與BCE中的E->BC、BE->C與CE->B,機率值都是超過信賴度70%的100%。

提升度(Lift)的計算

最後的提升度(Lift)指標的意涵是表示當經出現商品A的情況下,出現商品B的機率,公式為:
Lift(A -> B) = Confidence(A -> B) / P(B) = P(B | A) / P(B)
  • 提升度 > 1 : 表示數據間越相關,呈正相關
  • 提升度 = 1 : 表示兩數據獨立,不相關
  • 提升度 < 1 : 表示兩數據呈負相關
因此以(A -> B)來看提升度,P(B | A)為100%,P(B)也為100%,所以Lift(A -> B)就等於1,表示兩個數據獨立,並沒有太大相關,其他的計算方式都雷同,就不特別示範了,有興趣的朋友可以自行練習看看。
以上,就是電商平台最愛使用的「購物籃分析」理論的基礎架構,相信聰明的大家,應該也可以利用這些觀念養成,去開發出一些有趣的產品功能應用吧!
參考資料:
為什麼會看到廣告
我吃故窩宅
我吃故窩宅
喜歡對稱,也喜歡大膽留白,喜歡狗,也喜歡貓,喜歡朝更好的自己邁進--目前在互聯網時代,從事行銷X數據X運營的工作,現在的我,還喜歡窩在家,用簡單的事物填滿每一天。
留言0
查看全部
發表第一個留言支持創作者!