![]() ![]() |
基于Python的因果推斷 ![]() 本書將幫助讀者:學(xué)習(xí)如何理解因果推斷的基本概念。將業(yè)務(wù)問題定義為因果推斷問題。理解偏差如何干擾因果推斷。學(xué)習(xí)因果效應(yīng)如何能夠因人而異。將相同客戶不同時間的觀測用于因果推斷。在隨機化不可行的時候利用地理和回溯實驗。檢驗非遵從性偏差和效應(yīng)稀釋。 [巴西] 馬修斯 法庫爾(Matheus Facure) 前言想象自己是一名剛剛步入快速發(fā)展、前途光明的數(shù)據(jù)科學(xué)領(lǐng)域的新手。雖然尚未精通機器學(xué)習(xí)知識,但你完全相信自己有這個能力。你可能已經(jīng)學(xué)完了幾門該領(lǐng)域的線上課程,甚至在Kaggle 平臺的數(shù)據(jù)挖掘和預(yù)測競賽中取得過不錯的成績。你或許正在準備甚至迫不及待地運用所掌握的知識去解決實際問題。一切順風(fēng)順水。領(lǐng)導(dǎo)還會問:嗨,請算算我們實際取得了多少新增的客戶付費營銷份額。剛開始的時候,的確我們看到有些客戶來自付費營銷渠道,但是看上去在免費應(yīng)用方面卻有下降。我們認為,有些來自付費營銷渠道的客戶即使不付費也會來。這就意味著一個新的挑戰(zhàn),但是,這個挑戰(zhàn)是什么呢?你如何知道沒有付費營銷將會發(fā)生什么呢?或許,在營銷活動開始前后,你會比較免費應(yīng)用和付費應(yīng)用的總數(shù)。但是,在一個快速發(fā)展的公司里,你應(yīng)該如何才能知道營銷活動改變不了什么(見圖2)?再換個話題,將自己當作一名業(yè)內(nèi)大咖的風(fēng)險分析師,剛受雇于一家貸款公司。首要任務(wù)是完善該公司的信用風(fēng)險模型。目標是建立一個自動決策系統(tǒng),用于評估客戶信譽(為客戶擔保)并決定公司可以為客戶提供的貸款額度。當然,系統(tǒng)的錯誤將會導(dǎo)致嚴重的代價,特別是如果給出的信貸額度過高的話。這樣的決策系統(tǒng),關(guān)鍵在于明確信貸額度對客戶違約可能性的影響程度。客戶能否管理大額信貸?是否具備償還能力?是否會陷入過度支出和難以控制的債務(wù)危機?為了把握這些動向,你首先應(yīng)該根據(jù)給出的貸款額度繪制信貸平均違約率曲線。出乎意料的是,數(shù)據(jù)顯示出非預(yù)期的結(jié)果,如圖3 所示。信用卡額度與信貸違約率看上去呈反比例關(guān)系。如何實現(xiàn)提高信貸額度而又能降低信貸違約風(fēng)險呢?有理由懷疑,你會去跟其他分析師交流這個問題。答案很簡單也不意外:貸款公司將向違約概率小的客戶提供更多信貸。因此,提高信貸額度并不能降低違約風(fēng)險,事實正好相反。低違約風(fēng)險會提高信貸額度。盡管如此,還是沒能解決最Z早的問題:如何根據(jù)數(shù)據(jù)建立信貸風(fēng)險與信貸額度的關(guān)系模型。原本也并不指望系統(tǒng)知道更大的信貸額度意味著違約風(fēng)險的降低。而且,僅僅為了看看結(jié)果如何而想當然地在A/B 測試中隨機確定信貸額度,必定是徒勞無功的,因為錯誤的信貸額度決策,代價高昂。上述問題的共同點是,需要知道改變能夠控制的事情(營銷預(yù)算和信貸額度)如何影響希望得到的商務(wù)結(jié)果(客戶應(yīng)用和違約風(fēng)險)。影響或效果評價長期以來是現(xiàn)代科學(xué)的重要支柱,但直到最Z近,在將這些工具手段加以體系化,形成所謂因果推斷領(lǐng)域的方面,才取得了重大進展。而機器學(xué)習(xí)的進展以及對實現(xiàn)基于數(shù)據(jù)的決策自動化的普遍意愿也將因果推斷引入工業(yè)部門和公共機構(gòu)。然而,因果推斷工具尚未廣泛被決策者或數(shù)據(jù)科學(xué)家們了解。為此,作者曾經(jīng)寫過一本名為《勇敢者與求真者的因果推斷》(CausalInference for the Brave and True)的在線圖書。該書以嚴謹而又不失輕松的方式介紹了因果推斷的傳統(tǒng)工具和最Z新進展,而且全部附帶開源的Python 軟件。本書作者試圖再進一步,從應(yīng)用角度論述所有相關(guān)內(nèi)容,不僅更新了示例,而且進行了更直觀的解釋說明。作者希望本書能夠成為解決所有基于數(shù)據(jù)的決策問題的起點。前提要求本書是利用Python 實現(xiàn)的因果推斷的導(dǎo)論,但并不是一般的入門書。之所以是導(dǎo)論,是因為本書聚焦于應(yīng)用實踐,而不是關(guān)于因果推斷的嚴謹?shù)淖C明和定理。而且,本書作者更傾向于給出簡單而直觀的解釋說明,而不是完整的復(fù)雜的論述。之所以又不是一般的入門書,是因為作者希望你已經(jīng)具備關(guān)于機器學(xué)習(xí)、統(tǒng)計學(xué)和Python 編程的知識。內(nèi)容并不高深,但本書還是會涉及你應(yīng)該已掌握的一些概念和術(shù)語。例如,書中會有如下的文本描述:首先需要處理的是,連續(xù)型變量處處使得P(T=t)=0。原因在于,概率是密度曲線下面積,而單點的面積總為零。為了避免這種情況,可以用條件密度f(T|X) 代替條件概率P(T=t|X)。本書并不過多介紹什么是密度以及為什么密度不同于概率。再舉一個關(guān)于機器學(xué)習(xí)的例子:你也可以用機器學(xué)習(xí)模型估計傾向性評分(propensity score),但需加倍小心。第d一,要確保機器學(xué)習(xí)模型能夠輸出校準過的概率預(yù)測。第二,需要采用折外預(yù)測(out-of-fold predictions)以避免過擬合所產(chǎn)生的偏差。這里仍然不解釋機器學(xué)習(xí)模型是什么,也不解釋機器學(xué)習(xí)模型輸出校準過的預(yù)測是什么意思,過擬合是什么,折外預(yù)測又是什么。因為這些都是數(shù)據(jù)科學(xué)的基本概念,你應(yīng)自行掌握。建議你閱讀本書之前具備以下知識:? Python 基礎(chǔ)知識,包括 pandas、NumPy、Matplotlib、scikit-learn 等最Z常用的數(shù)據(jù)科學(xué)庫。即使你的專業(yè)是經(jīng)濟學(xué),也不必擔心會不會用好那些非常繁雜的代碼。你只需要掌握基礎(chǔ)知識就行。? 統(tǒng)計學(xué)基礎(chǔ)概念,例如分布、概率、假設(shè)檢驗、回歸、噪聲、期待值、標準差以及獨立性。第2 章將對統(tǒng)計學(xué)做一回顧,有助于新手學(xué)習(xí)。? 數(shù)據(jù)科學(xué)基礎(chǔ)概念,例如機器學(xué)習(xí)模型、交叉驗證、過擬合以及一些最Z常用的機器學(xué)習(xí)模型(梯度提升、決策樹、線性回歸、邏輯回歸)。? 高等數(shù)學(xué)知識,例如函數(shù)、對數(shù)、根、矩陣、向量,以及導(dǎo)數(shù)和積分等大學(xué)數(shù)學(xué)知識。本書的主要對象你是各行各業(yè)的數(shù)據(jù)科學(xué)家。如果你是這樣的人,那么肯定具備了前面提到的先決知識。而且請謹記,這樣的受眾很多,各自擁有很多不同的技能。因此,本書將提供一些面向高水平讀者的備注、段落或章節(jié)。無需擔心不理解本書的某些內(nèi)容,你仍能夠從書中受益匪淺。有時掌握了一些基礎(chǔ)知識之后還可以再次閱讀,重新認識。內(nèi)容概要第d一部分介紹因果推斷的基本概念。第d1 章介紹因果推斷的關(guān)鍵概念,這些概念用于說明降價的效應(yīng)。第2 章討論A/B 測試(也稱隨機對照試驗)的重要性,它不僅是決策工具,也是用于對標其他因果推斷工具的黃金標準。該章也將回顧一些統(tǒng)計學(xué)概念。第3 章偏理論介紹,包括因果識別與圖模型。該方法(按字面意思)確定關(guān)于因果過程的假設(shè)并明確如何理清因果關(guān)系。學(xué)完第d一部分的內(nèi)容后,你應(yīng)該具備了因果推斷思考的基礎(chǔ)。第二部分介紹從關(guān)聯(lián)性理清因果性的兩種方法:線性回歸與傾向加權(quán)。第4章介紹線性回歸,但以不同于為大多數(shù)數(shù)據(jù)科學(xué)家所熟悉的角度。將會了解到一種重要的偏差消除方法正交化。第5 章介紹傾向性評分與雙重魯棒估計。第三部分在第二部分的基礎(chǔ)上介紹機器學(xué)習(xí)和大數(shù)據(jù)技術(shù)。因果推斷可被視為個性化決策工具。通過食品配送服務(wù)應(yīng)用示例,嘗試了解應(yīng)該給哪些客戶提供折扣券以便提升他們的參與度,也了解哪些客戶并不需要這些優(yōu)惠。第6章介紹異質(zhì)治療效應(yīng)問題。第7 章介紹機器學(xué)習(xí)與因果推斷交叉融合的新進展。該章將學(xué)習(xí)T- 學(xué)習(xí)器、X- 學(xué)習(xí)器、S- 學(xué)習(xí)器,以及雙重/ 去偏機器學(xué)習(xí)等方法,都結(jié)合個性化治療問題加以闡述。第四部分考察引入時間維度的因果推斷。有時人們擁有相同客戶或市場多個時間段的記錄數(shù)據(jù),匯聚稱作面板數(shù)據(jù)集。將學(xué)習(xí)如何利用面板去發(fā)現(xiàn)付費營銷的實際影響,即使無法隨機確定誰看到相關(guān)的廣告。第8 章將介紹雙重差分模型及其相關(guān)最Z新進展。第9 章介紹合成控制(及其變種),也是結(jié)合市場促銷影響理解的問題。第五部分詳細介紹不考慮隨機性情況的替代實驗設(shè)計方法。第d10 章介紹旨在找到治療區(qū)域和控制區(qū)域的地理實驗法和用于分析部位有限而又想確定治療效果的回溯實驗法。后者針對相同部位反復(fù)治療和中止治療。第d11 章介紹非遵從實驗和工具變量法。該章也簡單介紹不連續(xù)設(shè)計(discontinuity design,或斷點設(shè)計)。排版約定本書采用以下排版約定。斜體(Italic)表示新術(shù)語、URL、電子郵件地址、文件名和文件擴展名。等寬字體(Constant Width)表示程序清單,在段落內(nèi)表示程序元素,例如變量、函數(shù)名稱、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。粗體等寬字體(Constant width bold)表示應(yīng)由用戶原封不動輸入的命令或其他文本。斜體等寬字體(Constant width italic)表示應(yīng)該替換成用戶提供值的文本,或者由上下文決定的值。代碼示例使用本書的補充材料, 包括代碼示例、練習(xí)等, 可從https://github.com/matheusfacure/causal-inference-in-python-code 處下載利用。使用代碼示例,如遇到技術(shù)性問題,請反饋給郵箱support@oreilly.com。本書為你開展工作助一臂之力。通常情況下,如果代碼示例隨本書提供,那么你可以將其用于自己的程序和文檔中。你不必聯(lián)系我們以獲得許可,除非你要復(fù)用大量的代碼。例如,編寫一段使用了本書幾塊代碼段的程序無需獲得許可。但是,出售或傳播OReilly 書籍的代碼示例則必須申請許可。引用本書知識回答問題以及引用代碼示例不需要許可。將本書大量代碼示例編入產(chǎn)品說明書則需要得到許可。我們歡迎(但不是強制要求)標明本書信息。這些信息通常包括書名、出版商以及ISBN 書號。例如,Causal Inference in Python,Matheus Facure(OReilly). Copyright 2023 Matheus Facure Alves, 978-1-098-14025-0。如果你覺得代碼示例使用不合理或者沒被許可,請通過郵件 permissions@oreilly.com 聯(lián)系我們。OReilly 在線學(xué)習(xí)平臺(OReilly Online Learning)近40 年來,OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。我們擁有獨一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會議和我們的在線學(xué)習(xí)平臺分享他們的知識和經(jīng)驗。OReilly 的在線學(xué)習(xí)平臺允許你按需訪問現(xiàn)場培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及OReilly 和200 多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請訪問http://oreilly.com。聯(lián)系我們?nèi)魏斡嘘P(guān)本書的意見或疑問,請按照以下地址聯(lián)系出版社。美國:OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)奧萊利技術(shù)咨詢(北京)有限公司我們?yōu)楸緯鴮TO(shè)網(wǎng)頁,在上面列有勘誤信息、示例以及其他信息。你可以訪問網(wǎng)頁,地址為https://oreil.ly/causal-inference-in-python。關(guān)于本書與課程的新聞與信息,請訪問https://oreilly.com。我們的LinkedIn:https://linkedin.com/company/oreilly-media。我們的Twitter:https://twitter.com/oreillymedia。我們的YouTube:https://youtube.com/oreillymedia。致謝首先,感謝無所不能的編輯Virginia Wilson。感謝你的反應(yīng)和耐心,沒有你,可能也就無法成就本書。其次,感謝Nicole Butterfield 以及OReilly 的整個團隊,支持我完成我的這本處女作并給予充分的信任。特別感謝Danny Elfanbaum 在寫作過程中幫我解決了相關(guān)技術(shù)問題。作者感謝所有技術(shù)評閱人,他們付出寶貴的時間審閱了本書。感謝Laurence Wong 為本書提供了非常詳細的評論以及指出完善之處。感謝Adrian Keister進行全書審閱后給出了非常中肯的意見,而且還運行了代碼并提出了非常重要的修改建議。正是有了這些反饋。本書得到了明顯的改進。感謝Jorge Reyes 千方百計地發(fā)現(xiàn)技術(shù)描述中難以發(fā)現(xiàn)的錯誤,既坦誠指出問題又不吝謬贊。感謝Roni Kobrosly 給予的提高本書易讀性和趣味性的建議。感謝Subhasish Misra 的有益反饋,特別是關(guān)于第5 章的反饋意見。感謝Shawhin Talebi 建議增加一些密切相關(guān)的話題內(nèi)容。感謝所有給予內(nèi)容相關(guān)反饋的朋友。感謝Guilherme Jardim Duarte 幫忙審閱Pearlian causality 相關(guān)內(nèi)容,特別是第3 章。感謝Henrique Lopes 和Juliano Garcia 幫忙審閱因果推斷與商務(wù)應(yīng)用的相關(guān)內(nèi)容,第4 章、第6 章和第7 章因此得到了很大的改進。感謝Raphael Bruce 關(guān)于第4 章的直率而準確的意見反饋。感謝Luis Moneda 給予的專業(yè)支持、關(guān)于因果性的多次討論,以及幫忙審閱第d1 章。統(tǒng)計學(xué)是門難度大的學(xué)科,感謝Denis Reis 審閱第2 章,從而讓作者如釋重負。技術(shù)類書籍的寫作有時是孤勇的行為,正因為如此,本人為能得到很多令人高興和尊重的專業(yè)人士的支持幫助而感到幸運萬分。他們是Sean J. Taylor、Pedro H. C. SantAnna、Nick C. Huntington-Klein、Carlos Cinelli、Joshua Angrist 和Scott Cunningham。沒有你們的善意反饋,作者可能早就放棄了。很榮幸從事這樣有許多相互幫助和相互關(guān)心的研究人員的工作。非常感謝Kaspar Wthrich 耐心回答作者關(guān)于合成控制法的問題并審閱了合成控制t 測試章節(jié)。非常感謝Jinglong Zhao 在非傳統(tǒng)試驗設(shè)計方面的貢獻,回答作者關(guān)于合成控制法和折返試驗設(shè)計。感謝Peter Hull,在線性回歸方面造詣頗深。感謝所有與作者交往過的學(xué)者們,他們讓作者對因果性有了更深刻的認識:Pedro H. C. SantAnna、Carlos Cinelli、Nick C.Huntington-Klein 和Peter Hull。另外,感謝Nubank 公司的朋友和同事們,他們總是愿意與作者討論最Z有趣最Z有挑戰(zhàn)性的因果推斷問題:Arthur Goes、Nilo Kruchelski、Pedro Igor、Tatyana Zabanova、Diandra Kubo、Pedro Bair?o、Fernanda Leal、Murilo Nicolau、Mariana Sanches、Victor Dalla、Euclides Filho、Guilherme Peixoto、Silvano Filho、Alexandre Floriano、Ana Ortega、Hector Lira、Lucas Estevam、Risk Slangen 和André Segalla。感謝Edigar Antonio Lutero Alves 審讀全書并給予了精準的評論反饋,他是父親也是榜樣。感謝Elis Jord?o Stropa 始終與作者同在并支持作者的近乎瘋狂的想法和項目。感謝她在本書寫作期間特別是Francisco 出生后一如既往的耐心。她是位了不起的妻子和母親。 Matheus Facure是Nubank的經(jīng)濟學(xué)家和高級數(shù)據(jù)科學(xué)家。他在很多商務(wù)場景成功應(yīng)用了因果推斷技術(shù),從自動實時信用卡決策到交叉郵件與營銷預(yù)算優(yōu)化。 目錄
你還可能感興趣
我要評論
|