對於在受監管行業中工作的分析師和數據科學家來說,盡管機器學習可能會帶來『能極大提高預測精度』這一好處,然而它可能不足以彌補內部文檔需求以及外部監管責任所帶來的成本。對於實踐者而言,傳統線性模型技術可能是預測模型中的唯一選擇。然而,創新和競爭的驅動力並不因為你在一個受監管的模式下工作就會止息。在銀行,保險以及類似受監管垂直領域里,數據科學家和分析師正面對着這樣一個獨一無二的難題:他們必須要找到使預測越來越精准的方案,但前提是,保證這些模型和建模過程仍然還是透明、可解釋的。
在這一節中所展現的技巧,有些使用了新型的線性模型,有些則是對傳統線性模型做出改進所得到的方法。對於線性模型進行解釋的技巧是高度精妙的,往往是有一個模型就有一種解釋,而且線性模型進行統計推斷的特性和威力是其他類型的模型難以企及的。對於那些對機器學習算法的可解釋性心存疑慮而不能使用它們的實踐者,本節中的技巧正適合他們。這些模型產生了線性、單調的響應函數(至少也是單調的!),和傳統線性模型一樣能保證結果是全局可解釋的,但通過機器學習算法獲得了預測精度的提高。
普通最小二乘(Ordinary Least Square,OLS)回歸的替代品
受懲罰的回歸(Penalized Regression)

圖7. 左圖:經過L1/LASSO懲罰的回歸系數處於縮小可行域中。右圖:經過L2/嶺回歸懲罰的回歸系數
普通最小二乘法(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. 使用廣義加性模型對多個自變量建立樣條函數
廣義加性模型能夠通過對一部分變量進行標准線性回歸,對另一部分變量進行非線性樣條函數的擬合的方式,手動調整模型,讓你在遞增的模型精度和遞減的模型可解釋性之間找到一個權衡。同時,大部分GAM能夠方便地為擬合好的樣條函數生成圖形。根據你所承受的外部監管或者內部文檔要求的不同,你也許可以在模型中直接使用這些樣條函數來讓模型預測的更准確。如果不能直接使用的話,你可以用肉眼觀測出擬合出的樣條函數,然后用更具可解釋性的多項式函數、對數函數、三角函數或者其他簡單的函數應用於預測變量之上,這樣也能讓預測精度提高。同時,你也可以靠查閱《統計學習基礎》(Elements of Statistical Learning)加深對GAM的理解。
分位數回歸

圖9. 將分位數回歸繪制為二維圖表
分位數回歸讓你能夠使用傳統可解釋的線性模型對訓練數據的分位點進行回歸。這種回歸允許你對不同的消費者市場細分或者不同賬戶投資組合行為細分,建立不同的模型,你可以使用不同的預測變量,也可以在模型中給予預測變量不同的回歸系數。對低價值客戶和高價值客戶使用完全不同的兩套預測變量和回歸系數聽上去還算合理,分位數回歸對這種做法提供了一套理論框架。
回歸的這些替代品提供的是全局性的還是局部性的可解釋性?
回歸的替代品往往能夠提供全局可解釋的函數,這些函數是線性的、單調的,根據其回歸系數的大小以及其他傳統回歸的評估量、統計量,具備可解釋性。
作為回歸的替代品,這些回歸函數的復雜程度如何?
這些回歸函數一般來說是線性的、單調的函數。不過,使用GAM可能導致相當復雜的非線性響應函數。
這些技術如何幫我們提高對模型的理解?
比較少的模型假設意味着比較少的負擔,可以不使用可能帶來麻煩的多元統計顯著性檢驗而進行變量選擇,可以處理存在多重共線性的重要變量,可以擬合非線性的數據模式,以及可以擬合數據條件分布的不同分位點(這可不止是擬合條件分布),這些特性都可能讓我們更准確的理解模型所表征的現象。
回歸函數的這些替代品如何提高模型的可信度?
基本上,這些技巧都是值得信任的線性模型,只是使用它們的方式比較新奇。如果在你的線上應用中這些技巧帶來了更精確的預測結果,那么我們就可以更加信任它們。
為機器學習模型建立基准測試模型

圖10. 考慮交叉效應的線性模型與機器學習模型比較,並繪制評估圖
機器學習算法和傳統線性模型的兩個主要區別,一個是機器學習算法在預測時引入了很多變量的高階交叉作用,並不直觀,另一個是機器學習算法會產生非線性、非多項式、非單調甚至非連續的響應函數。
如果一個機器學習算法的預測表現碾壓了傳統線性模型,我們可以對自變量和目標變量建立一磕決策樹。在決策樹相鄰層的分叉所使用的變量,一般來說會有強交叉效應。我們可以試着把這些變量的交叉效應加入到線性模型中,甚至樹的連續幾層所涉及到變量的高階交叉效應也可以加入進來。如果一個機器學習算法較大地超越了傳統線性模型,我們可以考慮把數據建模為分段線性的模型。為了要觀察機器學習學到的響應函數如何受到一個變量各種取值的影響,或者要獲得一些如何使用分段線性模型的洞見,可以使用GAM以及偏相關圖。『多變量自適應回歸樣條法』,是一種可以自動發現條件分布中存在的復雜非線性部分,並對其不同區域分別進行擬合的統計手段。你可以嘗試着直接使用多變量自適應回歸樣條法,對分段模型進行擬合。
面向機器學習模型的基准測試模型能提供全局性還是局部性的可解釋性?
如果線性性和單調性能夠得以保留,建模過程就會產生全局可解釋的線性單調響應函數。如果使用分段函數,對機器學習模型建立基准測試可以放棄全局解釋性,轉而尋求局部可解釋性。
面向機器學習模型的基准測試模型能夠生成什么復雜度的響應函數?
如果謹慎、克制的建立面向機器學習模型的基准測試模型,並加以驗證,對機器學習模型建立的基准模型可以維持像傳統線性模型那樣的線性性和單調性。然而,如果加入了太多的交叉效應,或者是在分段函數中加入了太多小段,將會導致響應函數依然極端復雜。
面向機器學習模型的基准測試模型如何提升我們對模型的理解?
這種流程把傳統、可信的模型用出了新花樣。如果使用類似GAM,偏相關圖,多元自適應回歸樣條法這些技巧進行更進一步的數據探索,對機器學習模型建立相似的基准測試模型,可以讓模型的可理解性大大提高,對數據集中出現的交叉效應以及非線性模式的理解也會加深。
面向機器學習模型的基准測試模型如何提高模型的可信度?
這種流程把傳統、可信的模型用出了新花樣。如果使用類似GAM,偏相關圖,多元自適應回歸樣條法這些技巧進行更進一步的數據探索,通過建立面向機器學習模型的基准測試模型,能夠讓這些模型更准確地表達出數據集中我們感興趣的那部分模式,從而提高我們對模型的信任程度。
在傳統分析流程中使用機器學習

圖11. 在傳統分析流程中,使用機器學習的幾種可能的方式,以圖形呈現
相較於直接使用機器學習的預測來做分析決策,我們可以通過一些機器學習的技術,對傳統分析的生命周期流程(比如數據准備加模型部署)進行一些增強,從而有潛力達到比滿足監管的線性、單調性的模型精度更高的預測。圖11簡要描述了三種可能的場合,在這些場合中,傳統分析流程靠着機器學習的加持得以增強效果:
在傳統的線性模型中,加入(加工過的)復雜自變量:
把交叉效應、多項式函數或者把變量經過簡單函數的映射加入到線性模型中算得上是標准做法了。機器學習模型可以產生各種各樣非線性、非多項式的自變量,甚至還能表征原有自變量之間存在的高階交叉效應。產生這些自變量的方法有不少選擇。例如,從自編碼機神經網絡中提取非線性特征,或者從決策樹的葉子節點中獲得最優化分箱。
使用多個帶門限的線性模型:
根據重要的數據屬性,或者根據不同的時間段對數據分成小組,再對每一個小組分別建模,可以獲得更准確的模型。對於一個企業而言,同時部署多個線性模型來處理不同的細分市場數據,或者處理不同年份的數據,這類情況也並非少見。要決定如何手動融合這些不同的模型,對於數據分析師和數據科學家而言是個瑣碎的活計。不過,如果關於歷史模型表現的數據也能收集起來的話,這個流程就可以實現自動化:建立一個門限模型,讓它來決定在遇到觀測點時,究竟使用哪個線性模型來對它進行預測。
預測線性模型的退化行為:
在大部分情況下,模型是根據靜態數據快照建立的,它們會在后來的數據快照上進行驗證。盡管這是一種被廣泛采納的實踐方式,但是當訓練集、驗證集數據所代表的真實世界中的數據模式發生變化時,這樣做會導致模型發生退化。當市場中的競爭者進入或者退出,當宏觀經濟指標發生變動,當客戶追逐的潮流發生了改變,或者其他各種因素發生時,都可能引起這種退化。如果關於市場、經濟指標和舊模型表現的數據能夠被上收上來,我們就可以基於此數據另外建立一個模型,來預估我們所部署的傳統模型大概多久需要重新訓練一次(譯者注:僅調整模型參數),或者多久需要被全新的模型(譯者注:模型結構發生了改變)所替代。就像在需要保養之前就替換掉一個昂貴的機械部件一樣,我們也可以在模型的預測效力降低之前就進行重新訓練,或者以新模型取而代之。(我之前寫過一遍文章是有關應用機器學習時導致的驗證誤差,以及如何正確地在真實世界中使用機器學習的。)
當然,還有很多在傳統模型的生命周期中引入機器學習技巧的機會。你可能現在就已經有更好的想法和實踐了!
在傳統分析流程中使用機器學習,能提供全局性還是局部性的可解釋性?
一般來說,這種方法致力於保持傳統線性模型所具有的全局可解釋性。然而,在線性模型中加入機器學習算法所生成的特征,會降低全局可解釋性。
在傳統分析流程中使用機器學習,能產生何種復雜程度的響應函數?
我們的目標仍然是繼續使用線性、單調性的響應函數,不過是以一種更加有效、更加自動化的方式來實現這一目的。
在傳統分析流程中使用機器學習,如何幫助我們更好的理解數據?
在傳統分析流程中引入機器學習模型的目的,是為了更有效、更准確地使用線性、可解釋的模型。究竟是什么驅動力導致了數據表現出非線性、時間趨勢、模式遷移?如果在線性模型中引入非線性項,使用門限模型,或者預測模型失效等等手段能夠讓你更深入地掌握這種知識的話,那么對數據的理解自然就加深了。
在傳統分析流程中使用機器學習,如何讓我們更加信任模型?
這種手段使我們可以理解的模型更加精確。如果對特征的增加確實導致了精度提升,這就暗示着數據中的關聯現象確實以一種更可靠的形式被建模。
對可解釋的模型進行小型的模型集成(ensemble)

圖12. 一個小型、堆疊的集成算法圖
很多企業如此擅長使用傳統的線性模型建模技巧,以至於他們幾乎無法再對單獨某一個模型壓榨出更高的精度。一種在不太損失可解釋性的條件下提高精度的可能辦法是,把數個已經理解透徹的模型組合起來進行預測。最終預測結果可以是對這些結果簡單取平均,手動對它們進行加權,或者用更復雜的數學方式組合起來。舉例說明,針對某種特定用途,總體表現最好的模型,可以和那些處理極端情況特別好的模型組合起來。對一名數據分析師或者數據科學家而言,他們可以通過實驗來決定為對每一個模型選取最優加權系數進行簡單集成;為了保證模型的輸入和預測仍然滿足單調性關系,可以使用偏相關圖進行確認。
如果你傾向於,或者需要使用一種更嚴格的方式來整合模型的預測,那么『超級學習器(super learners)』是一個很棒的選擇。在上世紀90年代早期,Wolpert介紹了『堆疊泛化法』(stacked generalization),超級學習器是它的某種實現。堆疊泛化法使用了一種組合模型來為集成模型中的每個小部分賦予權重。在堆砌模型時,過擬合是個很嚴重的問題。超級學習器要求使用交叉驗證,並對集成模型中各個部分的權重加上約束項,通過這種方法來控制過擬合,增加可解釋性。圖12的圖示表明,兩個決策樹模型和一個線性回歸模型分別交叉驗證,並且通過另外一個決策樹模型把它們堆疊在一起。
可解釋模型的小型集成提供了局部性還是全局性的可解釋性?
這種集成可以增加精度,但是它會降低全局可解釋性。這種集成並不影響其中的每一個小模型,但是集成在一起的模型會難以解釋。
可解釋模型的小型集成產生了何種復雜程度的響應函數?
它們會導致很復雜的響應函數。為了確保可解釋性,使用盡可能少的模型進行集成,使用模型的簡單線性組合,以及使用偏相關圖來確保線性、單調性關系依然存在。
可解釋模型的小型集成怎樣讓我們更好的理解數據?
如果這種把可解釋模型組合在一起的流程能夠讓我們對數據中出現的模式更熟悉、更敏感,對未來數據進行預測、泛化時能夠有所裨益,那么它就可以說是提高了我們對數據的理解。
可解釋模型的小型集成如何讓我們對模型更加信任?
這種集成讓我們在沒有犧牲太多可解釋的情況下,對傳統的可靠模型的精度進行一定的提升。精度提高意味着,數據中的有關模式以一種更可信、更可靠的方式被建模出來。當數個模型互為補充,做出符合人類預期或者領域知識的預測時,這種小型集成就顯得更加可靠。
單調性約束

圖13. 在神經網絡中為數據和模型加入單調性約束的示意圖
單調性約束能夠把難以解釋的非線性、非單調模型轉化成為高度可解釋的、符合監管要求的非線性單調模型。我們之所以認為單調性很重要,是基於兩個原因:
監管方希望模型滿足單調性。無論數據樣本是如何的,監管方總是希望見到模型具有單調性的表現。比如,考慮信貸評分模型中的賬戶余額。賬戶余額高,傾向於代表着賬戶所有者更值得授信,低賬戶余額則代表着有潛在的違約風險。如果某一批特定的數據包含着的大量樣本中,含有很多『儲蓄賬戶余額高但貸款違約』的個體以及『儲蓄賬戶余額低但正在還貸款』的個體,那么,基於這份訓練數據進行機器學習學出的響應函數對於賬戶余額這個變量自然會是非單調的。監管方是不會對這種預測函數感到滿意的,因為它和幾十年來沉淀下來的領域專家的意見背道而馳,因而會降低模型本身或者數據樣本的可信度。
單調性能夠令生成的『原因代碼』保持一貫性。具有一貫性的原因代碼生成一般被認為是模型可解釋性的金標准。如果在一個信貸評分模型中,單調性得以保證,為信貸申請結果分析原因不但直觀,而且能夠自動化。如果某個人的儲蓄賬戶余額低,那么他的信用水平自然也低。一旦我們能夠保證單調性,對於一次授信決定(譯者注:一般指拒絕授信)的原因解釋可以根據最大失分法(max-points-lost)可靠地進行排序。最大失分法把一個個體放在機器學習所得到的、具有單調性的響應曲面上,並度量他和曲面上最優點(也就是理想的、可能具有最高信用水平的客戶)的距離。這個人與理想客戶之間,在哪個坐標軸(也就是自變量)距離最遠,也就說明拒絕授信時,哪個負面因素最重要;而這個這個人與理想客戶之間,在哪個坐標軸(也就是自變量)距離最近,也就說明這個原因代碼產生的負面影響最不重要;根據這個人和『理想客戶』的相對位置來計算,其他自變量的影響都排在這二者之間。在使用最大失分法時,單調性可以簡單地確保我們能做出清晰的、符合邏輯的判斷:在單調性模型下,一個在貸款業務中被授信的客戶,其儲蓄賬戶余額絕不可能低於一個被拒絕貸款的客戶(譯者注:在其他條件都接近的情況下)。
在輸入數據上加約束,以及對生成的模型加約束,都可以產生單調性。圖13顯示,仔細選擇並處理非負、單調變量,把它們與單隱層神經網絡結合使用,達到了使擬合系數始終為正的約束效果。這種訓練組合產生了非線性、單調的響應函數,根據響應函數可以對『原因代碼』進行計算;通過分析模型的系數,可以檢測高階交叉效應。尋找以及制造這些非負、單調的自變量的工作十分枯燥、費時,還需要手動試錯。幸運的是,神經網絡和樹模型的響應函數往往能夠在規避枯燥的數據預處理的同時,滿足單調性的約束。使用單調性神經網絡意味着可以定制化模型結構,使得生成模型參數的取值滿足約束。對於基於樹的模型來說,使用均勻分叉往往可以強制保證單調性:使用某個自變量分的叉上,總是能保證當自變量取值往某個方向前進時,因變量在其所有子節點上的平均值遞增;自變量取值往另一個方向前進時,因變量在其所有子節點上的平均值遞減。在實踐中,為不同類型模型實現單調性約束的方法千變萬化,這是一種隨模型而改變的模型解釋性技術。
單調性約束提供了全局性還是局部性的可解釋性?
單調性約束為響應函數提供了全局的可解釋性。
單調性約束能夠導致何種復雜程度的響應函數?
它們產生了非線性且單調的響應函數。
單調性約束如何讓我們更好的理解數據?
它不僅可以確保『原因代碼』能夠自動化地生成,同時在特定場景下(比如使用單隱層神經網絡或者單棵決策樹時),變量之間重要的高階交叉效應也能夠被自動檢測出來。
單調性約束如何讓模型更可信賴?
當單調性關系、『原因代碼』以及檢測出的交叉效應能夠簡潔地符合領域專家意見或者合理預期的時候,模型的可信度會得以提升。如果數據中存在擾動時結果依然保持穩定,以及模型隨着時間產生預料之內的變化的話,通過敏感性分析也能夠提升模型的可信度。
