tldr: 透過 @adam kelleher 寫的 Causal Data Science 系列文章來思考因果分析在廣告成效上的應用。
Q. 相關性和因果的差別?
相信大家以前在上統計課的時後,都聽過老師再三強調就算 A 和 B 的相關性很高也不代表 A 和 B 之間有任何因果關係,也就是我們不能得出說 A 導致 B or B 導致 A 這種結論。
用下圖的例子來說,決定我們上班會不會遲到可能有兩個原因: 1.「手機鬧鐘沒響」和 2.「大塞車」,他們都很有可能會導致我們上班是否遲到。但如果今天發生地震,導致了電網斷電,使得你手機沒電,路上的號誌也沒電。也就是說這兩個事件會因為地震而同時發生,導致「手機鬧鐘沒響」和「大塞車」在統計上的相關性很高,但我們不會說手機沒電導致大塞車,或反過來說大塞車造成我的手機沒電,因為我們都知道這個背後有一個共同因素叫做「地震」。
這也是為什麼儘管 A 和 B 的相關性很高,但也不代表他們有因果關係,因為可能有某個我們不知道的 C 同時影響了 A 和 B。而因果分析在做的就是想各種辦法去把這些我們所不知道的一堆額外因素 C 排除掉,進而得出 A 和 B 真實的關係。
Note: 想知道數學上怎麼定義因果關係的話,可以參考下方文章
Q. 為什麼需要因果分析?
對我自己來說,最直覺的應用就是我想要邀功,身為一個行銷人找幾個網紅幫我們曝光產品來導入用戶是現在很流行的操作,但既然花了公司的錢,老闆肯定會逼我們說出這些錢花得值不值得,漂不漂亮。這時我們就會用到因果分析了。因為老闆想知道,你花這些錢做的「網紅曝光」是不是真的「導致」了「用戶下單」,對應的廣告投資報酬率是不是划算。
相似情境其實非常的多,包含我們產品的改動是不是導致了用戶行為發生變化、定價策略改變是不是導致銷售額提升以及客服人數變多是不是導致了滿意度提高等等。
Q. 怎麼評估網紅影片曝光的效果?
假設我自己是個手機殼製造商,最近推出了一個厲害的防摔殼,所以就我們找了網紅「上班不要看的呱老闆」,請他幫這個殼拍了一個業配影片 (Link),希望他們的粉絲會因為看了這個影片更認識我們的產品,進而下單購買這個產品。
計算網紅效果最常見的作法就是請網紅在 Youtube 影片下方說明欄位加入「官網的連結」或是提供一個「商品折扣碼」 (如下圖),如果用戶透過該連結進入我們的官網下單或是在結帳時輸入網紅對應的折扣碼時,我們就會把這筆訂單當作該網紅的功勞,這個過程稱為歸因 (Attribution),最後我們再把該網紅帶來的全部訂單加起來就是這次網紅活動帶來的收入。
但如果用直接歸因的方式討論效果的話,就會錯過那種看完影片就划掉頁面的用戶,因為他們只是沒有點廣告也沒有看到折扣碼,但不代表他們看了影片後沒有下單。也可能有很多用戶可能本來就打算買我們的殼,但剛好看到這個影片,然後點了下方連結,他的網站路徑來源可能就從本來的 Google Search 變成呱老闆影片,讓這筆訂單變成網紅的功勞。而因果分析就是為了解決這兩種可能的問題,去找出因為網紅所「額外」帶來的銷量 (Incremental Sales)。
Q. 因果分析怎麼算?
在某個平行宇宙中,小明在刷 Youtube 時看到這個呱老闆的影片後,就下單買了手機殼,而在另個平行宇宙中,小明沒刷到這個影片,就買了另外一個廠商的手機殼。這時候我們就確定小明是因為看了呱老闆影片才購買我們家的手機殼 (Unit-level causal effect)。而如果我們可以在不同宇宙裡面知道這些觀眾是否會因為看了影片而購買了話,我們就可以很簡單的透過不同宇宙間觀眾行為的差異來知道網紅效果。
但因為我們沒有能力知道不同宇宙間的差異,所以常見的做法就是建立一個 A/B Test。我們把一堆小明聚集起來,當作一個用戶母體,在這個母體裡,我們再將用戶隨機分成 Control 和 Test 兩組,讓 Test 組別的用戶看到影片, Control 組的用戶看不到影片。因為用戶是隨機被分到某個組別的,所以我們可以假設兩個組別的用戶構成是完全一樣的,唯一的區別就是我們的測試項目 aka. 是否看網紅影片 (Treatment)。
最後我們就可以用兩個組別的購買率差異當作評估指標,來判斷網紅影片是不是能提升購買率,再把這個購買率差異 x 上影片曝光人數,就能知道網紅影片帶來的額外銷量。
Q. 如果不能做實驗,因果分析怎麼算?
但現實生活中往往會出現很多我們沒辦法做實驗的情況 (Natural Experiment / observational studies),也就是說我們沒有把用戶隨機分成 Control 和 Test 兩組。當呱老闆把影片上架到頻道時,我們沒有辦法控制誰可以看到影片,連 Google 爸爸可能都不能決定這件事情。
在這種情況下,我們一樣能知道看了影片的用戶購買率 (e.g., 影片歸因到的訂單 / 影片來源用戶數) 和沒看影片的用戶購買率 (e.g., 其他歸因的訂單 / 對應來源用戶數)。但我們不能直接像 A/B Test 時用兩個組別購買率的差異當作網紅效果,因為用戶看不看影片很有可能被另外的因素所影響,像是這個影片的畫質非常高需要 5 G 網路才跑得動,所以能順看影片的人都是高階 5G 手機用戶,而高階手機用戶購買手機殼的機率本來就比低階手機用戶高*。這種用戶構成的差異就會導致看影片和沒看影片間的購買率差異不是單純由是否看網紅影片這件事情本身決定的。
這個問題的解法就是我們要更小心地去挑選比較的對象 (Matching methods for causal inference),也就是自己去生成一個 Control Group (Cunterfactual),也就是我們就單純把 5 G 手機用戶拎出來看,去比較在 5 G 手機用戶裡面,看不看影片對於購買率的差異影響大不大。
Note: 在 A/B Test 的情況下,因為是隨機分組,所以照理來說兩個組別高階手機的比例會是相同的,我們在計算網紅廣告效果時,就可以排除高階手機的影響。
Q. 常見的因果分析方法?
由於我沒本事說明每個算法的原理和過程,就附上常見方法對應的一些學習資源。我理解下來這都是去尋找所能用來比較的對照組,尋找完後就和 A/B Test 的過程相似,去比較兩個組別間的效果差異。而如果是行銷活動的因果分析的話,通常都會伴隨著時間因素,也就是這個活動對於銷量的影響會隨著活動過去而影響下降。
1. Difference in Difference
2. Synthetic Control
3.Time Series (Google 開源套件 R package / 非官方 Python 版)
最後
雖然上面介紹了很多因果分析的方法,但其實因果分析的計算還是站在一個總體的概念去討論事情,如果我們同時請了很多網紅業配,想要集中曝光我們的產品 (相對於一次一個網紅,集中曝光可能是一個更常見的操作),這時候我們就沒有辦法透過因果分析去知道每一個網紅影片的效果,因為彼此之間的受眾一定是高度重疊,當我們要討論個別影片效果時,其實一定會包含到其他影片效果。
所以我們能做的可能就是透過歸因的方法來知道各別網紅分別的直接帶量效果,再用因果分析來整體評估這次的網紅操作對應的整體效果為何。
感謝你的閱讀,如有問題,歡迎各種指教 :)