- 原文地址:Interpreting predictive models with Skater: Unboxing model opacity
- 原文做者:Pramit Choudhary
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:radialine
- 校對者:ALVINYEH、luochen1992
本文將把模型解釋做爲一個理論概念進行深刻探討,並對 Skater 進行高度歸納。html
立方體模型(來源:Pixabay)前端
查看 Pramit Choudhary 在紐約 AI 會議上的演講「深度學習中的模型評估」 2018.04.29 - 2018.05.02python
多年來,機器學習(ML)已經取得了長足的發展,它從純粹的學術環境中做爲實驗研究的存在,到被行業普遍採用成爲自動化解決實際問題的手段。可是,因爲對這些模型的內部運做方式缺少了解,這些算法一般仍被視爲魔術(參見 Ali Rahimi, NIPS'17)。所以經常須要一般驗證這種 ML 系統的運做過程,以使算法更加可信。研究人員和從業人員正在努力克服依賴可能對人類生活產生意想不到影響的預測模型所帶來的道德問題,這類預測模型有評估抵押貸款資格模型,或爲自動駕駛汽車提供動力的算法(參見 Kate Crawford, NIPS '17,「誤差帶來的麻煩」)。數據科學家 Cathy O’Neil 最近撰寫了一本書,其內容所有是可解釋性差模型的例子,這些模型提出了對潛在社會大屠殺的嚴重警告 —— 例如,犯罪判決模型中的模型偏見或在創建財務模型時由於人爲偏見使用虛假特徵的例子。android
圖 1:傳統的解釋預測模型的方法是不夠的。圖片由 Pramit Choudhary 提供。ios
在平衡模型的可解釋性和性能方面也存在折衷。從業者一般選擇線性模型而不是複雜模型,犧牲性能換取更好的可解釋性。對於那些預測錯誤後果不嚴重的用例而言,這種方式是可行的。但在某些狀況下,如信用評分或司法系統的模型必須既高度準確又易於理解。事實上,法律已經要求保證這類預測模型的公平性和透明度。git
我在 DataScience.com 做爲首席數據科學家時,咱們對幫助從業者使用模型確保安全性、無差異和透明度這份工做充滿激情。咱們認識到人類的可解釋性的需求,所以最近咱們開源了一個名爲 Skater 的 Python 框架,做爲爲數據科學領域的研究人員和應用從業人員提供模型解釋性的第一步。github
模型評估是一個複雜的問題,所以我將分兩部分進行討論。在第一部分中,我將把模型解釋做爲一個概念進行深刻探討,並對 Skater 進行高度歸納。在第二部分中,我將分享 Skater 目前支持的算法的詳細解釋以及 Skater 庫的將來功能藍圖。算法
在機器學習領域,模型解釋仍是一個新的、很大程度上主觀的、有時還存在爭議的概念。(參見 Yann LeCun 對 Ali Rahimi 談話的見解)模型解釋可以解釋和驗證預測模型決策,以實現算法決策的公平性,問責性和透明度(關於機器學習透明度定義的更詳細解釋,請參見 Adrian Weller 的文章「透明度挑戰」 )。更正式的說明是,模型解釋能夠被定義爲以人類可解釋的方式,更好地理解機器學習響應函數的決策策略以解釋自變量(輸入)和因變量(目標)之間關係的能力。編程
理想狀況下,您應該可以探究模型以瞭解其算法決策的內容,緣由和方式。後端
模型解釋是爲了更好地理解數學模型,這種理解最有可能經過更好地瞭解模型中重要的特徵來得到。理解方式能夠是使用流行的數據探索和可視化方法,如層次聚類和降維技術來實現。模型的進一步評估和驗證可使用比較模型的算法,使用模型特性評分方法 —— AUC-ROC(接收者操做特徵曲線下面積)和 MAE(平均絕對偏差)進行分類和迴歸。讓咱們快速談談其中的一些方法。
探索性數據分析可讓您更好地瞭解您的數據,從而提供構建更好預測模型所需的專業知識。在模型創建過程當中,理解模型意味着探索數據集,以即可視化並理解其「有意義」的內部結構,並以容易理解的方式提取有強影響力的直觀特徵。這種方式對於無監督學習問題可能更加有用。咱們來看看屬於模型解釋類別的一些流行數據探索技術。
在本文中,咱們將重點討論監督學習問題的模型解釋。
圖 2:使用 PCA 以三維可視化技術解釋高維 MNIST 數據,以便使用 TensorFlow 構建領域知識。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
圖 3:用 sklearn 庫可視化 MNIST 數據。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
除了數據探索技術外,還可使用模型評估技術進行簡單的模型解釋。分析師和數據科學家可能會使用模型比較和評估方法來評估模型的準確性。例如,使用交叉驗證和評估指標進行分類和迴歸,您能夠衡量預測模型的性能。您能夠經過優化超參數調整誤差與方差之間的平衡(請參閱文章「瞭解誤差 - 方差取捨」)。
圖 4:經過計算 Iris 數據集的接收者操做特徵曲線(ROC 曲線)下面積,使用 sklearn 庫解決多類問題,從而測量模型性能。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
若是預測模型的目標函數(試圖優化的損失函數)與商業指標(與真實目標緊密相關的指標)可以匹配,則使用上述提到的評估技術所計算的數據探索和點估計足以測量樣本數據集的整體表現,並且咱們知道用於訓練的數據集是固定的。 然而,在現實世界中這種狀況不多發生,即,使用點估計衡量模型性能是不夠的。例如,入侵檢測系統(IDS)是一種網絡安全應用程序,容易被做爲逃逸攻擊的目標。在逃逸攻擊中,攻擊者會使對抗輸入來擊敗安全系統(注:對抗輸入是攻擊者有意設計的,用來欺騙機器學習模型作出錯誤的預測)。這種狀況下模型的目標函數多是實際目標的弱代理。更優化的模型解釋須要識別算法中的盲點,以便經過修復易受對抗攻擊的訓練數據集來構建安全的模型(有關進一步閱讀,請參見 Moosavi-Dezfooli et al., 2016, DeepFool, Goodfellow et al., 2015,解釋和利用對抗樣本)。
此外,在靜態數據集上訓練時(不考慮新數據中的變化),模型的性能會隨着時間的推移而穩定下來。例如,現有的特徵空間可能在模型在新的環境操做以後發生了變化,或者訓練數據集中添加了新數據,引入了新的未觀察到的關聯關係。這意味着簡單地從新訓練模型不足以改進模型的預測。爲了有效地調試模型以理解算法行爲或將新的關聯關係結合到數據集中,須要更好的模型解釋方法。
也許還有一種狀況:模型的預測本質上是正確的 —— 模型的預測與預期一致 —— 但因爲數據偏倚,它沒法證實其在社會環境中的決策是合理的(例如,「僅僅由於我喜歡黑澤並不意味着我想看《忍者小英雄》「)。此時,可能須要對算法的內部工做進行更嚴格和透明的診斷,以創建更有效的模型。
即便有人不一樣意全部上述緣由做爲須要更好模型解釋這個需求的動機,傳統的模型評估形式須要對統計測試的算法或特性有一個合理的理論認識。非專家可能很難掌握有關算法的細節並經常致使數據驅動行爲失敗。人類可理解的模型解釋(HII)能夠提供有用信息,能夠輕鬆地在同行(分析師,管理人員,數據科學家,數據工程師)之間共享。
使用這種能夠根據輸入和輸出來進行解釋的方式,有助於促進更好的溝通和協做,使企業可以作出更加自信的決定(例如金融機構的風險評估/審計風險分析)。重申一下,目前咱們將模型解釋定義爲在監督學習問題上,模型解釋可以考慮預測模型的公平性(無偏性/無差異性)、問責性(產生可靠結果)和透明度(可以查詢和驗證預測性決策)。
算法的性能和可解釋性之間彷佛有一個基本的平衡。從業人員一般使用更容易解釋的模型(簡單線性,邏輯迴歸和決策樹)來解決問題,由於這些模型更容易被驗證和解釋。若是可以理解其內部原理或其決策方法,就可以信任模型。可是,當人們試圖應用這些預測模型,使用高維異構複雜數據集來解決實際問題(自動化信貸應用程序,檢測欺詐或預顧客終生價值)時,解釋模型每每在性能方面表現很差。因爲從業者試圖使用更復雜的算法來提升模型的性能(如準確性),他們經常難以在性能和可解釋性之間取得平衡。
圖 5:模型性能和可解釋性的對比。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
借用一個例子,咱們來看看平衡性能和解釋性的問題。參考上圖 5。假設有人正在創建一個模型來預測特定客戶羣體的貸款審批結果。使用線性模型(例如線性分類器,如使用對數損失函數的邏輯迴歸或迴歸的普通最小二乘法(OLS))更易於解釋,由於輸入變量與模型輸出之間的關係可使用模型的係數在量值和方向上進行量化權重。若是決策邊界單調遞增或遞減,這種思路就行得通。可是,真實世界的數據不多出現這種狀況。所以產生了模型的性能和可解釋性之間的平衡問題。
爲了捕捉自變量和模型的響應函數之間的非單調關係,一般須要使用更復雜的模型:集成、有大量決策樹的隨機森林或有多重隱藏的神經網絡層。隨着文本(使用分層相關傳播(LRP)解釋 NLP 中的非線性分類器的預測)、計算機視覺(Ning et.al,NIPS'17,相關輸入概念到卷積神經網絡決策)和基於語音的模型需求的複雜度增長,模型可解釋性需求也在增長。例如,對基於語言的模型的理解仍然是一個棘手的問題,由於類似詞語的使用存在模糊性和不肯定性。使用人類可解釋性來理解語言模型中的這種模糊性對於構建用例特定規則來理解、驗證和改進模型決策十分有用。
在 Datascience.com,咱們在許多分析用例和項目中遇到了解釋性挑戰,所以瞭解到咱們須要更好的模型解釋 —— 最好是用人類解釋性解釋(HII)做爲輸入變量和模型輸出(非專家人員也容易理解)。我記得曾經在一個項目上,咱們正在創建一個機器學習模型來總結消費者評論。咱們想要捕捉消費者情緒(正面或負面)以及每種情緒的具體緣由。受時間限制,咱們認爲值得嘗試使用現成的模型進行情緒分析。咱們研究了市場上的許多機器學習模型,但因爲信任問題,咱們沒法決定使用哪一個,而且體會到了須要用更好的方式來解釋、驗證和確認模型的必要。
然而咱們當時沒法在市場上找到一個可以始終如一地支持全局(基於完整數據集)和局部(基於單個預測)解釋的成熟的開源庫,所以咱們從零開發了一個庫:Skater(見圖 6)。
Skater 是一個 Python 庫,旨在解釋使用任意語言或框架的任意類型的預測模型的內部行爲。目前,它可以解釋監督學習算法。
圖 6:全局解釋和局部解釋的總結。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
目前支持的解釋算法是過後性質的。與之相似,雖然 Skater 提供了一種過後機制來評估和驗證基於自變量(輸入)和因變量(目標)的預測模型的內部行爲,但它不支持構建可解釋模型(例如規則集、弗裏德曼、貝葉斯規則列表)。
這種方法有助於咱們根據分析用例將解釋性應用到機器學習系統中 —— 由於過後操做可能很昂貴,而且可能不是一直須要寬泛的解釋。Skater 庫採用了面向對象和功能性編程範例,以保證提供可伸縮性和併發性的同時,保持代碼簡潔性。圖 7 顯示了這種可解釋系統的高層次簡述。
圖 7:一個使用 Skater 的可解釋的機器學習系統,使用者可以優化泛化錯誤,從而得到更好和更有可信度的預測。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
注意:如下例子的完整代碼在圖片相關的的參考連接中。
使用 Skater 能夠作到:
From
複製代碼
圖 8:不一樣類型的監督預測模型之間使用 Skater 的比較結果。圖中,模型未知特徵的重要性被用於比較有類似 F1 值的不一樣模型。根據模型的預測變量的假設、響應變量及其關係,圖中能夠看到不一樣的模型類型對特徵進行的排序的不一樣。這種比較方法使得機器學習領域的專家們或非專家們能夠評估其選定特徵的相關性並獲得一致的結果。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
# 用模型不可知的部分依賴圖進行的全局模型解釋
複製代碼
圖 9:使用乳腺癌數據集的單向和雙向交互發掘隱藏特徵的交互。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
# 使用 LIME 作模型不可知的局部解釋
複製代碼
圖 10:經過 LIME,使用線性代理模型理解單個預測的特徵相關性。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
圖 11:高亮了在內存中的模型(未運行的模型)和已部署模型(已運行的模型)的解釋需求。更好的解釋特徵的方法會帶來更好的特徵工程和特徵選擇。圖像來源:在 Juhi Sodani 和 Datascience.com 團隊的幫助下設計的圖像。
# 使用 Skater 驗證市場上的第三方 ML 模型
複製代碼
圖 12:在使用 indico.io 的預訓練過的部署模型中解釋模型。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
圖 13:在使用 algorithmia 的預訓練過的部署模型中解釋模型。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
在當前的預測建模市場環境中,爲了提升透明度而出現的可以解釋和證實算法決策策略的技術方法將發揮重要做用。尤爲對於有監管需求的行業,模型的解釋說明可以促進更復雜的算法的應用。隨着 Skater 的初始發佈,咱們正在幫助機器學習領域的專家們和非專家們,朝着提升預測模型的決策策略的公平性、問責性和透明度邁出新的一步。若是您想了解更多在實際案例中應用 Skater 模型解釋功能的例子,您能夠查看用《基於 Python 的實用機器學習》一書。
在本系列的第二部分中,咱們將深刻了解 Skater 目前支持的算法以及將來的規劃,以更好地進行模型解釋。
圖 14:總結 Skater。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。
想了解更多信息,請查閱資源和工具、例子,或 gitter channel。
我想特別感謝 Aaron Kramer、Brittany Swanson、Colin Schmidt、Dave Goodsmith、Dipanjan Sarkar、Jean-RenéGauthie、Paco Nathan、Ruslana Dalinina 以及全部不知名評論者在我撰寫本文的過程當中幫助我。
查看 Pramit Choudhary 在 2018.04.29 - 05.02 紐約人工智能會議上的演講,「深度學習中的模型評估」。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。