|
到現在你可能聽說過種種奇聞軼事,比如機器學習算法通過利用大數據能夠預測某位慈善家是否會捐款給基金會啦,預測一個在新生兒重癥病房的嬰兒是否會罹患敗血癥啦,或者預測一位消費者是否會點擊一個廣告啦,等等。甚至于,機器學習算法還能駕駛汽車,以及預測大選結果!… 呃,等等。它真的能嗎?我相信它肯定可以,但是,這些高調的論斷應該在數據工作者(無論這些數據是否是『大』數據)以及機器學習工作者心里留下些非常困難的問題:我能否理解我的數據?我能否理解機器學習算法給予我的模型和結果?以及,我是否信任這些結果?不幸的是,模型的高復雜度賜予了機器學習算法無與倫比的預測能力,然而也讓算法結果難以理解,甚至還可能難以采信。 盡管,我們可能能夠強制自變量-因變量關系函數是滿足單調性約束的(譯者注:單調性的意思是,遞增地改變自變量,只會導致因變量要么一直遞增,要么一直遞減),機器學習算法一直有傾向產生非線性、非單調、非多項式形式、甚至非連續的函數,來擬合數據集中自變量和因變量之間的關系。(這種關系也可以描述為,基于自變量的不同取值,因變量條件分布的變化)。這些函數可以根據新的數據點,對因變量進行預測——比如某位慈善家是否會捐款給基金會,一個在新生兒重癥病房的嬰兒是否會罹患敗血癥,一位消費者是否會點擊一個廣告,諸如此類。相反地,傳統線性模型傾向于給出線性、單調、連續的函數用于估計這些關系。盡管它們不總是最準確的預測模型,線性模型的優雅、簡單使得他們預測的結果易于解釋。 如果說,好的(數據)科學對能夠理解、信任模型以及結果是一個一般性要求的話,那么在諸如銀行、保險以及其他受監管的垂直行業中,模型的可解釋性則是重要的法律規范。商業分析師、醫生以及行業研究員必須理解以及信任他們自己的模型,以及模型給出的結果;谶@個原因,線性模型幾十年來都是應用預測模型中最易于上手的工具,哪怕是放棄幾個百分點的精度。今天,大量機構和個人開始在預測模型任務中擁抱機器學習算法,但是『不易解釋』仍然給機器學習算法的廣泛應用帶來了一些阻礙。 在這篇文章中,為了進行數據可視化和機器學習模型/結果解釋,我在最常用的一些準確性度量、評估圖表以外,提供了額外的幾種方法。我誠摯建議用戶根據自己的需要,對這些技巧進行一些混搭。只要有可能,在這篇文章中出現的每一個技巧里,『可解釋性』都被解構為幾個更基本的方面:模型復雜程度,特征尺度,理解,信任 —— 接下來我首先就來簡單對這幾點做個介紹。 待解釋的響應函數(譯者注:因變量關于自變量的函數)的復雜程度 線性單調函數:由線性回歸算法創建的函數可能是最容易解釋的一類模型了。這些模型被稱為『線性的、單調的』,這意味著任何給定的自變量的變化(有時也可能是自變量的組合,或者自變量的函數的變化),因變量都會以常數速率向同一個方向變動,變動的強度可以根據已知的系數表達出來。單調性也使得關于預測的直覺性推理甚至是自動化推理成為可能。舉例來說,如果一個貸款的借方拒絕了你的信用卡申請,他們能夠告訴你,根據他們的『貸款違約概率模型』推斷,你的信用分數、賬戶余額以及信用歷史與你對信用卡賬單的還款能力呈現單調相關。當這些解釋條文被自動化生成的時候,它們往往被稱作『原因代碼』。當然,線性單調的響應函數也能夠提供變量重要性指標的計算。線性單調函數在機器學習的可解釋性中有幾種應用,在更下面的第一部分和第二部分討論中,我們討論了利用線性、單調函數讓機器學習變得更為可解釋的很多種辦法。 非線性單調函數:盡管大部分機器學習學到的響應函數都是非線性的,其中的一部分可以被約束為:對于任意給定的自變量,都能呈現單調性關系。我們無法給出一個單一的系數來表征某個特定自變量的改變對響應函數帶來的影響程度,不過非線性單調函數實際上能夠做到『只朝著一個方向前進』(譯者注:前進的速度有快有慢)。一般來說,非線性單調的響應函數允許同時生成『原因代碼』以及自變量的『相對重要性指標』。非線性單調的響應函數在監管類的應用中,是具備高度可解釋性的。 (當然,機器學習能夠憑借多元自適應回歸樣條方法,建立『線性非單調』的響應曲線。在此我們不強調這些函數的原因,是因為一方面,它們的預測精度低于非線性非單調的預測模型,另一方面,它們跟線性單調的模型比起來又缺乏解釋性。) 非線性非單調函數:大部分機器學習算法建立了非線性、非單調的響應函數。給定任意一個自變量,響應函數可能以任何速率、向任何方向發生變動,因此這類函數最難以解釋。一般來說,可以標準化的解釋性指標就是變量的『相對重要性指標』。你可能需要組織一些本文將要展示的技術作為額外手段,來解釋這些極端復雜的模型。 可解釋性的特征尺度 全局可解釋性:某些下文展示的技巧,無論是對機器學習算法,算法得到的預測結果,還是算法學習到的自變量-因變量關系而言,都能夠提供全局的可解釋性(比如條件概率模型)。全局可解釋性可以根據訓練出來的響應函數,幫助我們理解所有的條件分布,不過全局可解釋性一般都是『近似』的或者是『基于平均值』的。 局部可解釋性:局部可解釋性提高了對于小區域內條件分布的理解,比如輸入值的聚類,聚類類別對應的預測值和分位點,以及聚類類別對應的輸入值記錄。因為小局部內的條件分布更有可能是線性的、單調的,或者數據分布形式較好,因此局部可解釋性要比全局可解釋性更準確。 理解與信任 機器學習算法以及他們在訓練過程中得到的響應函數錯綜復雜,缺少透明度。想要使用這些模型的人,具有最基本的情感需求:理解它們,信任它們——因為我們要依賴它們幫忙做出重要決策。對于某些用戶來說,在教科書、論文中的技術性描述,已經為完全理解這些機器學習模型提供了足夠的洞見。對他們而言,交叉驗證、錯誤率指標以及評估圖表已經提供了足以采信一個模型的信息。不幸的是,對于很多應用實踐者來說,這些常見的定義與評估,并不足以提供對機器學習模型與結論的全然理解和信任。在此,我們提到的技巧在標準化實踐的基礎上更進一步,以產生更大的理解和信任感。這些技巧要么提高了對算法原理,以及響應函數的洞察,要么對模型產生的結果給出了更詳盡的信息。 對于機器學習算法,算法學習到的響應函數,以及模型預測值的穩定性/相關性,使用以下的技巧可以讓用戶通過觀測它們、確認它們來增強使用它們的信心。 這些技巧被組織成為三部分:第一部分涵蓋了在訓練和解釋機器學習算法中,觀察和理解數據的方法;第二部分介紹了在模型可解釋性極端重要的場合下,整合線性模型和機器學習模型的技巧;第三部分描述了一些理解和驗證那些極端復雜的預測模型的方法。 第一部分:觀察你的數據 大部分真實的數據集都難以觀察,因為它們有很多列變量,以及很多行數據。就像大多數的『視覺型』人類一樣,在理解信息這方面我大量依賴我的『視覺』感覺。對于我來說,查看數據基本等價于了解數據。然而,我基本上只能理解視覺上的二維或者三維數據——較好是二維。此外,在人類看到不同頁面、屏幕上的信息時,一種被稱作『變化盲視』的效應往往會干擾人類做出正確的推理分析。因此,如果一份數據集有大于兩三個變量,或者超過一頁/一屏幕數據行時,如果沒有更先進的技巧而是只漫無止境的翻頁的話,我們確實難以知道數據中發生了什么。 當然,我們有大量的方法對數據集進行可視化。接下來的強調的大部分技巧,是用于在二維空間中描述所有的數據,不僅僅是數據集中的一兩列(也就是僅同時描述一兩個變量)。這在機器學習中很重要,因為大部分機器學習算法自動提取變量之間的高階交互作用(意味著超過兩三種變量在一起形成的效果)。傳統單變量和雙變量圖表依然很重要,你還是需要使用它們,但他們往往和傳統線性模型的語境更相關;當眾多變量之間存在任意高階交互作用時,僅靠使用傳統圖表就想理解這類非線性模型,幫助就不大了。 圖形符號 ![]() 圖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維投影中能夠觀測到訓練集/驗證集里存在類別、層級信息和聚簇形態的信息,我們也許可以確認一個機器學習算法是否正確的把它們識別出來。其次,相似的點會投影到相近的位置,不相似的點會投影到較遠的位置,這些都是可以加以確認的。我們考察一下用于做市場細分的分類或者聚類的模型:我們預計機器學習模型會把老年有錢客戶和年輕且不那么富裕的客戶放在不同的組里,并且它們在經過映射后,分別屬于完全分離的兩大組稠密的點簇。哪怕訓練集、驗證集中存在一些擾動,這種結果也應該是穩定的,而且對有擾動/無擾動兩組樣本分別進行映射,可以考察模型的穩定性,或者考察模型是否表現出潛在的隨時間變化的模式。 歡迎加入本站公開興趣群 商業智能與數據分析群 興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識 QQ群:81035754 |
關于我們 | 新手指南 | 企業合作 | 聯系我們 |
|
||||
關于我們 | 教育模式 | 企業會員 | 電話:4008-010-006 | |||||
講師招募 | 選課流程 | 內訓合作 | 郵箱:kefu@dataguru.cn | |||||
校園大使 | 學費返還 | 媒體合作 | 客服QQ: |
|||||
版權聲明 | 獎學金激勵 | 代理合作 | 售后QQ: |