1. 程式人生 > >相關性不一定等於因果性:從 Yule-Simpson’s Paradox 講起

相關性不一定等於因果性:從 Yule-Simpson’s Paradox 講起

1. 兩件事伴隨發生,不代表他們之間有因果關係 - 從一些荒誕相關性案例說起

在日常生活和資料分析中,我們可以得到大量相關性的結論,例如:

  • 輸入X變數,有98%置信度得到Y變數
  • 只要努力,就能成功
  • 只要到了下班時間出公司大門,天就一定黑了
  • 深圳交警表示,天秤、處女、天蠍座的人更喜歡違章
  • 腫瘤發生率隨著最近二十年手機的推廣逐年上升,證明了手機輻射致癌
  • 屁股大容易生兒子
  • 世界上不吃豬肉的人群中,人自爆的概率最大
  • 據觀察統計,消防車數量越多的火災中,傷亡人數越多
  • 工業革命以來,女人穿的裙子越來越短,全球溫度越來越高
  • 人的受教育程度與腳的大小成正比
  • ....

此類結論的依據也似乎有很強的依據,即所謂的歷史經驗,甚至是大量的真實資料支援,我們通過各種統計模型、機器學習、深度學習模型,通過分析得到以上種種結論。

但是這裡面存在一個巨大的疑問就是,”相關性一定等於因果性嗎?“讓我們來看幾個反常識的例子。

1)美國在科學、空間和技術上的開支 && 絞死、勒死和窒息的後果關聯性

correlation=99.79%

2)泳池溺水身亡人數 && 尼古拉斯凱奇出演的電影數 

correlation=66.66%

3)緬因州的離婚率與人均人造黃油消費量相關

correlation=99.26%

4)深圳交警表示,天秤、處女、天蠍座的人更喜歡違章

“我們發現上週天秤座、處女座、天蠍座攜手違法數量居前三名。”吳凱峰告訴記者,通過從8月3日至8月9日行人、非機動車違法人的星座分類對比,發現天秤座、處女座、天蠍座位列違法量前三名(三個星座剛好也相連,從8月23日至11月22日),分別佔違法總數的10.5%、9.63%和9.0%。金牛座、白羊座最“乖”,分別以673、661排在最後兩位。

來源:深圳交警微門戶

顯然,深圳交警不會有意去做資料造假這種事情,但是星座決定論又顯然違反了我們的常識。我們來分析一下其中的原因。

首先,報道里的資料分析存在錯誤:沒有考慮星座在當地人口中的總體分佈,而直接拿觀測到的樣本絕對數量進行比較。實際上正是因為這三個星座的人口,佔當地總人口的比例較高(9-11月為北半球低緯度南部地區生育高峰),造成被抓到違章的人數較多。如果這個調查在北方,估計躺槍的會是雙子、巨蟹和獅子座(6-8月)。

北半球國家出生高峰與緯度的關係。來源:Human birth seasonality: latitudinal gradient and interplay with childhood disease dynamics

所以,星座與違章確實有關,源於星座人口比例,而不是星座“乖不乖”。

5)屁股大容易生兒子

人們看到某某生了兒子,然後又發現某某屁股大。經過大量的模糊的統計(很多民間理論都是這種模糊的感受),得出了屁股大生兒子的結論。

然而,這可能一個錯誤的關聯,或者說,錯誤的因果。女性生兒子,的確是可能屁股大,之所以出現這種情況,主要是因為男嬰本身比女嬰在體型方面更大。

我們看這個《中國15城市不同胎齡男女新生兒出生體重值修正報告》

可以發現,事實上,在整個發育過程中,男嬰都表現出了比女嬰體重更高的現象。而我們知道臀部的大小,和骨盆有很大關係(當然不只是骨盆,還有肉肉啊)。而骨盆對於生產的影響很大。

因此,在同樣生男生女且沒有剖腹產的過程中,在男女懷孕比例基本接近的情況下,較大的骨盆,生育體重更大的男性,相對於較小的骨盆,生育更容易。

或者,更加俗話的說:臀部大,生兒子容易,臀部小,生兒子難。

上述討論的這種“荒謬的相關性”還有其他大量的例子。顯然,對上述討論的情況,如果使用相關性分析,Peason相關分析等技術,很容易得出一個結論就是:

它們是彼此強烈相關的,看到其中任何一個事物發生,就有很大概率另一個事物也會伴隨發生

但顯然,這個結論和我們的常識嚴重地相悖,為什麼號稱有堅實理論基礎的統計演算法,在這裡似乎產生了一個非常荒謬的結論呢?難道機器學習是偽科學嗎?

答案是否定的!真實的情況是統計機器學習沒有問題,出問題的是使用它和理解它產生結論的方式,我們接下來的文章來討論這個話題。

Relevant Link:

http://www.tylervigen.com/spurious-correlations
https://www.ncbi.nlm.nih.gov/pubmed/24695423
https://www.zhihu.com/question/66895407 

 

2. 偽相關性(spurious correlation)

0x1:偽相關性的成因

假設兩個事件A和B,最簡單的因果性例子就是A導致了B,如下圖所示:

因果性(causality)會導致相關性(correlation),反之則不成立。換言之,因果性是一個比相關性更強的概念。因果性是一種特殊的相關性。

統計學上把兩個或者多個看起來高度相關,但卻不存在因果性的現象叫做偽相關性(spurious correlation)。而偽相關的成因可能有:

  • 存在其他變數(common response variables)同時對這兩個事件造成(直接或者間接)影響,但我們無法觀測到(意識到)它的存在。例如:
    • 與冬天相比,夏天游泳的人變多且溺亡人數上升,同時吃冰淇淋的人數也增多,因此是否可以得出結論:"冰淇淋"會導致“溺亡”?
    • 這種聽起來荒謬的結論就是因為錯誤地把相關性當成了因果性。我們沒有觀測到“夏天溫度升高”這個因素同時會影響“游泳溺亡人數”和“吃冰淇淋人數”,而錯誤地認為兩者間有直接的因果關係,相關性不是因果性的充要條件,,左圖中,C是季節變化因素,A和B分別是“游泳溺亡人數”和“吃冰淇淋人數”。可以直觀地看出,A與B之間並不存在因果關係
  • 純屬巧合,尤其是處理小樣本時,
    • Freedman在1989年做過的模擬實驗中發現,即使資料全是由噪音構成,在適當的處理後,也能發現數據中顯著的相關性:6個特徵顯著且對迴歸所做的F-test的p值遠小於0.05,即迴歸存在統計學意義。
    • 另一個例子是上個章節談到的一張圖,美國從1999-2009年在科技領域的支出,黑線是通過上吊、窒息等方式自殺的人數。我們發現其線性相關係數(  )。r的取值範圍為-1到1,越接近1越傾向於強正相關。顯然,我們不會認為這兩者之間存在因果性。且仔細觀察後我們發現樣本量僅僅是11個數據點,因此是巧合的可能性更大。

0x2:偽相關性的作用

由以上的討論可知,對於偽相關不能一概而論,如果因為第三方變數(成因1)而不僅僅是巧合(成因2),那麼這種相關性是有用的,即使是“偽”相關。

原因很簡單:

大部分情況下我們無法對每一個事件去追根溯源,無法依靠純粹的“因果推斷”,甚至並不知道什麼是因什麼是果。

在這種情況下,偽相關性就很用。還是拿冰激凌舉例,假設我們無法得到任何季節資訊,僅靠“冰激凌的銷售數”也可以大致推斷“溺亡人數的趨勢”,因為它們不是獨立事件(貝葉斯網路區域性獨立性原理)。

0x3:如何利用和分析偽相關性

  • 要考慮兩個事件之間是否同時依賴其他隱變數,如果存在是否可以將其考慮進來。可參考概率圖模型更好地解決類似問題。
  • 同時也應考慮“線性相關”在當前場景下是否有意義。線性相關一般都不易描述非常複雜的關係,兩個複雜事件間的高度線性相關是很值得懷疑的。我們給出的“科技支出 vs. 死亡人數”就體現了線性相關在複雜場景下非常有限的意義和造成巧合的可能性。
  • 如果可能,可以加大樣本量,收集更多的資料,同時選用合適的統計檢測方式和更小的置信區間,以防止純屬巧合的情況出現。

Relevant Link:

https://onlinelibrary.wiley.com/doi/pdf/10.1002/0471998524.app1
http://xueshu.baidu.com/usercenter/paper/show?paperid=839b6eb7023030a53d56411f78a36a8f&site=xueshu_se

 

3.  Yule-Simpson’s Paradox:關於偽相關性的概率原理討論

0x1:關於相關性理論的一些歷史

天才的高斯在研究天文學時,首次引進了最大似然和最小二乘的思想,並且匯出了正態分佈(或稱高斯分佈)。

其中最大似然有些爭議,比如 Arthur Dempster 教授說,其實高斯那裡的似然,有貝葉斯或者信仰推斷(fiducial inference)的成分。

高斯那裡的 “統計” 是關於 “誤差” 的理論,因為他研究的物件是 “物理模型” 加“隨機誤差”。

大約在 100 多年前,Francis Galton 研究了父母身高和子女身高的 “關係”,提出了“(向均值)迴歸” 的概念。眾所周知,他用的是線性迴歸模型。此時的模型不再是嚴格意義的“物理模型”,而是“統計模型” — 用於刻畫變數之間的關係,而不一定是物理機制。

之後,Karl Pearson 提出了“相關係數”(correlation coefficient)。

後世研究的統計,大多是關於 “相關關係” 的理論。但是關於 “因果關係” 的統計理論,非常稀少。據 Judea Pearl 說,Karl Pearson 明確的反對用統計研究因果關係。有意思的是,後來因果推斷為數不多的重要文章(如 Rosenbaum and Rubin 1983; Pearl 1995)都發表在由 Karl Pearson 創刊的 Biometrika 上。 

0x2:Yule-Simpson’s Paradox(尤爾·辛普森悖論)

在高維列聯表分析中, 有一個很有名的例子,叫做 Yule-Simpson’s Paradox。

此悖論表明,存在如下的可能性:X 和 Y 在邊緣上正相關,但是給定另外一個變數 Z 後,在 Z 的每一個水平上,X 和 Y 都負相關。

下表是一個數值的例子,取自 Pearl (2000),

Yule-Simpson’s Paradox

上表分為了3份,

  • 第一個表是整個人群的資料:接受處理和對照的人都是 40 人,處理有較高的存活率,因此處理對整個人群有 “正作用”。 
  • 第二個表是Male男性的分層結果
  • 第三個表是Female女性的分層結果,因為第一個表的四個格子數,分別是下面兩個表對應格子數的和:20=18+2,20=12+8,16=7+9,24=3+21.

但奇怪的是,處理對男性有 “負作用”,對女性也有 “負作用”。一個處理對男性和女性都有 “負作用”,但是他對整個人群卻有 “正作用”:悖論產生了!

這種悖論現象不是由於隨機性或者小樣本的誤差導致的,從純數學的角度,上面的悖論可以寫成初等數學公式:

在純數學上,這並無新奇之處。但是在統計上,這具有重要的意義,即變數之間的相關關係可以完全的被第三個變數“扭曲”。

更嚴重的問題是,我們的收集的資料可能存在侷限性,忽略潛在的“第三個變數”可能改變已有的結論,而我們常常卻一無所知。

鑑於 Yule-Simpson 悖論的潛在可能,不少人認為,統計不可能用來研究因果關係。

0x3:Yule-Simpson 對資料分析與大資料應用帶來的挑戰

由於有 Yule-Simpson’s Paradox 的存在,觀察性研究中很難得到有關因果的結論,除非加上很強的假定。

比如,一個很經典的問題:吸菸是否導致肺癌?

由於我們不可能對人群是否吸菸做隨機化試驗,我們得到的資料都是觀察性的資料:即吸菸和肺癌之間的相關性 (正如上一節中的的合併表)。此時,即使我們得到了吸菸與肺癌正相關,也不能斷言 “吸菸導致肺癌”。

這是因為可能存在一些未觀測的因素(內部分層隨機變數),他既影響個體是否吸菸,同時影響個體是否得癌症。比如,某些基因可能使得人更容易吸菸,同時容易得肺癌,存在這樣基因的人不吸菸,也同樣得肺癌。此時,吸菸和肺癌之間相關,卻沒有因果作用。

相反的,我們知道放射性物質對人體的健康有很大的傷害,但是鈾礦的工人平均壽命卻不比常人短。這是流行病學中有名的 “健康工人效應”(healthy worker effect)。

這樣一來,似乎是說鈾礦工作對健康沒有影響。但是,事實上,鈾礦的工人通常都是身強力壯的人,不在鈾礦工作壽命會更長。此時,在鈾礦工作與否與壽命不相關,但是放射性物質對人的健康是有因果作用的。

Relevant Link:

https://cosx.org/2012/03/causality1-simpson-paradox/

 

4. 因果推論的由來

關於世界是否存在真正的因果性問題已經上升到哲學討論範疇了,因果性是貫穿西方哲學的一個極其重要的核心問題,也是至今西方哲學界所討論和爭論的熱點話題。有興趣的讀者可以閱讀康德的《純粹理性批判》,這裡不做更深入的討論。

僅從資料分析演算法角度來看,所有模型都沒有因果性,只是因為支撐的資料證據多了,相關性就變成了因果性,或者是人們常常將相關性視作等同於因果性來使用。

通過觀察資料,我們只能得到兩者的相關性,不可能得到因果性。

若AB之間存線上性相關性,那麼我們認為AB之間至少存在一條因果通路,即A-B,它表示AB之間存在因果關係,但不確定誰是因,誰是果。

一條AB之間的因果通路即:A-B1,B1-B2,...,B2-Bn,Bn-B。

而建立一個新的因果關係,方法一共有三種:

  • 歸納推理法
  • 演繹推理(因果性的傳遞性)
  • 相關性的因果通路推導

0x1:歸納推理法

歸納推理有兩種方法,分別是“假說演繹”和“先驗模型歸納推理”。

1. 假說演繹

1)提出假說(假設)

首先我們看到了一個結果。根據結果,我們會根據目前的知識來給出一個或幾個假想的條件。

當這個或這些條件發生的時候,這個結果必定發生。

如果當前的知識無法反駁這個假想的條件,那麼我們認為這個條件成立。我們稱這個假想的條件為這個結果的原因,也即所謂的假設檢驗。

2)演繹

把假說當成是已知的知識,設計實驗驗證。

如果實驗中所有資料均滿足“原因資料”與“結果資料”呈“線性相關”。那麼說我們說資料支援假說。

舉個例子:

一次地震災害,死傷很多。
我們首先想到 “地震是造成死傷的原因”
但是“所有地震都造成死傷了嗎?”不是,所以我們的原因不充分
於是變成:“強烈的地震是造成死傷的原因”
但是“所有強烈的地震都造成死傷了嗎?”還不是,所以我們的原因還不充分
於是變成:“在人口密度較大的地方發生強烈的地震是造成死傷的原因”
但是“所有在人口密度較大的地方發生強烈的地震都造成死傷了嗎?”貌似還不是,所以我們的原因還不充分
於是變成:“在人口密度較大的而且建築不夠結實的地方發生強烈的地震是造成死傷的原因”
再想,所有在人口密度較大的而且建築不夠結實的地方發生強烈的地震都造成死傷了嗎?
如果不是繼續新增條件直到滿足我們知道的所有資料,

如果滿足的話,那麼我們說“在人口密度較大的而且建築不夠結實的地方發生強烈的地震”是“造成死傷”的原因

導致B的原因A是一個條件的集合{A}。在條件集合{A}下,B發生的概率非常大(目前沒有觀測到不出現)。

其中集合A中對B相關性較強的幾個因素,可以是主要原因,我們生活中,經常以主要原因代替整體說是B的原因。

2. 先驗模型歸納推理

現根據資料提出假說,再用資料相關性驗證。

我們常用的高斯正態分佈就是對生活中由大量隨機小概率事件組合成的複雜事件的一種抽象模型概括。

0x2:演繹推理法(因果性的傳遞性)

瑣碎演繹推理法,就是運用邏輯學進行三段論推理,

  • 因為A必定出現B,
  • 因為B必定出現C,
  • 所以A必定出現C

舉個例子:

  • 人都會死,
  • 蘇格拉底是人,
  • 蘇格拉底會死

0x3:相關性的因果通路推導

首先定義相關性通路: X↔Y表示XY之間存在相關性。

一條AB之間的相關性通路即:A↔B1,B1↔B2,...,B2↔Bn,Bn↔B。

那麼如果我們確定AB之間有且僅有一條相關性通路,我們認為這條相關性通路是因果通路。

舉一個例子,

假設我手滑了跟手機摔壞之間存在相關性。
且只有“手滑了”與“手機掉落”有相關性,手機掉落與手機摔壞有相關性這一條相關性通路。
那麼如果手滑與手機摔壞之間確實存在相關性的話。
我們認為:手滑了與手機掉落有相關性,手機掉落與手機摔壞有相關性這一條相關性通路也是因果通路。
即:手滑了與手機掉落之間有因果性,手機掉落與手機摔壞之間有因果性。

Relevant Link:

https://zhuanlan.zhihu.com/p/70159562

 

5. 從貝葉斯網路理論框架看相關性不等於因果性問題

我們前面討論到一個問題,即同時影響A和B的第三個因素C,它們三者共同組成了如下的因果邏輯結構,

在貝葉斯網路的概念體系中,這被稱之為“tail-to-tail(共同的原因)”,

  • 當C已知時,A和B的資訊傳遞被隔斷,A和B是相互獨立的
  • 只有當C未知時,A和B才可能存在相關性

在大多數的資料分析場景中,我們都是未知C變數的,我們只能通過有限的觀測手段,觀測到起因A和最終結果B,然後基於已有的資料進行相關性挖掘與分析,進而將分析得到的相關性結論作為因果性結論來使用,如下圖:

最常見的場景就是有監督學習了。

Relevant Link:

https://mp.weixin.qq.com/s/4ocdPZmNGK2pLRiEHVLImw

 

6. 關於因果推理在安全資料分析領域應用的一點思考 

0x1:專家規則本質的一點思考

專家規則在安全攻防領域有很多不同形式的應用,筆者這裡列舉一些常見的形式:

  • 通過正則表示式對磁碟上的文字進行惡意程式碼檢測,當出現某CVE EXP/POC Shellcode程式碼,即認為該文字是一個惡意原始碼檔案
  • 通過正則表示式對HTTP Log中的URL/UA/Body部分進行內容匹配,當出現一些和SQL注入有關的字串,例如“’ union select xxxx”時,即認為該日誌是由攻擊發出的一條WEB漏洞攻擊日誌
  • 通過正則表示式對Web檔案中的出現的敏感函式名進行檢測,例如出現“eval”、“$_POST”、“preg_replace”等關鍵詞字眼時,則認為該檔案是一個可疑Webshell檔案
  • 通過正則表示式對系統程序日誌出現的敏感字串進行檢測,例如cmdline裡出現“wget http:/xxxx | bash; chmod 744 xxx; ./xxxx”這樣的字眼,則認為該日誌是由攻擊者觸發的一條入侵攻擊行為
  • ...

可以看到,這些專家規則的背後其實蘊含了一個最重要的基本假設:安全規則所描述的敏感特徵和安全事件之間有強烈的因果性。

因為這個因果性的存在,安全工程師得以從海量的資料中,精確的揀選出“安全事件”,甚至將多個安全事件進行有機的邏輯組合,得到更復雜的安全事件會話還原。

0x2:安全資料分析和安全攻防運營人員的融合

還是回到專家規則這個話題上來,這裡最關鍵的問題是這些具備“精確”因果推理助推力的專家規則是從哪裡來的呢?

答案是安全攻防領域知識,安全工程師通過長年的大量攻防實踐,會不斷總結出各種有效的安全專家規則(安全知識),這些知識的產生就是所謂的行業壁壘,也是安全資料分析這個行業的第一個入門門檻。

那接下來另一個問題就是,如果你是熟悉演算法和資料分析的統計學家,能否在短時間內直接進入這個行業並且獲得好的結果呢?

筆者認為存在一定的困難度,原因有以下幾點:

  • 資料分析專家的強項是資料探勘,他們可以藉助已有的打標樣本(惡意http body、惡意web檔案),通過各種複雜的機器學習模型,進行有監督的訓練和學習。但是問題是,機器學習的強項是擬合已有的規則,對發現未知的未知並不擅長,希望通過機器學習來自動發現未知的未知,在很多時候是一種不切實際的想法
  • 安全專家規則本質是一種強因果推理規則,安全研究人員和演算法工程師的最大區別就在於安全研究員更瞭解攻防物件的內在呈現機理,安全工程師能夠不斷挖掘出新的因果性推理鏈路,而演算法工程師更擅長髮現的是相關性鏈路。我們知道,相關性不是100%的因果性,因為可能存在未被觀測到的隱藏隨機變數,例如管理員自己的突發性異常操作。

通過以上的討論,最後的一個問題就是,安全攻防人員和安全資料分析師未來的態勢會如何呢?是彼此取代,還是彼此合作呢?

筆者個人的觀點認為,它們會走向一個互相融合的形態,具體來說如下:

  • 安全攻防專家繼續專注在安全攻防原理和知識的研究和實踐上,他們是源源不斷產生新的因果性推理規則的來源
  • 但是新產生的因果推理規則的“推理質量”是良莠不齊的,可能有的單條規則就非常準確,但是有的單條規則就存在模糊性,需要多條規則配合起來共同推理決策
  • 安全資料演算法分析師的工作就是基於已有的“專家因果推理規則”的基礎之上,通過建模和有監督的方式進行復雜性建模和複雜性分析(例如貝葉斯網分析),將專家因果推理規則的效果發揮到極致

以上種種只是筆者的一些淺見,也許過了若干年後某位同學讀到這裡會啞然失笑。但不妨,畢竟安全資料分析這條路總要有一群人去試一試的,資料經濟時代下,筆者相信安全領域也不能獨善其身,資料分析的春風也會一點一滴地改變和優化安全攻防領域的資訊不對稱窘境,就讓我們拭目以待。

&n