[譯] 用 Skater 解讀預測模型:開啟模型的黑箱

巧克力羅賓發表於2018-04-27

用 Skater 解讀預測模型:開啟模型的黑箱

本文將把模型解釋作為一個理論概念進行深入探討,並對 Skater 進行高度概括。

立方體模型

立方體模型(來源:Pixabay

檢視 Pramit Choudhary 在紐約 AI 會議上的演講“深度學習中的模型評估” 2018.04.29 - 2018.05.02

多年來,機器學習(ML)已經取得了長足的發展,它從純粹的學術環境中作為實驗研究的存在,到被行業廣泛採用成為自動化解決實際問題的手段。但是,由於對這些模型的內部運作方式缺乏瞭解,這些演算法通常仍被視為魔術(參見 Ali Rahimi, NIPS'17)。因此常常需要通常驗證這種 ML 系統的運作過程,以使演算法更加可信。研究人員和從業人員正在努力克服依賴可能對人類生活產生意想不到影響的預測模型所帶來的道德問題,這類預測模型有評估抵押貸款資格模型,或為自動駕駛汽車提供動力的演算法(參見 Kate Crawford, NIPS '17,“偏差帶來的麻煩”)。資料科學家 Cathy O’Neil 最近撰寫了一本書,其內容全部是可解釋性差模型的例子,這些模型提出了對潛在社會大屠殺的嚴重警告 —— 例如,犯罪判決模型中的模型偏見或在建立財務模型時因為人為偏見使用虛假特徵的例子。

傳統的解釋預測模型的方法是不夠的

圖 1:傳統的解釋預測模型的方法是不夠的。圖片由 Pramit Choudhary 提供。

在平衡模型的可解釋性和效能方面也存在折衷。從業者通常選擇線性模型而不是複雜模型,犧牲效能換取更好的可解釋性。對於那些預測錯誤後果不嚴重的用例而言,這種方式是可行的。但在某些情況下,如信用評分司法系統的模型必須既高度準確又易於理解。事實上,法律已經要求保證這類預測模型的公平性和透明度。

我在 DataScience.com 作為首席資料科學家時,我們對幫助從業者使用模型確保安全性、無差別和透明度這份工作充滿激情。我們認識到人類的可解釋性的需求,因此最近我們開源了一個名為 Skater 的 Python 框架,作為為資料科學領域的研究人員和應用從業人員提供模型解釋性的第一步。

模型評估是一個複雜的問題,因此我將分兩部分進行討論。在第一部分中,我將把模型解釋作為一個概念進行深入探討,並對 Skater 進行高度概括。在第二部分中,我將分享 Skater 目前支援的演算法的詳細解釋以及 Skater 庫的未來功能藍圖。

什麼是模型解釋?

在機器學習領域,模型解釋還是一個新的、很大程度上主觀的、有時還存在爭議的概念。(參見 Yann LeCun 對 Ali Rahimi 談話的看法)模型解釋能夠解釋和驗證預測模型決策,以實現演算法決策的公平性,問責性和透明度(關於機器學習透明度定義的更詳細解釋,請參見 Adrian Weller 的文章“透明度挑戰” )。更正式的說明是,模型解釋可以被定義為以人類可解釋的方式,更好地理解機器學習響應函式的決策策略以解釋自變數(輸入)和因變數(目標)之間關係的能力。

理想情況下,您應該能夠探究模型以瞭解其演算法決策的內容,原因和方式。

  • **模型提供了哪些資訊來避免預測錯誤?**您應該能夠探究和了解潛在變數之間的相互作用,以便及時評估和了解是什麼特徵推動了預測。這些資訊將確保模型的公平性。
  • **為什麼這個模型的有這樣的表現?**您應該能夠識別和驗證驅動模型決策的相關變數。這樣做可以讓您即使在無法得到所預測的真實資料的情況下,也相信預測模型的可靠性。這樣的模型理解將確保模型的可靠性和安全性。
  • **我們怎樣才能相信模型所做的預測?**您應該能夠驗證任何給定的資料,以向業務利益相關方證明該模型的表現確實和預期一致。這將確保模型的透明度。

現有技術捕捉模型的解釋

模型解釋是為了更好地理解數學模型,這種理解最有可能通過更好地瞭解模型中重要的特徵來獲得。理解方式可以是使用流行的資料探索和視覺化方法,如層次聚類和降維技術來實現。模型的進一步評估和驗證可以使用比較模型的演算法,使用模型特性評分方法 —— AUC-ROC(接收者操作特徵曲線下面積)和 MAE(平均絕對誤差)進行分類和迴歸。讓我們快速談談其中的一些方法。

探索性資料分析和視覺化

探索性資料分析可以讓您更好地瞭解您的資料,從而提供構建更好預測模型所需的專業知識。在模型建立過程中,理解模型意味著探索資料集,以便視覺化並理解其“有意義”的內部結構,並以容易理解的方式提取有強影響力的直觀特徵。這種方式對於無監督學習問題可能更加有用。我們來看看屬於模型解釋類別的一些流行資料探索技術。

在本文中,我們將重點討論監督學習問題的模型解釋。

解釋高維 MNIST 資料

圖 2:使用 PCA 以三維視覺化技術解釋高維 MNIST 資料,以便使用 TensorFlow 構建領域知識。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

視覺化 MNIST 資料

圖 3:用 sklearn 庫視覺化 MNIST 資料。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

B. 模型比較和效能評估

除了資料探索技術外,還可以使用模型評估技術進行簡單的模型解釋。分析師和資料科學家可能會使用模型比較和評估方法來評估模型的準確性。例如,使用交叉驗證和評估指標進行分類和迴歸,您可以衡量預測模型的效能。您可以通過優化超引數調整偏差與方差之間的平衡(請參閱文章“瞭解偏差 - 方差取捨”)。

  • **分類:**如 F1-scores,AUC-ROC,brier-score 等。如圖3,該圖顯示了 AUC-ROC 如何幫助衡量流行虹膜資料集的分類模型的模型效能。ROC AUC 是一種廣泛使用的指標,有助於在真陽性率(TPR)和假陽性率(FPR)之間進行平衡。它在處理偏斜類問題上也非常強大。如圖 3 所示,86%的 ROC AUC( 2 類)意味著訓練的分類器向正例(屬於 2 類)分配較高分數的概率與負例(不屬於 2 類)相比約為 86%。這種彙總的效能指標有助於闡明模型的整體效能。但是,如果分類錯誤,它並不能給出關於錯誤分類原因的詳細資訊 —— 為什麼屬於 0 類的例子被分類為 2 類,屬於 2 類的例子卻被分為 1 類?不能忽略的事實是,每個錯誤分類都可能造成不同程度的潛在業務影響。
  • **迴歸:**例如,r-square 值(決定係數),均方誤差等。

使用 ROC 曲線衡量模型效能

圖 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,相關輸入概念到卷積神經網路決策)和基於語音的模型需求的複雜度增加,模型可解釋性需求也在增加。例如,對基於語言的模型的理解仍然是一個棘手的問題,因為相似詞語的使用存在模糊性和不確定性。使用人類可解釋性來理解語言模型中的這種模糊性對於構建用例特定規則來理解、驗證和改進模型決策十分有用。

介紹 Skater

在 Datascience.com,我們在許多分析用例和專案中遇到了解釋性挑戰,因此瞭解到我們需要更好的模型解釋 —— 最好是用人類解釋性解釋(HII)作為輸入變數和模型輸出(非專家人員也容易理解)。我記得曾經在一個專案上,我們正在建立一個機器學習模型來總結消費者評論。我們想要捕捉消費者情緒(正面或負面)以及每種情緒的具體原因。受時間限制,我們認為值得嘗試使用現成的模型進行情緒分析。我們研究了市場上的許多機器學習模型,但由於信任問題,我們無法決定使用哪個,並且體會到了需要用更好的方式來解釋、驗證和確認模型的必要。

然而我們當時無法在市場上找到一個能夠始終如一地支援全域性(基於完整資料集)和區域性(基於單個預測)解釋的成熟的開源庫,因此我們從零開發了一個庫:Skater(見圖 6)。

Skater 是一個 Python 庫,旨在解釋使用任意語言或框架的任意型別的預測模型的內部行為。目前,它能夠解釋監督學習演算法。

全域性解釋和區域性解釋的總結

圖 6:全域性解釋和區域性解釋的總結。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

目前支援的解釋演算法是事後性質的。與之類似,雖然 Skater 提供了一種事後機制來評估和驗證基於自變數(輸入)和因變數(目標)的預測模型的內部行為,但它不支援構建可解釋模型(例如規則集弗裡德曼貝葉斯規則列表)。

這種方法有助於我們根據分析用例將解釋性應用到機器學習系統中 —— 因為事後操作可能很昂貴,並且可能不是一直需要寬泛的解釋。Skater 庫採用了物件導向和功能性程式設計範例,以保證提供可伸縮性和併發性的同時,保持程式碼簡潔性。圖 7 顯示了這種可解釋系統的高層次簡述。

使用 Skater 解釋機器學習系統

圖 7:一個使用 Skater 的可解釋的機器學習系統,使用者能夠優化泛化錯誤,從而獲得更好和更有可信度的預測。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

用 Skater 解釋模型

注意:以下例子的完整程式碼在圖片相關的的參考連結中。

使用 Skater 可以做到:

  • 評估模型對完整資料集或單個資料的預測成果: 通過利用和改進現有技術的組合,Skater 能夠做到全域性的和區域性的模型解釋。對於全域性解釋,目前 Skater 利用模型未知變數的重要性和部分依賴關係圖來判斷模型的偏差,並瞭解模型的一般行為。為了驗證模型對單一預測的決策策略是否可靠,Skater 採用了一種名為"區域性可理解的與模型無關的解釋"(LIME)的新技術,它使用區域性替代模型來評估效能(點選獲取 LIME 的更多細節)。其他演算法正在研發中。
From
複製程式碼

使用 Skater 對比模型

圖 8:不同型別的監督預測模型之間使用 Skater 的比較結果。圖中,模型未知特徵的重要性被用於比較有相似 F1 值的不同模型。根據模型的預測變數的假設、響應變數及其關係,圖中可以看到不同的模型型別對特徵進行的排序的不同。這種比較方法使得機器學習領域的專家們或非專家們可以評估其選定特徵的相關性並得到一致的結果。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

  • 識別潛在變數的互動並建立域知識: 從業者可使用 Skater 來發現隱藏的特徵互動 —— 例如,信用風險模型應該如何使用銀行客戶的信用記錄,如何通過檢查賬戶現狀或現有信用額度來批准或拒絕他申請信用卡的請求,並使用該資訊進行未來的分析。
# 用模型不可知的部分依賴圖進行的全域性模型解釋
複製程式碼

隱藏特徵之間的互動

圖 9:使用乳腺癌資料集的單向和雙向互動發掘隱藏特徵的互動。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

# 使用 LIME 做模型不可知的區域性解釋
複製程式碼

單個預測的特徵相關性

圖 10:通過 LIME,使用線性代理模型理解單個預測的特徵相關性。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

  • 衡量模型效能在部署到生產環境後如何變化: Skater 保證了模型在記憶體中和執行時模型解釋能力的一致性,幫助使用者衡量不同模型版本間的特徵互動是如何變化的(如圖 11)。若使用機器學習市場上現有預測模型(例如 algorithmia),這種形式的解釋也能幫助建立對模型的信任。例如,在圖 12 和圖 13 中,分別用 indico.io 和 algorithmia 的兩個現有情緒分析模型對 IMBD 內《紙牌屋》的影評進行分析,並使用 Skater 比較兩個模型並進行評價。兩個模型都得出了影評中的情緒是積極情緒的結果(1 為積極,0 為消極)。但是,indico.io 的模型考慮了停止詞,例如“是”,“那個”和“屬於”,這些詞在大多情況下應該被忽略。因此,儘管與 algorithmia 相比,indico.io 的模型能得出更高概率的積極情緒,但最後被採用的可能是 indico.io 的模型。

仍在記憶體中的模型和已部署模型的解釋需求

圖 11:高亮了在記憶體中的模型(未執行的模型)和已部署模型(已執行的模型)的解釋需求。更好的解釋特徵的方法會帶來更好的特徵工程和特徵選擇。影象來源:在 Juhi Sodani 和 Datascience.com 團隊的幫助下設計的影象。

# 使用 Skater 驗證市場上的第三方 ML 模型
複製程式碼

解釋現有模型

圖 12:在使用 indico.io 的預訓練過的部署模型中解釋模型。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

解釋現有模型

圖 13:在使用 algorithmia 的預訓練過的部署模型中解釋模型。圖片由 Pramit Choudhary 和 Datascience.com 團隊提供。

結論

在當前的預測建模市場環境中,為了提高透明度而出現的能夠解釋和證明演算法決策策略的技術方法將發揮重要作用。尤其對於有監管需求的行業,模型的解釋說明能夠促進更復雜的演算法的應用。隨著 Skater 的初始釋出,我們正在幫助機器學習領域的專家們和非專家們,朝著提高預測模型的決策策略的公平性、問責性和透明度邁出新的一步。如果您想了解更多在實際案例中應用 Skater 模型解釋功能的例子,您可以檢視用《基於 Python 的實用機器學習》一書。

在本系列的第二部分中,我們將深入瞭解 Skater 目前支援的演算法以及未來的規劃,以更好地進行模型解釋。

總結 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 紐約人工智慧會議上的演講,“深度學習中的模型評估”


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章