關於如何解釋機器學習的一些方法
到現在你可能聽說過種種奇聞軼事,比如機器學習算法通過利用大數據能夠預測某位慈善家是否會捐款給基金會啦,預測一個在新生兒重症病房的嬰兒是否會罹患敗血症啦,或者預測一位消費者是否會點擊一個廣告啦,等等。甚至於,機器學習算法還能駕駛汽車,以及預測大選結果!… 呃,等等。它真的能嗎?我相信它肯定可以,但是,這些高調的論斷應該在數據工作者(無論這些數據是否是『大』數據)以及機器學習工作者心裏留下些非常困難的問題:我能否理解我的數據?我能否理解機器學習算法給予我的模型和結果?以及,我是否信任這些結果?不幸的是,模型的高複雜度賜予了機器學習算法無與倫比的預測能力,然而也讓算法結果難以理解,甚至還可能難以采信。
盡管,我們可能能夠強製自變量-因變量關係函數是滿足單調性約束的(譯者注:單調性的意思是,遞增地改變自變量,隻會導致因變量要麼一直遞增,要麼一直遞減),機器學習算法一直有傾向產生非線性、非單調、非多項式形式、甚至非連續的函數,來擬合數據集中自變量和因變量之間的關係。(這種關係也可以描述為,基於自變量的不同取值,因變量條件分布的變化)。這些函數可以根據新的數據點,對因變量進行預測——比如某位慈善家是否會捐款給基金會,一個在新生兒重症病房的嬰兒是否會罹患敗血症,一位消費者是否會點擊一個廣告,諸如此類。相反地,傳統線性模型傾向於給出線性、單調、連續的函數用於估計這些關係。盡管它們不總是最準確的預測模型,線性模型的優雅、簡單使得他們預測的結果易於解釋。
如果說,好的(數據)科學對能夠理解、信任模型以及結果是一個一般性要求的話,那麼在諸如銀行、保險以及其他受監管的垂直行業中,模型的可解釋性則是重要的法律規範。商業分析師、醫生以及行業研究員必須理解以及信任他們自己的模型,以及模型給出的結果。基於這個原因,線性模型幾十年來都是應用預測模型中最易於上手的工具,哪怕是放棄幾個百分點的精度。今天,大量機構和個人開始在預測模型任務中擁抱機器學習算法,但是『不易解釋』仍然給機器學習算法的廣泛應用帶來了一些阻礙。
在這篇文章中,為了進行數據可視化和機器學習模型/結果解釋,我在最常用的一些準確性度量、評估圖表以外,提供了額外的幾種方法。我誠摯建議用戶根據自己的需要,對這些技巧進行一些混搭。隻要有可能,在這篇文章中出現的每一個技巧裏,『可解釋性』都被解構為幾個更基本的方麵:模型複雜程度,特征尺度,理解,信任 —— 接下來我首先就來簡單對這幾點做個介紹。
待解釋的響應函數(譯者注:因變量關於自變量的函數)的複雜程度
線性單調函數:由線性回歸算法創建的函數可能是最容易解釋的一類模型了。這些模型被稱為『線性的、單調的』,這意味著任何給定的自變量的變化(有時也可能是自變量的組合,或者自變量的函數的變化),因變量都會以常數速率向同一個方向變動,變動的強度可以根據已知的係數表達出來。單調性也使得關於預測的直覺性推理甚至是自動化推理成為可能。舉例來說,如果一個貸款的借方拒絕了你的信用卡申請,他們能夠告訴你,根據他們的『貸款違約概率模型』推斷,你的信用分數、賬戶餘額以及信用曆史與你對信用卡賬單的還款能力呈現單調相關。當這些解釋條文被自動化生成的時候,它們往往被稱作『原因代碼』。當然,線性單調的響應函數也能夠提供變量重要性指標的計算。線性單調函數在機器學習的可解釋性中有幾種應用,在更下麵的第一部分和第二部分討論中,我們討論了利用線性、單調函數讓機器學習變得更為可解釋的很多種辦法。
非線性單調函數:盡管大部分機器學習學到的響應函數都是非線性的,其中的一部分可以被約束為:對於任意給定的自變量,都能呈現單調性關係。我們無法給出一個單一的係數來表征某個特定自變量的改變對響應函數帶來的影響程度,不過非線性單調函數實際上能夠做到『隻朝著一個方向前進』(譯者注:前進的速度有快有慢)。一般來說,非線性單調的響應函數允許同時生成『原因代碼』以及自變量的『相對重要性指標』。非線性單調的響應函數在監管類的應用中,是具備高度可解釋性的。
(當然,機器學習能夠憑借多元自適應回歸樣條方法,建立『線性非單調』的響應曲線。在此我們不強調這些函數的原因,是因為一方麵,它們的預測精度低於非線性非單調的預測模型,另一方麵,它們跟線性單調的模型比起來又缺乏解釋性。)
非線性非單調函數:大部分機器學習算法建立了非線性、非單調的響應函數。給定任意一個自變量,響應函數可能以任何速率、向任何方向發生變動,因此這類函數最難以解釋。一般來說,唯一可以標準化的解釋性指標就是變量的『相對重要性指標』。你可能需要組織一些本文將要展示的技術作為額外手段,來解釋這些極端複雜的模型。
可解釋性的特征尺度
全局可解釋性:某些下文展示的技巧,無論是對機器學習算法,算法得到的預測結果,還是算法學習到的自變量-因變量關係而言,都能夠提供全局的可解釋性(比如條件概率模型)。全局可解釋性可以根據訓練出來的響應函數,幫助我們理解所有的條件分布,不過全局可解釋性一般都是『近似』的或者是『基於平均值』的。
局部可解釋性:局部可解釋性提高了對於小區域內條件分布的理解,比如輸入值的聚類,聚類類別對應的預測值和分位點,以及聚類類別對應的輸入值記錄。因為小局部內的條件分布更有可能是線性的、單調的,或者數據分布形式較好,因此局部可解釋性要比全局可解釋性更準確。
理解與信任
機器學習算法以及他們在訓練過程中得到的響應函數錯綜複雜,缺少透明度。想要使用這些模型的人,具有最基本的情感需求:理解它們,信任它們——因為我們要依賴它們幫忙做出重要決策。對於某些用戶來說,在教科書、論文中的技術性描述,已經為完全理解這些機器學習模型提供了足夠的洞見。對他們而言,交叉驗證、錯誤率指標以及評估圖表已經提供了足以采信一個模型的信息。不幸的是,對於很多應用實踐者來說,這些常見的定義與評估,並不足以提供對機器學習模型與結論的全然理解和信任。在此,我們提到的技巧在標準化實踐的基礎上更進一步,以產生更大的理解和信任感。這些技巧要麼提高了對算法原理,以及響應函數的洞察,要麼對模型產生的結果給出了更詳盡的信息。 對於機器學習算法,算法學習到的響應函數,以及模型預測值的穩定性/相關性,使用以下的技巧可以讓用戶通過觀測它們、確認它們來增強使用它們的信心。
?
這些技巧被組織成為三部分:第一部分涵蓋了在訓練和解釋機器學習算法中,觀察和理解數據的方法;第二部分介紹了在模型可解釋性極端重要的場合下,整合線性模型和機器學習模型的技巧;第三部分描述了一些理解和驗證那些極端複雜的預測模型的方法。
第一部分:觀察你的數據
大部分真實的數據集都難以觀察,因為它們有很多列變量,以及很多行數據。就像大多數的『視覺型』人類一樣,在理解信息這方麵我大量依賴我的『視覺』感覺。對於我來說,查看數據基本等價於了解數據。然而,我基本上隻能理解視覺上的二維或者三維數據——最好是二維。此外,在人類看到不同頁麵、屏幕上的信息時,一種被稱作『變化盲視』的效應往往會幹擾人類做出正確的推理分析。因此,如果一份數據集有大於兩三個變量,或者超過一頁/一屏幕數據行時,如果沒有更先進的技巧而是隻漫無止境的翻頁的話,我們確實難以知道數據中發生了什麼。
當然,我們有大量的方法對數據集進行可視化。接下來的強調的大部分技巧,是用於在二維空間中描述所有的數據,不僅僅是數據集中的一兩列(也就是僅同時描述一兩個變量)。這在機器學習中很重要,因為大部分機器學習算法自動提取變量之間的高階交互作用(意味著超過兩三種變量在一起形成的效果)。傳統單變量和雙變量圖表依然很重要,你還是需要使用它們,但他們往往和傳統線性模型的語境更相關;當眾多變量之間存在任意高階交互作用時,僅靠使用傳統圖表就想理解這類非線性模型,幫助就不大了。
圖形符號
圖1. 使用圖形符號代表操作係統和網頁瀏覽器類型。感謝Ivy Wang和H2O.ai團隊友情提供圖片
圖形符號(Glyph)是一種用來表征數據的視覺符號。圖形符號的顏色、材質以及排列形式,可以用來表達數據不同屬性(譯者注:即變量)的值。在圖1中,彩色的圓圈被定義為表達不同種類的操作係統以及網絡瀏覽器。使用特定方式對圖形符號進行排列後,它們就可以表征數據集中的一行行數據了。
圖2. 將圖形符號進行組織,表達數據集中的多行。感謝Ivy Wang以及H2O.ai團隊友情提供圖片
關於如何使用圖形符號表示一行行數據,圖2在這裏給出了一個例子。每4個符號形成的小組既可以表示特定數據集中的某一行數據,也可以表示其中的很多行的匯總數據。圖形中被突出的『Windows+IE瀏覽器』這種組合在數據集中十分常見(用藍色,茶葉色,以及綠色表示),同理『OS X+Safari瀏覽器』這種組合也不少(上麵是兩個灰色點)。在數據集中,這兩種組合分別構成了兩大類數據。同時我們可以觀察到,一般來說,操作係統版本有比瀏覽器版本更舊的傾向,以及,使用Windows的用戶更傾向用新版的操作係統,使用Safari的用戶更傾向於用新版的瀏覽器,而Linux用戶以及網絡爬蟲機器人則傾向於使用舊版的操作係統和舊版的瀏覽器。代表機器人的紅點在視覺上很有衝擊力(除非您是紅綠色盲)。為那些數據離群點(Outlier)選擇鮮明的顏色和獨特的排列,在圖形符號表達法中,是標注重要數據或異常數據值的好辦法。
相關圖
圖3. 來自一家大型金融公司,用於表征貸款業務的相關圖。感謝Patrick Hall和H2O.ai團隊友情提供圖形
相關圖是體現數據集中數據關係(相關性)的二維表達方法。盡管在圖3中,過多的細節實際上是可有可無的,這張圖還有一定改進空間,然而就相關圖本身而言,這一方法仍然是觀察、理解各變量相關性的有力工具。利用這種技巧,哪怕是上千個變量的數據集,也能畫在一張二維圖形上。
在圖3中,圖的結點(node)表示某個貸款數據集中的變量,圖中的連邊(edge)的權重,也就是線條的粗細,是由兩兩之間皮爾遜相關係數的絕對值來定義的。為了簡單起見,低於特定某個閾值的絕對值沒有畫出來。結點的大小,由結點向外連接的數目(即結點的度,degree)決定。結點的顏色是圖的社群聚類算法給出的。結點所在的位置是通過力導向圖生成的。相關圖使我們能夠觀察到相關變量形成的大組,識別出孤立的非相關變量,發現或者確認重要的相關性信息以引入機器學習模型。以上這一切,二維圖形足以搞定。
在如圖3所展示的數據集中,若要建立以其中某個變量為目標的有監督模型,我們希望使用變量選擇的技巧,從淺綠、藍色、紫色的大組裏挑選一到兩個變量出來;我們能夠預計到,跟目標變量連線較粗的變量在模型中會較為重要,以及『CHANNEL_R』這種無連線的變量在模型中重要性較低。在圖3中也體現出了一些常識性的重要關係,比如『FIRST_TIME_HOMEBUYER_FLAG_N』(是否為首次購房者)以及『ORIGINAL_INTEREST_RATE』(原始基準利率),這種關係應該在一個可靠的模型中有所體現。
2D投影
圖4. 基於著名的784維的MNIST手寫數據集製作的二維投影圖。左圖使用了主成分分析,右圖使用了堆疊式消噪自編碼機。感謝Patrick Hall和H2O.ai團隊友情提供圖片
把來自數據集中原始高維空間的行向量映射到更容易觀察的低維空間(理想情況是2到3維),此類方法可謂多種多樣。流行的技巧包括:
-
主成分分析(Principal Component Analysis,PCA)
-
多維縮放(Multidimensional Scaling,MDS)
-
t分布隨機近鄰嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE)
-
自編碼機神經網絡(Autoencoder Networks)
每一種方法都有它的優點和弱勢,但他們有一個共同的主旨,就是把數據的行轉化到有意義的低維空間上。這些數據集包括圖像、文本,甚至商業數據,它們往往具有很多難以畫在一張圖上的變量。但這些通過找到把高維數據有效映射到低維表達的投影方法,讓古老而可靠的散點圖迎來了第二春。一個散點圖所體現的高質量映射,應該反映出數據集中各方麵的重要結構,比如數據點形成的聚類,層次結構,稀疏性,以及離群點等。
在圖4中,著名的MNIST數據集(數字的手寫數據集)被兩種算法從原始的784維映射到了2維上:一種是主成分分析,另一種是自編碼機神經網絡。糙快勐的主成分分析能夠把標注為0和1的這兩類數據區分的很好,這兩種數字對應的手寫圖像被投影在兩類較為密集的點簇中,但是其他數字對應的類普遍地發生了覆蓋。在更精巧(然而計算上也更費時)的自編碼機映射中,每個類自成一簇,同時長的像的數字在降維後的二維空間上也比較接近。這種自編碼機投影抓住了預期中的聚簇結構以及聚簇之間的相對遠近關係。有意思的是,這兩張圖都能識別出一些離群點。
投影法在用於複查機器學習建模結果時,能提供一定程度上的額外『可信性』。比如說,如果在2維投影中能夠觀測到訓練集/驗證集裏存在類別、層級信息和聚簇形態的信息,我們也許可以確認一個機器學習算法是否正確的把它們識別出來。其次,相似的點會投影到相近的位置,不相似的點會投影到較遠的位置,這些都是可以加以確認的。我們考察一下用於做市場細分的分類或者聚類的模型:我們預計機器學習模型會把老年有錢客戶和年輕且不那麼富裕的客戶放在不同的組裏,並且它們在經過映射後,分別屬於完全分離的兩大組稠密的點簇。哪怕訓練集、驗證集中存在一些擾動,這種結果也應該是穩定的,而且對有擾動/無擾動兩組樣本分別進行映射,可以考察模型的穩定性,或者考察模型是否表現出潛在的隨時間變化的模式。
偏相關圖
圖5. 在著名的加州房產數據集上建立GBDT集成模型後得到的一維偏相關圖。感謝Patrick Hall和H2O.ai團隊友情提供圖片
當我們隻關心一兩個自變量取值發生變化,而其他自變量都處於平均水準對機器學習模型響應函數所造成的影響時,偏相關圖可以為我們展現這種關係。在我們感興趣的自變量存在較為複雜的交互作用時,用雙自變量偏相關圖進行可視化顯得尤為有效。當存在單調性約束時,偏相關圖可以用於確認響應函數對於自變量的單調性;在極端複雜的模型裏,它也可以用於觀察非線性性、非單調性、二階交叉效應。如果它顯示的二元變量關係與領域知識相符,或者它隨時間遷移呈現出可預計的變化模式或者穩定性,或者它對輸入數據的輕微擾動呈現不敏感,此時我們對模型的信心都會有所提高。
偏相關圖對於數據集的不同數據行而言,是全局性的;但對數據的不同列,也就是不同自變量而言,是局部性的。僅當我們需要考察1-2個自變量和因變量的關係時我們才能使用這種圖。一種較新,不太為人所知的偏相關圖的改進版本,稱為『個體條件期望圖』(Individual conditional expectation,ICE),它使用類似偏相關圖的思想,能夠給出對數據更局部性的解釋。在多個自變量存在較強的相關關係時,ICE圖顯得尤其好用。
殘差分析
圖6. 一個來自殘差分析應用的截圖。感謝Micah Stubbs和H2O.ai團隊友情提供的截圖
『殘差』,是指數據集每一行中,因變量的測量值和預測值之差。一般來說,在擬合得不錯的模型中,殘差應該呈現出隨機分布,因為一個好的模型,會描述數據集中除了隨機誤差以外的絕大部分重要現象。繪製『殘差-預測值』這種評估手段,是一種用二維圖形檢查模型結果的好辦法,飽經時間考驗。如果在殘差圖中觀測到了很強的相關性模式,這不啻為一種死亡訊息:要麼你的數據有問題,要麼你的模型有問題——要麼兩者都有問題!反之,如果模型產生了隨機分布的殘差,那這就是一種強烈的信號:你的模型擬合較好,可靠,可信;如果其他擬合指標的值也合理(比如,R^2,AUC等指標),那就更加如此了。
在圖6中,方框指出了殘差中具有很強線性模式的部分。這裏不僅有傳統的『預測值-殘差圖』,也有特定自變量跟殘差形成的二維散點圖。把殘差跟不同自變量畫在一起,可以提供更細粒度的信息,以便於推理出到底什麼原因導致了非隨機模式的產生。殘差圖對識別離群點也有幫助,圖6就指出了離群點。很多機器學習算法都使徒最小化誤差平方和,這些高殘差的點對大部分模型都會帶來較強的影響,通過人工分析判斷這些離群點的真實性可以較大的提高模型精度。
現在我們已經展現了幾種數據可視化的技巧,我們通過提幾個簡單問題,來回顧以下幾個大概念:尺度,複雜性,對數據的理解,以及模型的可信性。我們也會對後麵的章節中出現的技術提出相同的問題。
數據可視化提供的可解釋性,是局部性的還是全局性的?
都有。大部分數據可視化技術,要麼用於對整個數據集進行粗糙的觀測,要麼用於對局部數據提供細粒度檢查。理想情況家,高級可視化工具箱能夠讓用戶容易地縮放圖形或者向下鑽取數據。如若不然,用戶還可以自己用不同尺度對數據集的多個局部進行可視化。
數據可視化能夠幫助我們理解什麼複雜級別的響應函數?
數據可視化可以幫我們解釋各種複雜程度的函數。
數據可視化如何幫我們提高對數據的理解?
對大部分人而言,數據結構(聚簇,層級結構,稀疏性,離群點)以及數據關係(相關性)的可視化表達比單純瀏覽一行行數據並觀察變量的取值要容易理解。
數據可視化如何提高模型的可信程度?
對數據集中呈現的結構和相關性進行觀察,會讓它們易於理解。一個準確的機器學習模型給出的預測,應當能夠反映出數據集中所體現的結構和相關性。要明確一個模型給出的預測是否可信,對這些結構和相關性進行理解是首當其衝的。
在特定情況下,數據可視化能展現敏感性分析的結果,這種分析是另一種提高機器學習結果可信度的方法。一般來說,為了檢查你的線上應用能否通過穩定性測試或者極端情況測試,會通過使用數據可視化技術,展現數據和模型隨時間的變化,或者展現故意篡改數據後的結果。有時這一技術本身即被認為是一種敏感性分析。
第二部分:在受監管的行業使用機器學習
對於在受監管行業中工作的分析師和數據科學家來說,盡管機器學習可能會帶來『能極大提高預測精度』這一好處,然而它可能不足以彌補內部文檔需求以及外部監管責任所帶來的成本。對於實踐者而言,傳統線性模型技術可能是預測模型中的唯一選擇。然而,創新和競爭的驅動力並不因為你在一個受監管的模式下工作就會止息。在銀行,保險以及類似受監管垂直領域裏,數據科學家和分析師正麵對著這樣一個獨一無二的難題:他們必須要找到使預測越來越精準的方案,但前提是,保證這些模型和建模過程仍然還是透明、可解釋的。
在這一節中所展現的技巧,有些使用了新型的線性模型,有些則是對傳統線性模型做出改進所得到的方法。對於線性模型進行解釋的技巧是高度精妙的,往往是有一個模型就有一種解釋,而且線性模型進行統計推斷的特性和威力是其他類型的模型難以企及的。對於那些對機器學習算法的可解釋性心存疑慮而不能使用它們的實踐者,本節中的技巧正適合他們。這些模型產生了線性、單調的響應函數(至少也是單調的!),和傳統線性模型一樣能保證結果是全局可解釋的,但通過機器學習算法獲得了預測精度的提高。
普通最小二乘(Ordinary Least Square,OLS)回歸的替代品
受懲罰的回歸(Penalized Regression)
圖7. 左圖:經過L1/LASSO懲罰的回歸係數處於縮小可行域中。右圖:經過L2/嶺回歸懲罰的回歸係數。感謝Patrick Hall, Tomas Nykodym以及H2O.ai團隊友情提供圖片
普通最小二乘法(Ordinary least squares,OLS)回歸有著200年的曆史。也許我們是時候該向前發展一點了?作為一個替代品,帶懲罰項的回歸技術也許是通往機器學習之路上輕鬆的一課。現在,帶懲罰項的回歸技術常常混合使用兩種混合:為了做變量選擇所使用的L1/LASSO懲罰,以及為了保證模型穩健性的Tikhonov/L2/ridge(嶺回歸)懲罰。這種混合被稱為elastic net。相比OLS回歸,它們對於數據所作出的假設更少。不同於傳統模型直接解方程,或者使用假設檢驗來做變量選擇,帶懲罰項的回歸通過最小化帶約束的目標函數,來找到給定數據集中的一組最優回歸係數。一般而言,這就是一組表征線性關係的參數,但是針對『給共線性或者無意義自變量以較大的回歸係數』這一點,模型可以加以一定的懲罰。你可以在統計學習基礎(Elements of Statistical Learning, ESL)一書中學到關於帶懲罰項回歸的方方麵麵,但是在此,我們的目的隻是要強調一下,你很可能需要嚐試一下『帶懲罰項的回歸』這一模型。
帶懲罰項的回歸被廣泛地應用於不少研究領域,但是對於具有很多列,列數大於行數,列中存在大量多重共線性的商業業務數據集,它們仍然適用。L1/LASSO懲罰把無足輕重的回歸係數拉回到0,能夠選取一小部分有代表性的變量進行回歸係數估計,供線性模型使用,從而規避了那些靠前向、後向、逐步變量選擇法(forward, backward, stepwise variable selection)所帶來的多模型比較困難的問題。Tikholov/L2/嶺回歸(ridge) 懲罰可以增加模型參數的穩定性,甚至在變量數目過多、多重共線性較強、重要的預測變量與其他變量存在相關性時也能保持穩定。我們需要知道的重點是:懲罰項回歸並非總能為回歸係數給出置信區間,t-檢驗值或者p-value(譯者注:t-檢驗值和p-value都是檢查模型顯著有效性的統計量)。這些統計量往往隻能通過額外花時間進行迭代計算,或者自助采樣法(bootstrapping)才能得到。
廣義加性模型(Generalized Additive Models, GAMs)
圖8. 使用廣義加性模型對多個自變量建立樣條函數。感謝Patrick Hall以及H2O.ai團隊友情提供圖表
廣義加性模型能夠通過對一部分變量進行標準線性回歸,對另一部分變量進行非線性樣條函數的擬合的方式,手動調整模型,讓你在遞增的模型精度和遞減的模型可解釋性之間找到一個權衡。同時,大部分GAM能夠方便地為擬合好的樣條函數生成圖形。根據你所承受的外部監管或者內部文檔要求的不同,你也許可以在模型中直接使用這些樣條函數來讓模型預測的更準確。如果不能直接使用的話,你可以用肉眼觀測出擬合出的樣條函數,然後用更具可解釋性的多項式函數、對數函數、三角函數或者其他簡單的函數應用於預測變量之上,這樣也能讓預測精度提高。同時,你也可以靠查閱《統計學習基礎》(Elements of Statistical Learning)加深對GAM的理解。
分位數回歸
圖9. 將分位數回歸繪製為二維圖表。感謝Patrick Hall以及H2O.ai團隊友情提供圖表
分位數回歸讓你能夠使用傳統可解釋的線性模型對訓練數據的分位點進行回歸。這種回歸允許你對不同的消費者市場細分或者不同賬戶投資組合行為細分,建立不同的模型,你可以使用不同的預測變量,也可以在模型中給予預測變量不同的回歸係數。對低價值客戶和高價值客戶使用完全不同的兩套預測變量和回歸係數聽上去還算合理,分位數回歸對這種做法提供了一套理論框架。
回歸的這些替代品提供的是全局性的還是局部性的可解釋性?
回歸的替代品往往能夠提供全局可解釋的函數,這些函數是線性的、單調的,根據其回歸係數的大小以及其他傳統回歸的評估量、統計量,具備可解釋性。
作為回歸的替代品,這些回歸函數的複雜程度如何?
這些回歸函數一般來說是線性的、單調的函數。不過,使用GAM可能導致相當複雜的非線性響應函數。
這些技術如何幫我們提高對模型的理解?
比較少的模型假設意味著比較少的負擔,可以不使用可能帶來麻煩的多元統計顯著性檢驗而進行變量選擇,可以處理存在多重共線性的重要變量,可以擬合非線性的數據模式,以及可以擬合數據條件分布的不同分位點(這可不止是擬合條件分布),這些特性都可能讓我們更準確的理解模型所表征的現象。
回歸函數的這些替代品如何提高模型的可信度?
基本上,這些技巧都是值得信任的線性模型,隻是使用它們的方式比較新奇。如果在你的線上應用中這些技巧帶來了更精確的預測結果,那麼我們就可以更加信任它們。
為機器學習模型建立基準測試模型
圖10. 考慮交叉效應的線性模型與機器學習模型比較,並繪製評估圖。感謝Patrick Hall以及H2O.ai團隊提供圖表
機器學習算法和傳統線性模型的兩個主要區別,一個是機器學習算法在預測時引入了很多變量的高階交叉作用,並不直觀,另一個是機器學習算法會產生非線性、非多項式、非單調甚至非連續的響應函數。
如果一個機器學習算法的預測表現碾壓了傳統線性模型,我們可以對自變量和目標變量建立一磕決策樹。在決策樹相鄰層的分叉所使用的變量,一般來說會有強交叉效應。我們可以試著把這些變量的交叉效應加入到線性模型中,甚至樹的連續幾層所涉及到變量的高階交叉效應也可以加入進來。如果一個機器學習算法較大地超越了傳統線性模型,我們可以考慮把數據建模為分段線性的模型。為了要觀察機器學習學到的響應函數如何受到一個變量各種取值的影響,或者要獲得一些如何使用分段線性模型的洞見,可以使用GAM以及偏相關圖。『多變量自適應回歸樣條法』,是一種可以自動發現條件分布中存在的複雜非線性部分,並對其不同區域分別進行擬合的統計手段。你可以嚐試著直接使用多變量自適應回歸樣條法,對分段模型進行擬合。
麵向機器學習模型的基準測試模型能提供全局性還是局部性的可解釋性?
如果線性性和單調性能夠得以保留,建模過程就會產生全局可解釋的線性單調響應函數。如果使用分段函數,對機器學習模型建立基準測試可以放棄全局解釋性,轉而尋求局部可解釋性。
麵向機器學習模型的基準測試模型能夠生成什麼複雜度的響應函數?
如果謹慎、克製的建立麵向機器學習模型的基準測試模型,並加以驗證,對機器學習模型建立的基準模型可以維持像傳統線性模型那樣的線性性和單調性。然而,如果加入了太多的交叉效應,或者是在分段函數中加入了太多小段,將會導致響應函數依然極端複雜。
麵向機器學習模型的基準測試模型如何提升我們對模型的理解?
這種流程把傳統、可信的模型用出了新花樣。如果使用類似GAM,偏相關圖,多元自適應回歸樣條法這些技巧進行更進一步的數據探索,對機器學習模型建立相似的基準測試模型,可以讓模型的可理解性大大提高,對數據集中出現的交叉效應以及非線性模式的理解也會加深。
麵向機器學習模型的基準測試模型如何提高模型的可信度?
這種流程把傳統、可信的模型用出了新花樣。如果使用類似GAM,偏相關圖,多元自適應回歸樣條法這些技巧進行更進一步的數據探索,通過建立麵向機器學習模型的基準測試模型,能夠讓這些模型更準確地表達出數據集中我們感興趣的那部分模式,從而提高我們對模型的信任程度。
在傳統分析流程中使用機器學習
圖11. 在傳統分析流程中,使用機器學習的幾種可能的方式,以圖形呈現。感謝Vinod Iyengar以及H2O.ai團隊友情提供圖形
相較於直接使用機器學習的預測來做分析決策,我們可以通過一些機器學習的技術,對傳統分析的生命周期流程(比如數據準備加模型部署)進行一些增強,從而有潛力達到比滿足監管的線性、單調性的模型精度更高的預測。圖11簡要描述了三種可能的場合,在這些場合中,傳統分析流程靠著機器學習的加持得以增強效果:
-
在傳統的線性模型中,加入(加工過的)複雜自變量:
把交叉效應、多項式函數或者把變量經過簡單函數的映射加入到線性模型中算得上是標準做法了。機器學習模型可以產生各種各樣非線性、非多項式的自變量,甚至還能表征原有自變量之間存在的高階交叉效應。產生這些自變量的方法有不少選擇。例如,從自編碼機神經網絡中提取非線性特征,或者從決策樹的葉子節點中獲得最優化分箱。
-
使用多個帶門限的線性模型:
根據重要的數據屬性,或者根據不同的時間段對數據分成小組,再對每一個小組分別建模,可以獲得更準確的模型。對於一個企業而言,同時部署多個線性模型來處理不同的細分市場數據,或者處理不同年份的數據,這類情況也並非少見。要決定如何手動融合這些不同的模型,對於數據分析師和數據科學家而言是個瑣碎的活計。不過,如果關於曆史模型表現的數據也能收集起來的話,這個流程就可以實現自動化:建立一個門限模型,讓它來決定在遇到觀測點時,究竟使用哪個線性模型來對它進行預測。
-
預測線性模型的退化行為:
在大部分情況下,模型是根據靜態數據快照建立的,它們會在後來的數據快照上進行驗證。盡管這是一種被廣泛采納的實踐方式,但是當訓練集、驗證集數據所代表的真實世界中的數據模式發生變化時,這樣做會導致模型發生退化。當市場中的競爭者進入或者退出,當宏觀經濟指標發生變動,當客戶追逐的潮流發生了改變,或者其他各種因素發生時,都可能引起這種退化。如果關於市場、經濟指標和舊模型表現的數據能夠被上收上來,我們就可以基於此數據另外建立一個模型,來預估我們所部署的傳統模型大概多久需要重新訓練一次(譯者注:僅調整模型參數),或者多久需要被全新的模型(譯者注:模型結構發生了改變)所替代。就像在需要保養之前就替換掉一個昂貴的機械部件一樣,我們也可以在模型的預測效力降低之前就進行重新訓練,或者以新模型取而代之。(我之前寫過一遍文章是有關應用機器學習時導致的驗證誤差,以及如何正確地在真實世界中使用機器學習的。)
當然,還有很多在傳統模型的生命周期中引入機器學習技巧的機會。你可能現在就已經有更好的想法和實踐了!
在傳統分析流程中使用機器學習,能提供全局性還是局部性的可解釋性?
一般來說,這種方法致力於保持傳統線性模型所具有的全局可解釋性。然而,在線性模型中加入機器學習算法所生成的特征,會降低全局可解釋性。
在傳統分析流程中使用機器學習,能產生何種複雜程度的響應函數?
我們的目標仍然是繼續使用線性、單調性的響應函數,不過是以一種更加有效、更加自動化的方式來實現這一目的。
在傳統分析流程中使用機器學習,如何幫助我們更好的理解數據?
在傳統分析流程中引入機器學習模型的目的,是為了更有效、更準確地使用線性、可解釋的模型。究竟是什麼驅動力導致了數據表現出非線性、時間趨勢、模式遷移?如果在線性模型中引入非線性項,使用門限模型,或者預測模型失效等等手段能夠讓你更深入地掌握這種知識的話,那麼對數據的理解自然就加深了。
在傳統分析流程中使用機器學習,如何讓我們更加信任模型?
這種手段使我們可以理解的模型更加精確。如果對特征的增加確實導致了精度提升,這就暗示著數據中的關聯現象確實以一種更可靠的形式被建模。
對可解釋的模型進行小型的模型集成(ensemble)
圖12. 一個小型、堆疊的集成算法圖。感謝Vinod Iyengar以及H2O.ai團隊友情提供圖形
很多企業如此擅長使用傳統的線性模型建模技巧,以至於他們幾乎無法再對單獨某一個模型壓榨出更高的精度。一種在不太損失可解釋性的條件下提高精度的可能辦法是,把數個已經理解透徹的模型組合起來進行預測。最終預測結果可以是對這些結果簡單取平均,手動對它們進行加權,或者用更複雜的數學方式組合起來。舉例說明,針對某種特定用途,總體表現最好的模型,可以和那些處理極端情況特別好的模型組合起來。對一名數據分析師或者數據科學家而言,他們可以通過實驗來決定為對每一個模型選取最優加權係數進行簡單集成;為了保證模型的輸入和預測仍然滿足單調性關係,可以使用偏相關圖進行確認。
如果你傾向於,或者需要使用一種更嚴格的方式來整合模型的預測,那麼『超級學習器(super learners)』是一個很棒的選擇。在上世紀90年代早期,Wolpert介紹了『堆疊泛化法』(stacked generalization),超級學習器是它的某種實現。堆疊泛化法使用了一種組合模型來為集成模型中的每個小部分賦予權重。在堆砌模型時,過擬合是個很嚴重的問題。超級學習器要求使用交叉驗證,並對集成模型中各個部分的權重加上約束項,通過這種方法來控製過擬合,增加可解釋性。圖12的圖示表明,兩個決策樹模型和一個線性回歸模型分別交叉驗證,並且通過另外一個決策樹模型把它們堆疊在一起。
可解釋模型的小型集成提供了局部性還是全局性的可解釋性?
這種集成可以增加精度,但是它會降低全局可解釋性。這種集成並不影響其中的每一個小模型,但是集成在一起的模型會難以解釋。
可解釋模型的小型集成產生了何種複雜程度的響應函數?
它們會導致很複雜的響應函數。為了確保可解釋性,使用盡可能少的模型進行集成,使用模型的簡單線性組合,以及使用偏相關圖來確保線性、單調性關係依然存在。
可解釋模型的小型集成怎樣讓我們更好的理解數據?
如果這種把可解釋模型組合在一起的流程能夠讓我們對數據中出現的模式更熟悉、更敏感,對未來數據進行預測、泛化時能夠有所裨益,那麼它就可以說是提高了我們對數據的理解。
可解釋模型的小型集成如何讓我們對模型更加信任?
這種集成讓我們在沒有犧牲太多可解釋的情況下,對傳統的可靠模型的精度進行一定的提升。精度提高意味著,數據中的有關模式以一種更可信、更可靠的方式被建模出來。當數個模型互為補充,做出符合人類預期或者領域知識的預測時,這種小型集成就顯得更加可靠。
單調性約束
圖13. 在神經網絡中為數據和模型加入單調性約束的示意圖。感謝Vinod Iyengar以及H2O.ai團隊友情提供圖表
單調性約束能夠把難以解釋的非線性、非單調模型轉化成為高度可解釋的、符合監管要求的非線性單調模型。我們之所以認為單調性很重要,是基於兩個原因:
-
監管方希望模型滿足單調性。無論數據樣本是如何的,監管方總是希望見到模型具有單調性的表現。比如,考慮信貸評分模型中的賬戶餘額。賬戶餘額高,傾向於代表著賬戶所有者更值得授信,低賬戶餘額則代表著有潛在的違約風險。如果某一批特定的數據包含著的大量樣本中,含有很多『儲蓄賬戶餘額高但貸款違約』的個體以及『儲蓄賬戶餘額低但正在還貸款』的個體,那麼,基於這份訓練數據進行機器學習學出的響應函數對於賬戶餘額這個變量自然會是非單調的。監管方是不會對這種預測函數感到滿意的,因為它和幾十年來沉澱下來的領域專家的意見背道而馳,因而會降低模型本身或者數據樣本的可信度。
-
單調性能夠令生成的『原因代碼』保持一貫性。具有一貫性的原因代碼生成一般被認為是模型可解釋性的金標準。如果在一個信貸評分模型中,單調性得以保證,為信貸申請結果分析原因不但直觀,而且能夠自動化。如果某個人的儲蓄賬戶餘額低,那麼他的信用水平自然也低。一旦我們能夠保證單調性,對於一次授信決定(譯者注:一般指拒絕授信)的原因解釋可以根據最大失分法(max-points-lost)可靠地進行排序。最大失分法把一個個體放在機器學習所得到的、具有單調性的響應曲麵上,並度量他和曲麵上最優點(也就是理想的、可能具有最高信用水平的客戶)的距離。這個人與理想客戶之間,在哪個坐標軸(也就是自變量)距離最遠,也就說明拒絕授信時,哪個負麵因素最重要;而這個這個人與理想客戶之間,在哪個坐標軸(也就是自變量)距離最近,也就說明這個原因代碼產生的負麵影響最不重要;根據這個人和『理想客戶』的相對位置來計算,其他自變量的影響都排在這二者之間。在使用最大失分法時,單調性可以簡單地確保我們能做出清晰的、符合邏輯的判斷:在單調性模型下,一個在貸款業務中被授信的客戶,其儲蓄賬戶餘額絕不可能低於一個被拒絕貸款的客戶(譯者注:在其他條件都接近的情況下)。
在輸入數據上加約束,以及對生成的模型加約束,都可以產生單調性。圖13顯示,仔細選擇並處理非負、單調變量,把它們與單隱層神經網絡結合使用,達到了使擬合係數始終為正的約束效果。這種訓練組合產生了非線性、單調的響應函數,根據響應函數可以對『原因代碼』進行計算;通過分析模型的係數,可以檢測高階交叉效應。尋找以及製造這些非負、單調的自變量的工作十分枯燥、費時,還需要手動試錯。幸運的是,神經網絡和樹模型的響應函數往往能夠在規避枯燥的數據預處理的同時,滿足單調性的約束。使用單調性神經網絡意味著可以定製化模型結構,使得生成模型參數的取值滿足約束。對於基於樹的模型來說,使用均勻分叉往往可以強製保證單調性:使用某個自變量分的叉上,總是能保證當自變量取值往某個方向前進時,因變量在其所有子節點上的平均值遞增;自變量取值往另一個方向前進時,因變量在其所有子節點上的平均值遞減。在實踐中,為不同類型模型實現單調性約束的方法千變萬化,這是一種隨模型而改變的模型解釋性技術。
單調性約束提供了全局性還是局部性的可解釋性?
單調性約束為響應函數提供了全局的可解釋性。
單調性約束能夠導致何種複雜程度的響應函數?
它們產生了非線性且單調的響應函數。
單調性約束如何讓我們更好的理解數據?
它不僅可以確保『原因代碼』能夠自動化地生成,同時在特定場景下(比如使用單隱層神經網絡或者單棵決策樹時),變量之間重要的高階交叉效應也能夠被自動檢測出來。
單調性約束如何讓模型更可信賴?
當單調性關係、『原因代碼』以及檢測出的交叉效應能夠簡潔地符合領域專家意見或者合理預期的時候,模型的可信度會得以提升。如果數據中存在擾動時結果依然保持穩定,以及模型隨著時間產生預料之內的變化的話,通過敏感性分析也能夠提升模型的可信度。
第三部分:理解複雜的機器學習模型
在這一部分中我們所要展現的技術,可以為非線性、非單調的響應函數生成解釋。我們可以把它們與前兩部分提到的技巧結合起來,增加所有種類模型的可解釋性。實踐者很可能需要使用下列增強解釋性技巧中的一種以上,為他們手中最複雜的模型生成令人滿意的解釋性描述。
代理模型
圖14. 為了解釋複雜神經網絡而使用代理模型的示意圖。感謝Patrick Hall以及H2O.ai團隊友情提供圖形
代理模型是一種用於解釋複雜模型的簡單模型。最常見的建立方法是,對原始輸入和複雜模型給出的預測值建立簡單線性回歸或者決策樹模型。代理模型中所展示的係數、變量重要性、趨勢以及交互作用,是複雜模型內部機製的一種體現。不過,幾乎沒有理論依據能夠保證簡單的代理模型能夠以高精度表達出更複雜的模型。
代理模型適用於何種尺度的可解釋性?
一般而言,代理模型是全局性的。一個簡單模型的全局可解釋特性會用於解釋一個更複雜模型的全局特性。不過,我們也無法排除代理模型對複雜模型條件分布的局部擬合能力,例如先聚類,再用自變量擬合預測值、擬合預測值的分位點、判斷樣本點屬於哪一類等等,能夠體現局部解釋性。因為條件分布的一小段傾向於是線性的、單調的,或者至少有較好的模式,局部代理模型的預測精度往往比全局代理模型的表現更好。模型無關的局部可解釋性描述(我們會在下一小節介紹)是一種規範化的局部代理模型建模方法。當然,我們可以把全局代理模型和局部代理模型一起使用,來同時獲得全局和局部的解釋性。
代理模型能夠幫助我們解釋何種複雜程度的響應函數?
代理模型能夠有助於解釋任何複雜程度的機器學習模型,不過可能它們最有助於解釋非線性、非單調的模型。
代理模型如何幫我們提高對數據的理解?
代理模型可以針對複雜模型的內部機製向我們提供一些洞見,因此能提高我們對數據的理解。
代理模型如何讓模型更可信賴?
當代理模型的係數、變量重要性、趨勢效應和交叉效應都符合人類的領域知識,被建模的數據模式符合合理預期時,模型的可信度會得以提升。當數據中存在輕微的或者人為的擾動時,或者數據來自於我們感興趣領域的數據模擬,又或者數據隨著時間改變時,如果結合敏感性分析進行檢驗發現,對於模型的解釋是穩定的,並且貼合人類領域經驗,符合合理預期,那麼模型的可信度會得以提升。
模型無關的局部可解釋性描述(Local Interpretable Model-agnostic Explanation, LIME)
圖15. 對LIME流程的一個描述,其中使用了加權線性模型幫助我們解釋一個複雜的神經網絡是如何做出某個預測的。感謝Marco Tulio Ribeiro友情提供圖片。圖片使用已獲得許可
LIME是圍繞單個樣本建立局部代理模型的一種方法。它的主旨在於厘清對於特定的幾個樣本,分類器是如何工作的。LIME需要找到、模擬或者產生一組可解釋的樣本集。使用這組已經被詳細研究過的樣本,我們能夠解釋機器學習算法得到的分類器是如何對那些沒有被仔細研究過的樣本進行分類的。一個LIME的實現可以遵循如下流程:首先,使用模型對這組可解釋的數據集進行打分;其次,當模型對另外的數據進行分類時,使用解釋性數據集與另外的數據點的距離進行加權,以加權後的解釋性數據集作為自變量做L1正則化線性回歸。這個線性模型的參數可以用來解釋,另外的數據是如何被分類/預測的。
LIME方法一開始是針對圖像、文本分類任務提出的,當然它也適用於商業數據或者客戶數據的分析,比如對預測客戶群違約或者流失概率的百分位點進行解釋,或者對已知的成熟細分市場中的代表性客戶行為進行解釋,等等。LIME有多種實現,我最常見的兩個,一個是LIME的原作者的實現,一個是實現了很多機器學習解釋工具的eli5包。
LIME提供的可解釋性的尺度如何?
LIME是一種提供局部可解釋性的技術。
LIME能幫助我們解釋何種複雜程度的響應函數?
LIME有助於解釋各種複雜程度的機器學習模型,不過它可能最適合解釋非線性、非單調的模型。
LIME如何幫我們提高對模型的理解?
LIME提供了我們對重要變量的洞察力,厘清這些變量對特定重要樣本點的影響以及呈現出的線性趨勢。對極端複雜的響應函數更是如此。
LIME如何讓模型更加可信?
當LIME發現的重要變量及其對重要觀測點的影響貼合人類已有的領域知識,或者模型中體現的數據模式符合人類的預期時,我們對模型的信心會得到增強。結合下文將會提到的最大激發分析,當我們能明顯地看到,相似的數據被相似的內部機製處理,全然不同的數據被不同的內部機製處理,在對多個不同的樣本使用不同處理方式上,能夠保持一貫性。同時,在數據存在輕微擾動時,數據是由我們感興趣的場景模擬得出時,或者數據隨時間改變時,LIME可以被視為是敏感性分析的一種,幫助我們檢查模型是否依然能夠保持穩定,是否依然貼合人類的領域知識,以及數據模式是否依然符合預期。
最大激發分析
圖16. 不同輸入數據激發神經網絡中不同神經元的示意圖。感謝Patrick Hall以及H2O.ai團隊友情提供圖片
在最大激發分析中,可以找到或者模擬出這樣的例子,它們總是會對特定的神經元、網絡層、濾波器(filter)、決策樹集成模型中的某棵樹進行大量激發。像第二部分所提到的單調性約束一樣,最大激發分析在實戰中,是一種很常見的與模型相關的解釋性分析技術。
對於特定的一組樣本或者一類相似的樣本,觀察它們能夠對響應函數的哪一部分進行最大程度的激發(對於神經元而言是激發強度最大,對於樹模型而言是殘差最低,二者都可以算最大激發),這種最大分析厘清了複雜模型的內部工作機製。同時,如果不同類型的樣本持續激發模型中相同的部分,那麼這種分析也可以發現交叉效應。
圖16描繪了一種比較理想化的情況:一個好的客戶和一個欺詐型客戶分別以高強度激發了兩組不同的神經元。紅圈表示兩類輸入數據所激發的強度排名前三的神經元。對於這兩類數據而言,最大激發的神經元不同,表示著對於不同類型的樣本,神經網絡的內部結構會以不同的方式對其進行處理。如果對很多不同子類型的好客戶和欺詐型客戶而言這種模式依然存在,那麼這就是一種很強烈的信號,意味著模型內部結構是穩定的、可靠的。
最大激發分析適用於哪種尺度的可解釋性?
最大激發分析在尺度上是局部性的,因為它刻畫了一個複雜響應函數的不同部分是如何處理特定的一個或者一組觀測樣本的。
最大激發分析能夠幫助我們解釋何種複雜程度的響應函數?
最大激發分析能夠解釋任意複雜的響應函數,不過它可能最適合於解釋非線性、非單調的模型。
最大激發分析如何讓我們更好的理解數據和模型?
最大激發函數通過像我們展示複雜模型的內部結構,提高我們對數據、模型的理解。
最大激發分析如何讓模型變的更加可信?
上文討論過的LIME有助於解釋在一個模型中對條件分布的局部進行建模並預測。最大激發分析可以強化我們對模型局部內在機製的信心。二者的組合可以為複雜的響應函數建立詳細的局部解釋,它們是很棒的搭配。使用最大激發分析,當我們能明顯地看到,相似的數據被相似的內部機製處理,全然不同的數據被不同的內部機製處理,對多個不同的樣本使用不同處理方式這一點保持一貫性,模型中發現的交互作用貼合人類已有的領域知識,或者符合人類的預期,甚至把最大激發分析當做一種敏感性分析來用,以上的種種都會讓我們對模型的信心得以提高。同時,在數據存在輕微擾動時,數據是由我們感興趣的場景模擬得出時,或者數據隨時間改變時,最大激發分析可以幫我們檢查模型對於樣本的處理是否依然保持穩定。
敏感性分析
圖17. 一個變量的分布隨著時間而改變的示意圖。感謝Patrick Hall以及H2O.ai團隊友情提供圖片
敏感性分析考察的是這樣一種特性:給數據加上人為的擾動,或者加上模擬出的變化時,模型的行為以及預測結果是否仍然保持穩定。在傳統模型評估以外,對機器學習模型預測進行敏感性分析可能是最有力的機器學習模型驗證技術。微小地改變變量的輸入值,機器學習模型可能會給出全然不同的預測結論。在實戰中,因為自變量之間、因變量與自變量之間都存在相關性,有不少線性模型的驗證技巧是針對回歸係數的數值穩定性的。 對從線性建模技術轉向機器學習建模技術的人而言,少關注一些模型參數數值不穩定性的情況,多關心一些模型預測的不穩定性,這種做法可能還算是比較謹慎。
如果我們能針對有趣的情況或者已知的極端情況做一些數據模擬,敏感性分析也可以基於這些數據對模型的行為以及預測結果做一些驗證。在整篇文章中提及或者不曾提及的不少技巧,都可以用來進行敏感性分析。預測的分布、錯誤比率度量、圖標、解釋性技巧,這些方法都可以用來檢查模型在處理重要場景中的數據時表現如何,表現如何隨著時間變化,以及在數據包含人為損壞的時候模型是否還能保持穩定。
敏感性分析適用於什麼尺度的可解釋性?
敏感性分析可以是一種全局性的解釋技術。當使用單個的像代理模型這種全局性解釋技術時,使用敏感性分析可以保證,就算數據中存在輕微擾動或者有人為造成的數據缺失,代理模型中所存在的主要交叉效應依然穩定存在。
敏感性分析也可以是一種局部性的解釋技術。例如,當使用LIME這種局部性解釋技術時,它可以判斷在宏觀經濟承壓的條件下,為某個細分市場的客戶進行授信時,模型中使用的重要變量是否依然重要。
敏感性分析能夠幫我們解釋何種複雜程度的響應函數?
敏感性分析可以解釋任何複雜程度的響應函數。不過它可能最適合於解釋非線性的,或者表征高階變量交叉特征的響應函數。在這兩種情況下,對自變量輸入值的輕微改變都可能引起預測值的大幅變動。
敏感性分析如何幫助我們更好的理解模型?
敏感性分析通過向我們展現在重要的場景下,模型及其預測值傾向於如何表現,以及這種表現隨時間會如何變化。因此敏感性分析可以加強我們對模型的理解。
敏感性分析如何提高模型的可信可信度?
如果在數據輕微改變或者故意受損時,模型的表現以及預測輸出仍然能表現穩定,那麼穩定性分析就可以提高我們對模型的信任。除此以外,如果數據場景受到外來影響,或者數據模式隨時間發生變化時,模型仍然能夠符合人類的領域知識或者預期的話,模型的可信度也會上升。
變量重要性的度量
對於非線性、非單調的響應函數,為了量化衡量模型中自變量和因變量的關係,往往隻能度量變量重要性這一種方法可以選。變量重要性度量難以說明自變量大概是往哪個方向影響因變量的。這種方法隻能說明,一個自變量跟其他自變量相比,對模型影響的相對強弱。
變量重要性的全局度量
圖18. 在決策樹集成模型中,對變量重要性的描繪。感謝Patrick Hall以及H2O.ai團隊友情提供圖片
在基於樹的模型中使用變量重要性度量是一種常見做法。如圖18所示,一種拍腦袋的變量重要性規則是,同時考慮樹模型中一個變量用於分叉的所在深度和出現的頻率:自變量所在分叉位置越高(譯者注:在越淺的層數出現),或者自變量在樹中出現的頻率越高,那麼它就越重要。對於單棵決策樹來說,每次這個自變量在某個節點成為最佳分叉使用的變量時,把對應的分支準則(Splitting Criterion)收益累加起來,就可以量化地判斷這個變量究竟有多重要。對於梯度提升樹的集成(譯者注:Gradient boosted tree ensemble, 往往也稱作GBDT)而言,可以先對單棵樹計算變量重要性,然後再做聚合加總;我們還有一種額外的度量,如果把單個自變量排除掉之後導致了模型精度的降低,那麼這個精度差異可以代表自變量在模型中有多重要(Shuffling,洗牌法可以視作考察排除一個/一部分變量的效應,因為其他變量並沒有被洗掉)。對於神經網絡而言,對我們感興趣的特定自變量的重要性度量,一般來說是它所對應的模型參數絕對值的加總。全局性的變量重要性度量技術往往因模型而異,實踐者們要特別注意,變量重要性的簡單度量可能會偏向於那些取值範圍較大,包含類別數目較多的那些變量。
去除某一自變量的分析法(Leave-One-Covariate-Out, LOCO)
圖19. LOCO方法的示意圖。感謝Patrick Hall以及H2O.ai團隊友情提供圖表
最近某篇文章的預印版本給出一種局部性的、模型無關的、通過模型平均精度下降的方式來考察變量重要性的度量,稱為『去除某一自變量的分析法』(Leave-One-Covariate-Out),簡稱LOCO。最開始LOCO是用於回歸模型的,不過LOCO的大體思想是無關於模型的,而且可以有多重不同的實現。可以按 最後更新:2017-05-16 16:31:57 上一篇:
收藏!程序猿治愈係表白圖來了!
下一篇:
正式開始撰寫《產品大師》,經驗來自點滴的積累