使用 LIME 解釋複雜的分類模型

%e8%a1%a8%e6%a0%bc123

許多領域問題除了準確的預測外,更需要了解為什麼模型會得出這樣的預測,以便辨認模型的前在風險及輔助人類做決策,因此可解釋的機器學習模型是近年機器學習發展的重要方向。在分類模型中,許多人喜歡使用變數重要性 (Variable Importance) 去解釋分類模型的判斷標準,然而對於較複雜的模型,每個變數的些微改變可能都會對預測解果有顯著影響,因此很難以變數重要性去解釋複雜的模型。有沒有什麼方法可以幫助我們解釋複雜的分類模型呢?今天跟大家介紹一個非常受歡迎的方法 – LIME (Local Interpretable Model-Agnostic Explanations) ,以「模型為什麼會將某個個體 (instance) 分類到特定類別」為核心精神,解釋複雜分類模型的判斷標準。

 

LIME 的命名由來

 

假設我們擁有一個複雜的分類模型 f,LIME 想要解決的問題是:能不能夠找到一個容易解釋的模型 g 解釋為什麼一個個體 (instance) 會被分類到 f 預測的類別。LIME 的名字完整說明了作者對於這個問題的核心精神─在每一個個體附近 (也就是 Local) 找出一個簡單的 / 可以被人類理解的 (也就是 Interpretable) 決策準則 \xi (也就是 Explanation),而且對於任何的模型 f 都能夠適用 (也就是 Model-Agnostic)。

 

LIME 的核心精神

 

以下這張圖可以很清楚的理解上面提到的精神。假設我們希望利用特徵 X_1 與 X_2 去預測一個個體是 + 還是 o,一個複雜但預測準確的模型  f 得到的決策準則如下圖紅色 / 藍色的區域。從圖中可以發現,我們很難用一個簡單的模型 \xi (也就是可解釋的 interpretable 模型) 逼近,因此我們需要利用「局部」(local) 的特性。假設我們想要解釋下圖中較粗的 + 個體為什麼會被 f 判斷為 + ,我們可以在該個體的附近找出一個線性的決策區域 (粗虛線),作為可解釋該個體的模型,值得注意的是,這個決策模型在該個體附近的預測準確度與 f 相當,但在離該個體較遠的區域預測準確度就會大幅下降,這就是所謂的局部性。

 

圖片1

 

我們用來估計簡單模型 \xi 的損失函數 \mathcal{L} 是什麼?首先,由於可解釋模型 \xi  要用來逼近複雜模型  f ,所以 \mathcal{L} 與 f, \xi 有關。此外,與 \mathbf{x}_i 越相似的個體,應該要給予可解釋模型與複雜模型間的誤差較重權重,因此會有一個計算「與 \mathbf{x}_i 相似與否」的核函數 (kernel function) \pi_{\mathbf{x}_i}。最後,我們希望解釋模型越簡單越好,因此也會加入模型的複雜度 \Omega(g),其中 g是可能被選來解釋 f 的簡單模型。總結來說,「找出可解釋模型 \xi 解釋 f(\mathbf{x}_i)」的問題可以轉變成最佳化問題:

其中,G 是簡單模型的家族,比如說:G = \{所有的線性分類模型\} ,而任何一個 g\in G 的模型都可以寫為 g(\mathbf{X}) = \omega_0 + \omega_1 X_1 + \omega_2 X_2

 

接下來的問題就是,假設給定一個個體 \mathbf{x}_i 以及預測的類別 f(\mathbf{x}_i),我們要用什麼資料訓練「局部的」可解釋模型 g 呢?答案是:利用 \mathbf{x}_i 附近的其他個體作為 \xi 的訓練集合。以上面的例子來說,我們隨機抽出綠色的個體 (設為  \mathbf{z}_1,~\cdots,~\mathbf{z}_N),利用這些個體作為模型 \xi 的訓練集合,試圖得到灰色虛線。

 

圖片2

 

舉例而言,如果我們用來比較 \mathbf{z}_1, \cdots, \mathbf{z}_N 與待解釋個體 \mathbf{x}_i 相似度的函數為高斯相似度

衡量複雜模型 f 與簡單模型 g 間差異的函數為 $\latex \ell_2$ 損失,而衡量 g 複雜度的方式是「非零的係數個數」,則 LIME 的問題可以寫為以下最佳化問題:

其中 \lambda 是調整參數 (tuning parameter)。實務上,我們除了用 \Omega (g) 來控制獲得模型的複雜度之外,更常會限制線性模型中非 0 參數的個數,以利我們進行解釋。

 

範例:運用 LIME 解釋癌症預測結果

 

Undetstanding lime 是一個很簡單易懂的 LIME 操作教學(使用 R 的 lime 套件),裡面有一個「以腫瘤切片 (biopsy) 結果進行癌症預測」的案例,得出來的解果如下圖所示。其中每一個直方圖是一個個體,其中綠色的直條代表該特徵是支持該個體被分類到指定 label,紅色的直條代表該特徵是支持該個體被分到其他 label。預先設定線性模型中非 0 的參數不能超過 4 個,以 Case 416 為例,直方圖的 Y 軸顯示了 Case 416 得出的局部解釋模型中,4 個參數非 0 的特徵, lime 套件可以讓你選擇是否要把連續變數切成不同區間(像決策樹一樣),以便解釋複雜預測模型在 Case 416 附近的行為。

 

螢幕快照 2018-02-27 下午10.04.02

 

要看多少個個體,才能完整理解?

 

雖然只看一個個體的結果,我們對於複雜模型就有基礎的認識,但若要有全面性的理解,我們可能需要看很多個個體。但是,到底要看哪些個體呢?看多少個個體才算足夠呢?在原始的 paper 中有提供一個選擇個體的演算法,稱作  Submodular pick (SP) 演算法,但由於我沒有非常喜歡這個方法,加上這個演算法也相當直覺好懂,所以我就留給大家自己去看原始的 paper 囉 XD 有關 David’s Perspective 的最新文章,都會發布在大鼻的 Facebook 粉絲專頁,如果你喜歡大鼻的文章,還請您不吝嗇地按讚或留言給我喔!

大鼻觀點:https://www.facebook.com/davidperspective/

 

About David Huang

國立臺灣大學統計碩士,喜愛運用資料科學解決複雜的商業問題,改善商業決策的品質。過去的專案經歷包括:外匯選擇權套利、股票投資組合設計、戲劇推薦系統、使用者觀看行為預測、聊天機器人機器學習開發、IoT產業文字探勘與產品分析、衛材存貨管理系統等。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *