你相信平行世界嗎?你所做的每種不同選擇,都在另一個宇宙裡產生了不同結果。那你知道因果推斷的科學方法,可以幫助你窺探神秘的平行世界嗎?
這篇文章將帶你認識因果推論(Causal Inference)這個研究領域,用範例解釋分析因果關係究竟有什麼困難,並且介紹因果推論方法怎麼解救 A/B Testing 行不通的情境、還有怎麼創造「平行世界」!希望你讀完這篇淺談後,你也會愛上這個推敲「種什麼因」會「得什麼果」的有趣科學。
目錄
因果關係
「相關不代表因果」,這是每個學習資料科學的人都該聽過的警語。即使分析資料時看到兩個變數有高度相關性,如果無法證明因果關係,就代表我們不知道怎麼決定下一步該做什麼,統計與機器學習模型再怎麼強,模型本身依然只描述相關性、而不是因果關係,這樣分析資料不就沒意義了嗎?
以 Spurious Correlations 網站的數據為例,「溺水人數」跟「尼可拉斯凱吉 演出的電影數」兩個事件高度正相關,在沒有證明出因果關係之前,如果提出「請尼可拉斯凱吉先生不要再拍電影了,這樣就能讓溺水人數減少!」這種方案,只會讓人啼笑皆非。
對於商業經營,因果關係也至關重要,我們永遠都想知道如果「做了某事」使用者會不會更滿意,所以我們尋求能看出因果關係的分析方法,希望發揮數據更大的價值。
然而,因果關係分析是個十分棘手的問題。
分析因果關係有多困難?
分析因果關係有許多挑戰,以下,筆者好豪會用舉例的方式介紹其中三項重大的挑戰。
混淆變項
混淆變項(Confounding Variable)指的是會同時影響兩個變項的變項,會使研究者錯誤理解有興趣的那兩個變項之間的關係。
例如,在某個海水浴場,觀測到「每日冰淇淋銷售量」跟「每日溺水人數」有高度正相關,這不代表越多人溺水、就造成越多人買冰淇淋站在一旁當吃瓜群眾。對這項數據相關性有更大影響力的是「是否為晴天」這項混淆變項:
- 若是晴天 -> 玩水的遊客較多 -> 冰淇淋銷量跟溺水人數同時都較多
- 若是雨天 -> 玩水的遊客較少 -> 冰淇淋銷量跟溺水人數同時都較少
也分享一個筆者好豪看過的案例,假設某個手機遊戲產品最近剛進行了重大更新、遊戲內增加了很多好玩的新模式,卻有可能從數據看到玩家每日遊玩時間比以前更低!這個案例中「新玩家數量」就是個重要的混淆變項,新玩家之中有很多只嘗鮮兩分鐘就不玩的人,而老玩家本來就是已經享受遊戲、會長時間遊玩的人,所以手機遊戲剛更新時,有很多新玩家看到新的電視廣告而加入遊戲,使得新玩家比例提高,造成所有玩家的每日遊玩時間下降,而不是「因為遊戲變好玩了,所以玩家遊玩時間變低了」。
此外,混淆變項更棘手的挑戰在於,變項分成可觀測與不可觀測的(Unobserved Variable),想要在數據分析中控制混淆變項的影響,該混淆變項不只要可觀測、還要有人紀錄成資料才行。就算晴天或雨天一眼就看得出來、沒有人把這項觀測寫進資料集,那就算知道能控制混淆變項的統計方法,也沒法子處理了。
混淆變項對實驗組與控制組比較造成的問題之中,辛普森悖論 也是非常值得探討的數據分析議題,筆者好豪未來再另外寫文章和大家詳細探討。
自我選擇偏誤
自我選擇偏誤(Self-Selection Bias)指的是當樣本中的每個人可以自由選擇自己是否要加入某個群體時,會產生的分析偏誤。
我想,台灣選舉前後的電話民調就是一個自我選擇偏誤的好範例。接起電話之後,聽到「您好,我們想請問您幾個跟選舉有關的問題」,民眾可以自己選擇要繼續通話、還是索性掛掉電話。選擇繼續通話接受民調的民眾,大多都是對政治較熱衷的人;反之,一聽到選舉問題就掛上電話的民眾,大概對政治沒什麼興趣。因此,如果民調詢問「你是否會參與下一次總統投票」,即使 1,000 個民調中有 800 人回覆「是」,這個 80% 的投票率將遠高於真實投票率,因為自我選擇偏誤,會回答「否」的人都懶得回覆民調、根本不會出現在資料裡。
換個情境,假設你經營的筆記 APP 原本只有白色的背景主題,現在你設計了新的紅色背景色供你的客戶選擇,這項設計上線後,你開心地從數據中發現選擇改用紅色背景的客戶,每天使用筆記 APP 的時間比沒有更改背景的客戶多很多,這是不是代表紅色大家都愛、我們可以直接幫所有使用者都把筆記 APP 改成紅色背景呢?不見得這麼簡單!本來就愛用筆記 APP 的使用者,會更傾向主動探索或更改 APP 設定,換言之,修改顏色背景的使用者原本就比其他人花更多時間使用 APP,而不是修改顏色背景造成 APP 使用時間提高的結果。使用者自我選擇要不要改成紅色背景,使得是否修改顏色背景的兩組樣本的使用者特色相差慎大,沒有注意到這點就會產生無用的結論。
若是分析時沒有考慮到自我選擇偏誤,樣本的選擇從一開始就不公平,不管用什麼統計方法,計算出來的數據都會造成錯誤解讀與錯誤決策。
反事實
要說明反事實是什麼,筆者腦海一直迴響著台灣歌手戴佩妮的熱門歌曲《怎樣》,副歌是這樣唱的:
跟現在的事實不同,「如果 … 的話,狀況會怎樣?」就是反事實(Counterfactual)的意思。
- 如果 2020 年沒有爆發 Covid-19 疫情,台灣 2020 年冬季的演唱會數量會是多少?
- 特斯拉的老闆馬斯克發個推特(Twitter)文章,虛擬貨幣 Dogecoin 價格馬上就暴漲;如果馬斯克沒有發表文章,此虛擬貨幣當日的價格應該是多少?
- 雙十一活動,網路拍賣網站給所有客戶免運費的優惠,但如果沒有這項優惠,訂單總數量會是多少?
反事實的概念可以很夢幻地稱為「平行世界」,我們永遠不知道在平行世界,要是我們在一模一樣的時空背景下做了另一個選擇,會有什麼不同的結果,這幾乎是無解的問題。然而,換個方向思考,從資料科學的角度來看,嘗試推測反事實可以看成一種缺失值填補(Missing Value Imputation),把在平行世界做了另一個選擇的自己視為缺失值。如果我們知道因果關係、知道每個選擇或行為造成多少「效果」,就可以用「效果」來預測出缺失值、衡量換個選擇的平行世界最後可能是什麼樣貌。
混淆變項、自我選擇偏誤、還有反事實,都是因果推論想要突破的困難點,在介紹因果推論方法的奧妙之前,我們先談談為什麼業界明明已經有 A/B Testing 這項技術了、我們還需要特別研究更多因果推論方法來分析因果關係。
因果關係的聖盃:A/B Testing
A/B Testing 是一種因果推論的方法,也是現在業界為產品進行關鍵決策的顯學。
A/B Testing 的核心之一是 隨機對照試驗(Randomized Controlled Trial,簡稱 RCT),將研究對象隨機分組,不同的組別給予不同的干預(或者說處理)。透過 RCT,可以消除混淆變項及自我選擇造成的偏誤,因為兩個組別受到混淆變項的影響會被平衡,兩組別除了干預有差別以外,其他的人口特性分佈(被假設)完全相同,例如 RCT 下,A 與 B 兩組別 65 歲以上人口的比例理論上會一模一樣。
A/B Testing 可說是目前判斷因果關係最直覺好懂的做法,兩個組別限定只有一項干預的差別,其他不論是可觀測或不可觀測的變項,都因為隨機、視為兩組別相同,若是看到兩組別有差異,就可以確認是干預造成的影響。
但不是一切都能 A/B Testing
相信有在業界征戰過的資料科學家們都有體驗過,現實中有很多狀況是無法進行 A/B Testing 的。
首先,完美做到隨機將使用者分成 A 與 B 兩組,不見得容易。網路效應(Network Effect)就是個範例,假設一個通訊軟體 APP 剛設計了傳送可愛表情符號的新功能,要用 A/B Testing 測試新功能會不會提升客戶聊天的頻率,就算只有實驗組可以使用到這項新功能,但是我們不能控制實驗組使用者的聊天對象也只限實驗組,所以,如果表情符號新功能真的能提升聊天頻率,那將會同時提升實驗組以及控制組的聊天頻率,A/B Testing 的研究就看不出成效差異了!
此外,要是決策的影響範圍過大,也會讓研究者無法只限定找一小群人做商業實驗。舉例而言,我們都知道雙十一舉辦折扣活動會讓營業額大幅提高,如果經營者想知道舉辦活動比起不辦活動營業額多了多少呢?這麼大的營收影響力,總不能做 A/B Testing 只讓一群人有折扣活動、而另一群人沒有吧!
更重要的是,已經發生的過去式之中,我們想知道某些決策造成多大影響,我們卻不能搭時光機回到過去進行 A/B Testing。當手上只有未經過商業實驗設計的一般歷史資料,此類分析稱為 觀察性研究(Observational study),也當然就會有前面提過的混淆變項、自我選擇偏誤、或反事實的等等挑戰。
A/B Testing 行不通的時候,資料科學家會尋求因果推論的思考框架來研究我們想知道的決策影響力問題。
因果推論是什麼
因果推斷是在一個較大系統內部確定指定現象(因)的實際、獨立效果(果)的過程
維基百科
因果推論(Causal Inference)的科學方法被描述為分析干預效果的問題,干預(Intervention)或者處理(Treatment)就是因果推斷的「因」,研究者透過預測干預後的結果來了解「因」,回答出「如果我做了某事,會變成怎樣?」。
也如同前面提過的,從資料科學的角度,因果推論也可以被描述為缺失值填補問題,一但我們推算出「因」會造成的效果,就可以算出「平行世界」這個缺失值、建構不可能觀測到的反事實結果,回答出「如果我不是做了某事、而做了另一件事,會變成怎樣?」,可以說是用科學方法描繪出平行世界的模樣,聽起來是不是很浪漫呢!
在此需要強調,科學家口中的因果推論不是一個特定的統計模型,而是一種思考框架,例如可以用 有向無環圖(DAGs)來架構因果關係,統計模型只是實踐思考框架的工具之一。換句話說,如果沒有架構好因果推論的框架、或是做了錯誤的假設,就算懂再怎麼強大的機器學習模型,也無法正確衡量因果關係,這就是為什麼資料科學家們有必要了解因果推論方法、以避免錯誤解讀數據的脈絡。
因果推論的應用方法
筆者好豪的經驗中,因果推論方法的其中兩大類應用在實戰中相當常見,以下我也會分享相關的統計方法讓讀者延伸學習。
第一種是實驗組與控制組的分配問題。當我們手上只有已經發生的、沒有 A/B Testing 實驗設計過的歷史資料,想要分析干預效果時,有受到干預的使用者(實驗組)與沒受到干預的使用者(控制組)可能會因為混淆變項或自我選擇而有不平衡的人口特性,這樣比較有無受到干預的行為差異會不公平。
既然有無受到干預的兩組比較不公平,那麼試著平衡人口特性分配、讓比較趨於公平,就是一種因果推論的做法,Propensity Score Matching 與 Uplift Modeling 屬於此類方法。簡單地舉例,我們想知道在廣告 Email 中加入愛心符號能不能提升 Email 轉換成訂單的數量,然後發現點開有愛心符號 Email 的客戶中,明顯 40 歲以下年輕人比例高很多、大約佔 80%,那我們就刻意挑選一批同樣是年輕人佔比 80% 的樣本當作控制組,來跟受到干預的實驗組比較訂單數量差異,這就是人口特性更加平衡的意思。
另個因果推論方法常見的運用是所有人都受到干預的情境,我們用資料嘗試描繪出反事實的樣態:所有人都沒受到干預的平行世界,Synthetic Control 與 Difference-in-Difference 是這類方法的範例,透過預測反事實缺漏值的方式來建構平行世界。例如前面提過,經營者會想知道有舉辦雙十一折扣、比起沒辦活動到底多賺了多少錢,而假設我們從 2009 年以前、雙十一活動還沒被發明的歷史資料中得知,百貨業 11 月的營業額通常會比 10 月多 30%,我們就把這個歷史經驗當作「平行世界」的參考依據,當我們實際在數據中看到今年 11 月營業額比 10 月多了 170%,研究者就可以比較兩個世界的差異,依此推論出雙十一折扣活動這個「因」的干預效果讓我們額外賺了 140% 的月營業額。
寫到這裡,好豪想分享一個冷知識,本文一直拿雙十一當作範例,發明「平行世界」理論的物理學家艾弗雷特三世的生日正是 11 月 11 號喔!(延伸閱讀:泛科學—艾弗雷特三世介紹)
結語
因果推論是個很大的研究領域,本文介紹的混淆變項、自我選擇偏誤、還有反事實等分析痛點,還有干預效果預測及平行世界建構兩項實際運用,都只是因果推論領域的冰山一角,這篇文章也僅是淺談,未來筆者會持續寫文章與各位分享更多因果推論方法與實務經驗。
參考資料:
- EuroPython 2021 – A Gentle Introduction To Causal Inference
- Richard McElreath – Statistical Rethinking
- A Leader’s Guide to Causal Inference
- 黃大維 @TWDS Meetup – 因果推論在行銷上的應用
- 《資料科學的統計實務》
如果在資料中看到兩個事件有高度相關性,除了要思考資料之間的因果關係以外,多重檢定問題(Multiple Testing)也是專業資料分析師會檢查的要點,還不熟悉多重檢定的讀者,推薦你繼續閱讀:《多重檢定問題介紹:一定會有人中樂透》。
如果這篇文章有幫助到你,歡迎追蹤好豪的 Facebook 粉絲專頁,我正在鑽研因果推論這個有趣的領域,將會持續與你分享我學到的新知識;也歡迎點選下方按鈕,分享給熱愛資料科學的朋友們。