關於如何解釋機器學習的一些方法
編者注:更多有關機器學習、預測與技術的前沿進展,請檢視在2017年7月12日-15日於北京舉辦的Strata Data大會資料科學與高階分析技術議題系列。
到現在你可能聽說過種種奇聞軼事,比如機器學習演算法通過利用大資料能夠預測某位慈善家是否會捐款給基金會啦,預測一個在新生兒重症病房的嬰兒是否會罹患敗血症啦,或者預測一位消費者是否會點選一個廣告啦,等等。甚至於,機器學習演算法還能駕駛汽車,以及預測大選結果!… 呃,等等。它真的能嗎?我相信它肯定可以,但是,這些高調的論斷應該在資料工作者(無論這些資料是否是『大』資料)以及機器學習工作者心裡留下些非常困難的問題:我能否理解我的資料?我能否理解機器學習演算法給予我的模型和結果?以及,我是否信任這些結果?不幸的是,模型的高複雜度賜予了機器學習演算法無與倫比的預測能力,然而也讓演算法結果難以理解,甚至還可能難以採信。
儘管,我們可能能夠強制自變數-因變數關係函式是滿足單調性約束的(譯者注:單調性的意思是,遞增地改變自變數,只會導致因變數要麼一直遞增,要麼一直遞減),機器學習演算法一直有傾向產生非線性、非單調、非多項式形式、甚至非連續的函式,來擬合資料集中自變數和因變數之間的關係。(這種關係也可以描述為,基於自變數的不同取值,因變數條件分佈的變化)。這些函式可以根據新的資料點,對因變數進行預測——比如某位慈善家是否會捐款給基金會,一個在新生兒重症病房的嬰兒是否會罹患敗血症,一位消費者是否會點選一個廣告,諸如此類。相反地,傳統線性模型傾向於給出線性、單調、連續的函式用於估計這些關係。儘管它們不總是最準確的預測模型,線性模型的優雅、簡單使得他們預測的結果易於解釋。
如果說,好的(資料)科學對能夠理解、信任模型以及結果是一個一般性要求的話,那麼在諸如銀行、保險以及其他受監管的垂直行業中,模型的可解釋性則是重要的法律規範。商業分析師、醫生以及行業研究員必須理解以及信任他們自己的模型,以及模型給出的結果。基於這個原因,線性模型幾十年來都是應用預測模型中最易於上手的工具,哪怕是放棄幾個百分點的精度。今天,大量機構和個人開始在預測模型任務中擁抱機器學習演算法,但是『不易解釋』仍然給機器學習演算法的廣泛應用帶來了一些阻礙。
在這篇文章中,為了進行資料視覺化和機器學習模型/結果解釋,我在最常用的一些準確性度量、評估圖表以外,提供了額外的幾種方法。我誠摯建議使用者根據自己的需要,對這些技巧進行一些混搭。只要有可能,在這篇文章中出現的每一個技巧裡,『可解釋性』都被解構為幾個更基本的方面:模型複雜程度,特徵尺度,理解,信任 —— 接下來我首先就來簡單對這幾點做個介紹。
待解釋的響應函式(譯者注:因變數關於自變數的函式)的複雜程度
線性單調函式:由線性迴歸演算法建立的函式可能是最容易解釋的一類模型了。這些模型被稱為『線性的、單調的』,這意味著任何給定的自變數的變化(有時也可能是自變數的組合,或者自變數的函式的變化),因變數都會以常數速率向同一個方向變動,變動的強度可以根據已知的係數表達出來。單調性也使得關於預測的直覺性推理甚至是自動化推理成為可能。舉例來說,如果一個貸款的借方拒絕了你的信用卡申請,他們能夠告訴你,根據他們的『貸款違約概率模型』推斷,你的信用分數、賬戶餘額以及信用歷史與你對信用卡賬單的還款能力呈現單調相關。當這些解釋條文被自動化生成的時候,它們往往被稱作『原因程式碼』。當然,線性單調的響應函式也能夠提供變數重要性指標的計算。線性單調函式在機器學習的可解釋性中有幾種應用,在更下面的第一部分和第二部分討論中,我們討論了利用線性、單調函式讓機器學習變得更為可解釋的很多種辦法。
非線性單調函式:儘管大部分機器學習學到的響應函式都是非線性的,其中的一部分可以被約束為:對於任意給定的自變數,都能呈現單調性關係。我們無法給出一個單一的係數來表徵某個特定自變數的改變對響應函式帶來的影響程度,不過非線性單調函式實際上能夠做到『只朝著一個方向前進』(譯者注:前進的速度有快有慢)。一般來說,非線性單調的響應函式允許同時生成『原因程式碼』以及自變數的『相對重要性指標』。非線性單調的響應函式在監管類的應用中,是具備高度可解釋性的。
(當然,機器學習能夠憑藉多元自適應迴歸樣條方法,建立『線性非單調』的響應曲線。在此我們不強調這些函式的原因,是因為一方面,它們的預測精度低於非線性非單調的預測模型,另一方面,它們跟線性單調的模型比起來又缺乏解釋性。)
非線性非單調函式:大部分機器學習演算法建立了非線性、非單調的響應函式。給定任意一個自變數,響應函式可能以任何速率、向任何方向發生變動,因此這類函式最難以解釋。一般來說,唯一可以標準化的解釋性指標就是變數的『相對重要性指標』。你可能需要組織一些本文將要展示的技術作為額外手段,來解釋這些極端複雜的模型。
可解釋性的特徵尺度
全域性可解釋性:某些下文展示的技巧,無論是對機器學習演算法,演算法得到的預測結果,還是演算法學習到的自變數-因變數關係而言,都能夠提供全域性的可解釋性(比如條件概率模型)。全域性可解釋性可以根據訓練出來的響應函式,幫助我們理解所有的條件分佈,不過全域性可解釋性一般都是『近似』的或者是『基於平均值』的。
區域性可解釋性:區域性可解釋性提高了對於小區域內條件分佈的理解,比如輸入值的聚類,聚類類別對應的預測值和分位點,以及聚類類別對應的輸入值記錄。因為小區域性內的條件分佈更有可能是線性的、單調的,或者資料分佈形式較好,因此區域性可解釋性要比全域性可解釋性更準確。
理解與信任
機器學習演算法以及他們在訓練過程中得到的響應函式錯綜複雜,缺少透明度。想要使用這些模型的人,具有最基本的情感需求:理解它們,信任它們——因為我們要依賴它們幫忙做出重要決策。對於某些使用者來說,在教科書、論文中的技術性描述,已經為完全理解這些機器學習模型提供了足夠的洞見。對他們而言,交叉驗證、錯誤率指標以及評估圖表已經提供了足以採信一個模型的資訊。不幸的是,對於很多應用實踐者來說,這些常見的定義與評估,並不足以提供對機器學習模型與結論的全然理解和信任。在此,我們提到的技巧在標準化實踐的基礎上更進一步,以產生更大的理解和信任感。這些技巧要麼提高了對演算法原理,以及響應函式的洞察,要麼對模型產生的結果給出了更詳盡的資訊。 對於機器學習演算法,演算法學習到的響應函式,以及模型預測值的穩定性/相關性,使用以下的技巧可以讓使用者通過觀測它們、確認它們來增強使用它們的信心。
?
這些技巧被組織成為三部分:第一部分涵蓋了在訓練和解釋機器學習演算法中,觀察和理解資料的方法;第二部分介紹了在模型可解釋性極端重要的場合下,整合線性模型和機器學習模型的技巧;第三部分描述了一些理解和驗證那些極端複雜的預測模型的方法。
第一部分:觀察你的資料
大部分真實的資料集都難以觀察,因為它們有很多列變數,以及很多行資料。就像大多數的『視覺型』人類一樣,在理解資訊這方面我大量依賴我的『視覺』感覺。對於我來說,檢視資料基本等價於瞭解資料。然而,我基本上只能理解視覺上的二維或者三維資料——最好是二維。此外,在人類看到不同頁面、螢幕上的資訊時,一種被稱作『變化盲視』的效應往往會干擾人類做出正確的推理分析。因此,如果一份資料集有大於兩三個變數,或者超過一頁/一螢幕資料行時,如果沒有更先進的技巧而是隻漫無止境的翻頁的話,我們確實難以知道資料中發生了什麼。
當然,我們有大量的方法對資料集進行視覺化。接下來的強調的大部分技巧,是用於在二維空間中描述所有的資料,不僅僅是資料集中的一兩列(也就是僅同時描述一兩個變數)。這在機器學習中很重要,因為大部分機器學習演算法自動提取變數之間的高階互動作用(意味著超過兩三種變數在一起形成的效果)。傳統單變數和雙變數圖表依然很重要,你還是需要使用它們,但他們往往和傳統線性模型的語境更相關;當眾多變數之間存在任意高階互動作用時,僅靠使用傳統圖表就想理解這類非線性模型,幫助就不大了。
圖形符號
圖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的大體思想是無關於模型的,而且可以有多重不同的實現。可以按照如下流程實現LOCO:對訓練集或驗證集中的每一行以及每一個變數(自變數)進行區域性性的重要性評分。在此之外,每一個變數被設定為缺失值、零值、平均值或者其他值域中的值,來把它在預測時起到的效果消除掉。對預測精度有最大絕對影響的自變數就是對那一行預測時的最重要變數,同時,可以對每一行中所有變數對預測的影響大小進行排序。LOCO還能為每一個變數計算它們對整個資料集精度的平均影響,給出全域性性的變數重要性度量,甚至還能給出這些全域性變數重要性度量的置信區間。
變數重要性度量適用於哪種尺度的可解釋性?
一般來說變數重要性度量方法提供的解釋性是全域性的;不過LOCO方法可以為資料集中的每一行或者新來的資料提供區域性的變數重要性度量。
變數重要性度量能夠幫我們解釋何種複雜程度的響應函式?
變數重要性度量對於非線性、非單調的響應函式而言是最有效的;不過它們可以廣泛應用於各種機器學習習得的響應函式上。
變數重要性度量如何幫我們更好的理解模型?
變數重要性度量讓我們對模型中最具影響力的變數及其影響力順序有所瞭解,因而提高了我們對模型的理解。
變數重要性度量如何讓模型更加可信?
如果變數重要性度量的結果能夠貼合人類領域知識、符合人類預期,在資料存在輕微擾動或人為干擾的情況下仍然保持穩定,在資料隨時間變化或者經由模擬得到時變動幅度可以接受的話,那麼它就能夠讓模型更加值得采信。
決策樹模型直譯器
圖20. 單棵決策樹中,對於某一樣本點的預測,以高亮的決策路徑顯示。感謝Twitter網友 @crossentropy友情提供圖片。圖片的使用已獲得允許
幾種『平均樹』的解釋方法已經提出了幾年了,不過名為『決策樹模型直譯器』的簡單開源工具最近幾個月才開始流行起來。決策樹模型直譯器把決策樹、隨機森林給出的預測進行分解,表示成為全域性平均值(bias)和各個自變數帶來的貢獻之和。決策樹模型直譯器是專門為決策樹設計的演算法。圖20顯示瞭如何將決策樹中的決策路徑分解成為全域性平均值以及各個自變數的貢獻。圖中給出了某個特定的樣本的決策路徑(決策樹模型不僅可以輸出模型中的平均值和自變數的貢獻值,也能輸出對於某個樣本而言的平均值以及自變數的貢獻值)eli5包中也有一個決策樹直譯器的實現。
決策樹直譯器適用於哪種尺度的模型可解釋性?
當決策樹直譯器給出在整棵決策樹或者整個隨機森林中各個自變數的平均貢獻時,它的解釋性就是全域性的。當它用於解釋某些特定的預測時,它的解釋性就是區域性的。
決策樹直譯器能夠解釋何種複雜程度的響應函式?
決策樹直譯器往往是用於解釋由決策樹、隨機森林模型構建的非線性、非單調響應函式的。
決策樹直譯器如何提高我們對於模型的理解?
對於決策樹以及隨機森林模型中的自變數,決策樹直譯器通過展示它們平均的貢獻,並對它們進行排序,來增進我們對模型的理解。
決策樹直譯器如何讓模型變得更加可信?
如果決策樹直譯器所展現的結果能夠貼合人類領域知識、符合人類預期,在資料存在輕微擾動或人為干擾的情況下仍然保持穩定,在資料隨時間變化或者經由模擬得到時變動幅度可以接受的話,那麼它就能夠讓模型更加值得采信。
結語
在最近幾個月裡,當我的朋友和同事們聽說我要寫這篇文章後,他們用郵件、簡訊、推特、Slack提醒我這方面新工作的速度簡直是有增無減。現在,我很可能一天要看兩個新的演算法庫、演算法或者論文,我幾乎不可能跟上這樣一種節奏,把這些東西一股腦塞進這篇綜述性的文章中。實際上,這篇文件總要有個盡頭,必須要在某個地方戛然而止。所以我們就在這裡停下吧!我相信,為了讓理解機器學習的可解釋性更上一層樓,這篇文章提供了有效的總結,把這些解釋性技巧從四個標準上進行分類:它們的尺度(區域性性的,或者全域性性的),它們所能解釋響應函式的複雜程度,它們的應用領域(跟特定模型相關,或者跟特定模型無關),以及它們如何能夠更易於理解、更容易受信任。同時,我相信,這篇文章涵蓋了主流型別的技巧,尤其是那些領域應用型的或者是商業應用型的技巧。如果我有更充裕的時間能夠無止盡的向本文添磚加瓦的話,我想要馬上給讀者展現的是兩個課題:一個課題是RuleFit(譯者注:基於規則的整合模型工具,RuleFit3是R語言中的一個包),另一個課題則是讓深度學習更具可解釋性的諸多工作,比如論文『學習深度k近鄰表達』即是其中之一。針對這兩個課題我自己當然是要深入鑽研下去的。
如此多的新進展紛至沓來,對於在這個課題(即機器學習可解釋性)上做研究的人而言,這是個令人激動的時代。我希望你們能夠在這篇文章中發現有用的資訊。因為這個領域可以把機器學習和人工智慧以更有效、更透明的方式傳達給使用者和客戶,我希望那些跟我處於統一領域的工作者們能夠像我一樣,受到這些具有光明未來的革命性技術的鼓舞。
相關資源:
Patrick Hall是H2o.ai的高階資料科學家以及產品工程師。Patrick和H2o.ai的客戶一道,從機器學習技術中挖掘商業價值。他在H2o.ai的主要工作集中於兩個應用機器學習的重要方面:模型可解釋性,以及模型部署。與此同時,Patrick也是喬治華盛頓大學決策科學系的客座教授,在這裡他講授資料探勘和機器學習的研究生課程。在加入H2o.ai之前,Patrick在SAS學院的職責是全球客戶溝通和技術研發。在使用聚類和深度學習模型進行自動化市場細分方面,他擁有多個專利。他是Cloudera全球第11位認證資料科學家。他在就讀於北卡州立大學高階分析學院之前,在伊利諾伊大學就讀於計算化學專業。
Wen Phan是H2O.ai的高階解決方案架構師。Wen和客戶、機構一道,設計系統架構、更智慧化的應用以及資料產品,以進行更好的決策,起到正面決策效果,改善他們的商務模式。本質上,Wen使用他辛苦得來的實地調研經驗、客戶反饋以及市場趨勢,去驅動產品的創新與開發。Wen擁有電子工程學的力學學士學位,以及分析與決策科學的理學碩士學位。在個人生活中,他很喜歡嘻哈音樂,外出晚餐,花時間和妻兒在一起 —— 哦對了,還有對小甜餅和奶油奶昔大快朵頤!
SriSatish Ambati是H2O的聯合創始人以及CEO,H2O的建立者。H2O讓大資料科學民主化,讓Hadoop進行數學運算,以進行更好的預測。在H2O之前,Sri和普渡大學、史丹佛大學的研究者一起,花時間研究如何把R用於並行化處理大資料上。Sri也是Platfora的聯合創始人,以及DataStax的工程總監。他曾經在一家java多核創業公司Azul Systems擔任合夥人和效能工程師,改善整個大規模生態系統和企業應用。Sri同時在Berkeley攻讀理論神經科學的學位,同時在一家記憶體索引資料庫創業公司RightOrder研發基於trie的NOSQL索引,用於儲存半結構化資料。在快速發展的空間中設想殺手級應用程式,搭建周邊團隊,把願景產品化——Sri因諳熟這些技巧而聞名。作為大資料、NoSQL和Java生態圈閉環中的一位演講常客,Sri在Twitter @srisatish上留下了他的蹤跡。
This article originally appeared in English: "Ideas on interpreting machine learning".
Strata Data Conference北京站正在報名中,點選圖片中二維碼可登入會議網站,瀏覽截止到目前為止的講師名單和已經確認的議題,早期票價優惠期截止到6月9日,儘快註冊以確保留位。
相關文章
- 關於機器學習的一些看法機器學習
- 關於Css的垂直居中的一些方法CSS
- 收藏 | Google 釋出關於機器學習工程的最佳實踐Go機器學習
- 關於排列熵的一些理解與解釋熵
- JavaScript關於陣列的一些方法整理JavaScript陣列
- 關於機器學習和AI的區別最經典的解釋機器學習AI
- 關於input的一些問題解決方法分享
- 關於String內的indexOf方法的一些疑問Index
- jQuery關於DOM操作節點一些方法jQuery
- 關於社會機器學習機器學習
- SQL SERVER 關於檔案儲存一些方法SQLServer
- 關於機器學習的領悟與反思機器學習
- 如何解決機器學習樹整合模型的解釋性問題機器學習模型
- 關於oracle中大物件處理的一些方法和例項Oracle物件
- 關於position的一些理解
- 關於table的一些操作
- 關於oracle的一些命令Oracle
- 關於MongoDB的一些PPTMongoDB
- 【機器學習】關於機器學習那些你不知道的“民間智慧”機器學習
- 關於機器學習需要了解的知識機器學習
- 關於iPhone裝置不同顯示尺寸適配的一些方法iPhone
- 關於Canvas的一些經驗Canvas
- 《關於MySQL的一些騷操作》MySql
- 關於position定位的一些理解
- 關於CodeReview的一些思考View
- 關於蘋果銷量的一些看法蘋果
- 關於面試的一些個人看法面試
- 關於angularJS的一些用法AngularJS
- 關於ASM的一些理論ASM
- 關於Redis的一些小問題Redis
- 關於 Masonry 的一些思考(下)
- 關於一些變數的使用變數
- 關於“運維”的一些思索運維
- 關於一些Vue的文章。(7)Vue
- 關於chrome有趣的一些彩蛋Chrome
- 關於pfile,spfile的一些命令
- 關於MySQL的一些小見解MySql
- 關於MySQL event的一些整理MySql