本系列文章轉載自關於如何解釋機器學習的一些方法。本篇主要介紹了幾種可視化數據及模型結果的方法。node
到如今你可能據說過種種奇聞軼事,好比機器學習算法經過利用大數據可以預測某位慈善家是否會捐款給基金會啦,預測一個在新生兒重症病房的嬰兒是否會罹患敗血症啦,或者預測一位消費者是否會點擊一個廣告啦,等等。甚至於,機器學習算法還能駕駛汽車,以及預測大選結果!… 呃,等等。它真的能嗎?我相信它確定能夠,可是,這些高調的論斷應該在數據工做者(不管這些數據是不是『大』數據)以及機器學習工做者內心留下些很是困難的問題:我可否理解個人數據?我可否理解機器學習算法給予個人模型和結果?以及,我是否信任這些結果?不幸的是,模型的高複雜度賜予了機器學習算法無與倫比的預測能力,然而也讓算法結果難以理解,甚至還可能難以採信。算法
儘管,咱們可能可以強制自變量-因變量關係函數是知足單調性約束的(譯者注:單調性的意思是,遞增地改變自變量,只會致使因變量要麼一直遞增,要麼一直遞減),機器學習算法一直有傾向產生非線性、非單調、非多項式形式、甚至非連續的函數,來擬合數據集中自變量和因變量之間的關係。(這種關係也能夠描述爲,基於自變量的不一樣取值,因變量條件分佈的變化)。這些函數能夠根據新的數據點,對因變量進行預測——好比某位慈善家是否會捐款給基金會,一個在新生兒重症病房的嬰兒是否會罹患敗血症,一位消費者是否會點擊一個廣告,諸如此類。相反地,傳統線性模型傾向於給出線性、單調、連續的函數用於估計這些關係。儘管它們不老是最準確的預測模型,線性模型的優雅、簡單使得他們預測的結果易於解釋。api
若是說,好的(數據)科學對可以理解、信任模型以及結果是一個通常性要求的話,那麼在諸如銀行、保險以及其餘受監管的垂直行業中,模型的可解釋性則是重要的法律規範。商業分析師、醫生以及行業研究員必須理解以及信任他們本身的模型,以及模型給出的結果。基於這個緣由,線性模型幾十年來都是應用預測模型中最易於上手的工具,哪怕是放棄幾個百分點的精度。今天,大量機構和我的開始在預測模型任務中擁抱機器學習算法,可是『不易解釋』仍然給機器學習算法的普遍應用帶來了一些阻礙。瀏覽器
在這篇文章中,爲了進行數據可視化和機器學習模型/結果解釋,我在最經常使用的一些準確性度量、評估圖表之外,提供了額外的幾種方法。我誠摯建議用戶根據本身的須要,對這些技巧進行一些混搭。只要有可能,在這篇文章中出現的每個技巧裏,『可解釋性』都被解構爲幾個更基本的方面:模型複雜程度,特徵尺度,理解,信任 —— 接下來我首先就來簡單對這幾點作個介紹。網絡
線性單調函數:由線性迴歸算法建立的函數多是最容易解釋的一類模型了。這些模型被稱爲『線性的、單調的』,這意味着任何給定的自變量的變化(有時也多是自變量的組合,或者自變量的函數的變化),因變量都會以常數速率向同一個方向變更,變更的強度能夠根據已知的係數表達出來。單調性也使得關於預測的直覺性推理甚至是自動化推理成爲可能。舉例來講,若是一個貸款的借方拒絕了你的信用卡申請,他們可以告訴你,根據他們的『貸款違約機率模型』推斷,你的信用分數、帳戶餘額以及信用歷史與你對信用卡帳單的還款能力呈現單調相關。當這些解釋條文被自動化生成的時候,它們每每被稱做『緣由代碼』。固然,線性單調的響應函數也可以提供變量重要性指標的計算。線性單調函數在機器學習的可解釋性中有幾種應用,在更下面的第一部分和第二部分討論中,咱們討論了利用線性、單調函數讓機器學習變得更爲可解釋的不少種辦法。數據結構
非線性單調函數:儘管大部分機器學習學到的響應函數都是非線性的,其中的一部分能夠被約束爲:對於任意給定的自變量,都能呈現單調性關係。咱們沒法給出一個單一的係數來表徵某個特定自變量的改變對響應函數帶來的影響程度,不過非線性單調函數實際上可以作到『只朝着一個方向前進』(譯者注:前進的速度有快有慢)。通常來講,非線性單調的響應函數容許同時生成『緣由代碼』以及自變量的『相對重要性指標』。非線性單調的響應函數在監管類的應用中,是具有高度可解釋性的。app
(固然,機器學習可以憑藉多元自適應迴歸樣條方法,創建『線性非單調』的響應曲線。在此咱們不強調這些函數的緣由,是由於一方面,它們的預測精度低於非線性非單調的預測模型,另外一方面,它們跟線性單調的模型比起來又缺少解釋性。)機器學習
非線性非單調函數:大部分機器學習算法創建了非線性、非單調的響應函數。給定任意一個自變量,響應函數可能以任何速率、向任何方向發生變更,所以這類函數最難以解釋。通常來講,惟一能夠標準化的解釋性指標就是變量的『相對重要性指標』。你可能須要組織一些本文將要展現的技術做爲額外手段,來解釋這些極端複雜的模型。函數
全局可解釋性:某些下文展現的技巧,不管是對機器學習算法,算法獲得的預測結果,仍是算法學習到的自變量-因變量關係而言,都可以提供全局的可解釋性(好比條件機率模型)。全局可解釋性能夠根據訓練出來的響應函數,幫助咱們理解全部的條件分佈,不過全局可解釋性通常都是『近似』的或者是『基於平均值』的。工具
局部可解釋性:局部可解釋性提升了對於小區域內條件分佈的理解,好比輸入值的聚類,聚類類別對應的預測值和分位點,以及聚類類別對應的輸入值記錄。由於小局部內的條件分佈更有多是線性的、單調的,或者數據分佈形式較好,所以局部可解釋性要比全局可解釋性更準確。
機器學習算法以及他們在訓練過程當中獲得的響應函數錯綜複雜,缺乏透明度。想要使用這些模型的人,具備最基本的情感需求:理解它們,信任它們——由於咱們要依賴它們幫忙作出重要決策。對於某些用戶來講,在教科書、論文中的技術性描述,已經爲徹底理解這些機器學習模型提供了足夠的洞見。對他們而言,交叉驗證、錯誤率指標以及評估圖表已經提供了足以採信一個模型的信息。不幸的是,對於不少應用實踐者來講,這些常見的定義與評估,並不足以提供對機器學習模型與結論的全然理解和信任。在此,咱們提到的技巧在標準化實踐的基礎上更進一步,以產生更大的理解和信任感。這些技巧要麼提升了對算法原理,以及響應函數的洞察,要麼對模型產生的結果給出了更詳盡的信息。 對於機器學習算法,算法學習到的響應函數,以及模型預測值的穩定性/相關性,使用如下的技巧可讓用戶經過觀測它們、確認它們來加強使用它們的信心。
這些技巧被組織成爲三部分:第一部分涵蓋了在訓練和解釋機器學習算法中,觀察和理解數據的方法;第二部分介紹了在模型可解釋性極端重要的場合下,整合線性模型和機器學習模型的技巧;第三部分描述了一些理解和驗證那些極端複雜的預測模型的方法。
大部分真實的數據集都難以觀察,由於它們有不少列變量,以及不少行數據。就像大多數的『視覺型』人類同樣,在理解信息這方面我大量依賴個人『視覺』感受。對於我來講,查看數據基本等價於瞭解數據。然而,我基本上只能理解視覺上的二維或者三維數據——最好是二維。此外,在人類看到不一樣頁面、屏幕上的信息時,一種被稱做『變化盲視』的效應每每會干擾人類作出正確的推理分析。所以,若是一份數據集有大於兩三個變量,或者超過一頁/一屏幕數據行時,若是沒有更先進的技巧而是隻漫無止境的翻頁的話,咱們確實難以知道數據中發生了什麼。
固然,咱們有大量的方法對數據集進行可視化。接下來的強調的大部分技巧,是用於在二維空間中描述全部的數據,不只僅是數據集中的一兩列(也就是僅同時描述一兩個變量)。這在機器學習中很重要,由於大部分機器學習算法自動提取變量之間的高階交互做用(意味着超過兩三種變量在一塊兒造成的效果)。傳統單變量和雙變量圖表依然很重要,你仍是須要使用它們,但他們每每和傳統線性模型的語境更相關;當衆多變量之間存在任意高階交互做用時,僅靠使用傳統圖表就想理解這類非線性模型,幫助就不大了。
圖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就指出了離羣點。不少機器學習算法都使徒最小化偏差平方和,這些高殘差的點對大部分模型都會帶來較強的影響,經過人工分析判斷這些離羣點的真實性能夠較大的提升模型精度。
如今咱們已經展示了幾種數據可視化的技巧,咱們經過提幾個簡單問題,來回顧如下幾個大概念:尺度,複雜性,對數據的理解,以及模型的可信性。咱們也會對後面的章節中出現的技術提出相同的問題。
都有。大部分數據可視化技術,要麼用於對整個數據集進行粗糙的觀測,要麼用於對局部數據提供細粒度檢查。理想狀況家,高級可視化工具箱可以讓用戶容易地縮放圖形或者向下鑽取數據。如若否則,用戶還能夠本身用不一樣尺度對數據集的多個局部進行可視化。
數據可視化能夠幫咱們解釋各類複雜程度的函數。
對大部分人而言,數據結構(聚簇,層級結構,稀疏性,離羣點)以及數據關係(相關性)的可視化表達比單純瀏覽一行行數據並觀察變量的取值要容易理解。
對數據集中呈現的結構和相關性進行觀察,會讓它們易於理解。一個準確的機器學習模型給出的預測,應當可以反映出數據集中所體現的結構和相關性。要明確一個模型給出的預測是否可信,對這些結構和相關性進行理解是首當其衝的。
在特定狀況下,數據可視化能展示敏感性分析的結果,這種分析是另外一種提升機器學習結果可信度的方法。通常來講,爲了檢查你的線上應用可否經過穩定性測試或者極端狀況測試,會經過使用數據可視化技術,展示數據和模型隨時間的變化,或者展示故意篡改數據後的結果。有時這一技術自己即被認爲是一種敏感性分析。