解釋機器學習模型的一些方法(一)——數據可視化


本系列文章轉載自關於如何解釋機器學習的一些方法。本篇主要介紹了幾種可視化數據及模型結果的方法。

 

到現在你可能聽說過種種奇聞軼事,比如機器學習算法通過利用大數據能夠預測某位慈善家是否會捐款給基金會啦,預測一個在新生兒重症病房的嬰兒是否會罹患敗血症啦,或者預測一位消費者是否會點擊一個廣告啦,等等。甚至於,機器學習算法還能駕駛汽車,以及預測大選結果!… 呃,等等。它真的能嗎?我相信它肯定可以,但是,這些高調的論斷應該在數據工作者(無論這些數據是否是『大』數據)以及機器學習工作者心里留下些非常困難的問題:我能否理解我的數據?我能否理解機器學習算法給予我的模型和結果?以及,我是否信任這些結果?不幸的是,模型的高復雜度賜予了機器學習算法無與倫比的預測能力,然而也讓算法結果難以理解,甚至還可能難以采信。

盡管,我們可能能夠強制自變量-因變量關系函數是滿足單調性約束的(譯者注:單調性的意思是,遞增地改變自變量,只會導致因變量要么一直遞增,要么一直遞減),機器學習算法一直有傾向產生非線性、非單調、非多項式形式、甚至非連續的函數,來擬合數據集中自變量和因變量之間的關系。(這種關系也可以描述為,基於自變量的不同取值,因變量條件分布的變化)。這些函數可以根據新的數據點,對因變量進行預測——比如某位慈善家是否會捐款給基金會,一個在新生兒重症病房的嬰兒是否會罹患敗血症,一位消費者是否會點擊一個廣告,諸如此類。相反地,傳統線性模型傾向於給出線性、單調、連續的函數用於估計這些關系。盡管它們不總是最准確的預測模型,線性模型的優雅、簡單使得他們預測的結果易於解釋。

如果說,好的(數據)科學對能夠理解、信任模型以及結果是一個一般性要求的話,那么在諸如銀行、保險以及其他受監管的垂直行業中,模型的可解釋性則是重要的法律規范。商業分析師、醫生以及行業研究員必須理解以及信任他們自己的模型,以及模型給出的結果。基於這個原因,線性模型幾十年來都是應用預測模型中最易於上手的工具,哪怕是放棄幾個百分點的精度。今天,大量機構和個人開始在預測模型任務中擁抱機器學習算法,但是『不易解釋』仍然給機器學習算法的廣泛應用帶來了一些阻礙。

在這篇文章中,為了進行數據可視化和機器學習模型/結果解釋,我在最常用的一些准確性度量、評估圖表以外,提供了額外的幾種方法。我誠摯建議用戶根據自己的需要,對這些技巧進行一些混搭。只要有可能,在這篇文章中出現的每一個技巧里,『可解釋性』都被解構為幾個更基本的方面:模型復雜程度,特征尺度,理解,信任 —— 接下來我首先就來簡單對這幾點做個介紹。

 

待解釋的響應函數(譯者注:因變量關於自變量的函數)的復雜程度

線性單調函數:由線性回歸算法創建的函數可能是最容易解釋的一類模型了。這些模型被稱為『線性的、單調的』,這意味着任何給定的自變量的變化(有時也可能是自變量的組合,或者自變量的函數的變化),因變量都會以常數速率向同一個方向變動,變動的強度可以根據已知的系數表達出來。單調性也使得關於預測的直覺性推理甚至是自動化推理成為可能。舉例來說,如果一個貸款的借方拒絕了你的信用卡申請,他們能夠告訴你,根據他們的『貸款違約概率模型』推斷,你的信用分數、賬戶余額以及信用歷史與你對信用卡賬單的還款能力呈現單調相關。當這些解釋條文被自動化生成的時候,它們往往被稱作『原因代碼』。當然,線性單調的響應函數也能夠提供變量重要性指標的計算。線性單調函數在機器學習的可解釋性中有幾種應用,在更下面的第一部分和第二部分討論中,我們討論了利用線性、單調函數讓機器學習變得更為可解釋的很多種辦法。

非線性單調函數:盡管大部分機器學習學到的響應函數都是非線性的,其中的一部分可以被約束為:對於任意給定的自變量,都能呈現單調性關系。我們無法給出一個單一的系數來表征某個特定自變量的改變對響應函數帶來的影響程度,不過非線性單調函數實際上能夠做到『只朝着一個方向前進』(譯者注:前進的速度有快有慢)。一般來說,非線性單調的響應函數允許同時生成『原因代碼』以及自變量的『相對重要性指標』。非線性單調的響應函數在監管類的應用中,是具備高度可解釋性的。

(當然,機器學習能夠憑借多元自適應回歸樣條方法,建立『線性非單調』的響應曲線。在此我們不強調這些函數的原因,是因為一方面,它們的預測精度低於非線性非單調的預測模型,另一方面,它們跟線性單調的模型比起來又缺乏解釋性。)

非線性非單調函數:大部分機器學習算法建立了非線性、非單調的響應函數。給定任意一個自變量,響應函數可能以任何速率、向任何方向發生變動,因此這類函數最難以解釋。一般來說,唯一可以標准化的解釋性指標就是變量的『相對重要性指標』。你可能需要組織一些本文將要展示的技術作為額外手段,來解釋這些極端復雜的模型。

 

可解釋性的特征尺度

全局可解釋性:某些下文展示的技巧,無論是對機器學習算法,算法得到的預測結果,還是算法學習到的自變量-因變量關系而言,都能夠提供全局的可解釋性(比如條件概率模型)。全局可解釋性可以根據訓練出來的響應函數,幫助我們理解所有的條件分布,不過全局可解釋性一般都是『近似』的或者是『基於平均值』的。

局部可解釋性:局部可解釋性提高了對於小區域內條件分布的理解,比如輸入值的聚類,聚類類別對應的預測值和分位點,以及聚類類別對應的輸入值記錄。因為小局部內的條件分布更有可能是線性的、單調的,或者數據分布形式較好,因此局部可解釋性要比全局可解釋性更准確。

 

理解與信任

機器學習算法以及他們在訓練過程中得到的響應函數錯綜復雜,缺少透明度。想要使用這些模型的人,具有最基本的情感需求:理解它們,信任它們——因為我們要依賴它們幫忙做出重要決策。對於某些用戶來說,在教科書、論文中的技術性描述,已經為完全理解這些機器學習模型提供了足夠的洞見。對他們而言,交叉驗證、錯誤率指標以及評估圖表已經提供了足以采信一個模型的信息。不幸的是,對於很多應用實踐者來說,這些常見的定義與評估,並不足以提供對機器學習模型與結論的全然理解和信任。在此,我們提到的技巧在標准化實踐的基礎上更進一步,以產生更大的理解和信任感。這些技巧要么提高了對算法原理,以及響應函數的洞察,要么對模型產生的結果給出了更詳盡的信息。 對於機器學習算法,算法學習到的響應函數,以及模型預測值的穩定性/相關性,使用以下的技巧可以讓用戶通過觀測它們、確認它們來增強使用它們的信心。

這些技巧被組織成為三部分:第一部分涵蓋了在訓練和解釋機器學習算法中,觀察和理解數據的方法;第二部分介紹了在模型可解釋性極端重要的場合下,整合線性模型和機器學習模型的技巧;第三部分描述了一些理解和驗證那些極端復雜的預測模型的方法。

 

第一部分:觀察你的數據

大部分真實的數據集都難以觀察,因為它們有很多列變量,以及很多行數據。就像大多數的『視覺型』人類一樣,在理解信息這方面我大量依賴我的『視覺』感覺。對於我來說,查看數據基本等價於了解數據。然而,我基本上只能理解視覺上的二維或者三維數據——最好是二維。此外,在人類看到不同頁面、屏幕上的信息時,一種被稱作『變化盲視』的效應往往會干擾人類做出正確的推理分析。因此,如果一份數據集有大於兩三個變量,或者超過一頁/一屏幕數據行時,如果沒有更先進的技巧而是只漫無止境的翻頁的話,我們確實難以知道數據中發生了什么。

當然,我們有大量的方法對數據集進行可視化。接下來的強調的大部分技巧,是用於在二維空間中描述所有的數據,不僅僅是數據集中的一兩列(也就是僅同時描述一兩個變量)。這在機器學習中很重要,因為大部分機器學習算法自動提取變量之間的高階交互作用(意味着超過兩三種變量在一起形成的效果)。傳統單變量和雙變量圖表依然很重要,你還是需要使用它們,但他們往往和傳統線性模型的語境更相關;當眾多變量之間存在任意高階交互作用時,僅靠使用傳統圖表就想理解這類非線性模型,幫助就不大了。

圖1. 使用圖形符號代表操作系統和網頁瀏覽器類型。

圖形符號(Glyph)是一種用來表征數據的視覺符號。圖形符號的顏色、材質以及排列形式,可以用來表達數據不同屬性(譯者注:即變量)的值。在圖1中,彩色的圓圈被定義為表達不同種類的操作系統以及網絡瀏覽器。使用特定方式對圖形符號進行排列后,它們就可以表征數據集中的一行行數據了。

圖2. 將圖形符號進行組織,表達數據集中的多行。

關於如何使用圖形符號表示一行行數據,圖2在這里給出了一個例子。每4個符號形成的小組既可以表示特定數據集中的某一行數據,也可以表示其中的很多行的匯總數據。圖形中被突出的『Windows+IE瀏覽器』這種組合在數據集中十分常見(用藍色,茶葉色,以及綠色表示),同理『OS X+Safari瀏覽器』這種組合也不少(上面是兩個灰色點)。在數據集中,這兩種組合分別構成了兩大類數據。同時我們可以觀察到,一般來說,操作系統版本有比瀏覽器版本更舊的傾向,以及,使用Windows的用戶更傾向用新版的操作系統,使用Safari的用戶更傾向於用新版的瀏覽器,而Linux用戶以及網絡爬蟲機器人則傾向於使用舊版的操作系統和舊版的瀏覽器。代表機器人的紅點在視覺上很有沖擊力(除非您是紅綠色盲)。為那些數據離群點(Outlier)選擇鮮明的顏色和獨特的排列,在圖形符號表達法中,是標注重要數據或異常數據值的好辦法。

圖3. 來自一家大型金融公司,用於表征貸款業務的相關圖

相關圖是體現數據集中數據關系(相關性)的二維表達方法。盡管在圖3中,過多的細節實際上是可有可無的,這張圖還有一定改進空間,然而就相關圖本身而言,這一方法仍然是觀察、理解各變量相關性的有力工具。利用這種技巧,哪怕是上千個變量的數據集,也能畫在一張二維圖形上。

在圖3中,圖的結點(node)表示某個貸款數據集中的變量,圖中的連邊(edge)的權重,也就是線條的粗細,是由兩兩之間皮爾遜相關系數的絕對值來定義的。為了簡單起見,低於特定某個閾值的絕對值沒有畫出來。結點的大小,由結點向外連接的數目(即結點的度,degree)決定。結點的顏色是圖的社群聚類算法給出的。結點所在的位置是通過力導向圖生成的。相關圖使我們能夠觀察到相關變量形成的大組,識別出孤立的非相關變量,發現或者確認重要的相關性信息以引入機器學習模型。以上這一切,二維圖形足以搞定。

在如圖3所展示的數據集中,若要建立以其中某個變量為目標的有監督模型,我們希望使用變量選擇的技巧,從淺綠、藍色、紫色的大組里挑選一到兩個變量出來;我們能夠預計到,跟目標變量連線較粗的變量在模型中會較為重要,以及『CHANNEL_R』這種無連線的變量在模型中重要性較低。在圖3中也體現出了一些常識性的重要關系,比如『FIRST_TIME_HOMEBUYER_FLAG_N』(是否為首次購房者)以及『ORIGINAL_INTEREST_RATE』(原始基准利率),這種關系應該在一個可靠的模型中有所體現。

圖4. 基於著名的784維的MNIST手寫數據集制作的二維投影圖。左圖使用了主成分分析,右圖使用了堆疊式消噪自編碼機

把來自數據集中原始高維空間的行向量映射到更容易觀察的低維空間(理想情況是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集成模型后得到的一維偏相關圖

當我們只關心一兩個自變量取值發生變化,而其他自變量都處於平均水准對機器學習模型響應函數所造成的影響時,偏相關圖可以為我們展現這種關系。在我們感興趣的自變量存在較為復雜的交互作用時,用雙自變量偏相關圖進行可視化顯得尤為有效。當存在單調性約束時,偏相關圖可以用於確認響應函數對於自變量的單調性;在極端復雜的模型里,它也可以用於觀察非線性性、非單調性、二階交叉效應。如果它顯示的二元變量關系與領域知識相符,或者它隨時間遷移呈現出可預計的變化模式或者穩定性,或者它對輸入數據的輕微擾動呈現不敏感,此時我們對模型的信心都會有所提高。

偏相關圖對於數據集的不同數據行而言,是全局性的;但對數據的不同列,也就是不同自變量而言,是局部性的。僅當我們需要考察1-2個自變量和因變量的關系時我們才能使用這種圖。一種較新,不太為人所知的偏相關圖的改進版本,稱為『個體條件期望圖』(Individual conditional expectation,ICE),它使用類似偏相關圖的思想,能夠給出對數據更局部性的解釋。在多個自變量存在較強的相關關系時,ICE圖顯得尤其好用。

圖6. 一個來自殘差分析應用的截圖

『殘差』,是指數據集每一行中,因變量的測量值和預測值之差。一般來說,在擬合得不錯的模型中,殘差應該呈現出隨機分布,因為一個好的模型,會描述數據集中除了隨機誤差以外的絕大部分重要現象。繪制『殘差-預測值』這種評估手段,是一種用二維圖形檢查模型結果的好辦法,飽經時間考驗。如果在殘差圖中觀測到了很強的相關性模式,這不啻為一種死亡訊息:要么你的數據有問題,要么你的模型有問題——要么兩者都有問題!反之,如果模型產生了隨機分布的殘差,那這就是一種強烈的信號:你的模型擬合較好,可靠,可信;如果其他擬合指標的值也合理(比如,R^2,AUC等指標),那就更加如此了。

在圖6中,方框指出了殘差中具有很強線性模式的部分。這里不僅有傳統的『預測值-殘差圖』,也有特定自變量跟殘差形成的二維散點圖。把殘差跟不同自變量畫在一起,可以提供更細粒度的信息,以便於推理出到底什么原因導致了非隨機模式的產生。殘差圖對識別離群點也有幫助,圖6就指出了離群點。很多機器學習算法都使徒最小化誤差平方和,這些高殘差的點對大部分模型都會帶來較強的影響,通過人工分析判斷這些離群點的真實性可以較大的提高模型精度。

現在我們已經展現了幾種數據可視化的技巧,我們通過提幾個簡單問題,來回顧以下幾個大概念:尺度,復雜性,對數據的理解,以及模型的可信性。我們也會對后面的章節中出現的技術提出相同的問題。

數據可視化提供的可解釋性,是局部性的還是全局性的?

都有。大部分數據可視化技術,要么用於對整個數據集進行粗糙的觀測,要么用於對局部數據提供細粒度檢查。理想情況家,高級可視化工具箱能夠讓用戶容易地縮放圖形或者向下鑽取數據。如若不然,用戶還可以自己用不同尺度對數據集的多個局部進行可視化。

數據可視化能夠幫助我們理解什么復雜級別的響應函數?

數據可視化可以幫我們解釋各種復雜程度的函數。

數據可視化如何幫我們提高對數據的理解?

對大部分人而言,數據結構(聚簇,層級結構,稀疏性,離群點)以及數據關系(相關性)的可視化表達比單純瀏覽一行行數據並觀察變量的取值要容易理解。

數據可視化如何提高模型的可信程度?

對數據集中呈現的結構和相關性進行觀察,會讓它們易於理解。一個准確的機器學習模型給出的預測,應當能夠反映出數據集中所體現的結構和相關性。要明確一個模型給出的預測是否可信,對這些結構和相關性進行理解是首當其沖的。

在特定情況下,數據可視化能展現敏感性分析的結果,這種分析是另一種提高機器學習結果可信度的方法。一般來說,為了檢查你的線上應用能否通過穩定性測試或者極端情況測試,會通過使用數據可視化技術,展現數據和模型隨時間的變化,或者展現故意篡改數據后的結果。有時這一技術本身即被認為是一種敏感性分析。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM