摘要:LIME 的算法需要輸入想要解釋的預測樣本和已經訓練好的複雜模型,基於表格數據,算法步驟如下:。本文介紹了 LIME 作爲一種複雜模型事後解釋器,如何擬合局部代理模型,以及如何挑選全局樣本,達到模型局部解釋和整體解釋的目的。

        <div> 
機器學習模型可解釋性方面的研究,在近兩年的科研會議上成爲一個相當熱門的話題。隨着機器學習應用越來越廣泛,大家不再僅僅滿足於模型的效果,而是希望對模型效果背後的原因有更好的理解。構建能讓用戶理解的模型正變得越來越重要,在醫療、金融和司法等高風險應用中,這一點尤其明顯。可解釋機器學習是索信達金融 AI 實驗室的重點研究方向之一,我們希望通過一系列文章介紹不同解釋模型的方法,並分享可解釋機器學習理論結合實際業務的應用和思考。

1. LIME 背景

現今的數據挖掘領域中,機器學習模型被廣泛使用。傳統的機器學習模型更關注預測效果,追求更高預測精準度和更快的訓練速度。然而,機器學習模型的“黑盒”屬性導致了其內部工作原理難以被理解,輸入與輸出之間往往存在極其複雜的函數關係。當模型應用到銀行業等金融領域時,透明度和可解釋性是機器學習模型是否值得信任的重要考覈標準。我們需要告訴業務人員如何營銷,告訴風控人員如何識別風險點,而不僅僅告訴他們預測的結果。一個預測表現接近完美、卻屬於黑盒的人工智能模型,會容易產生誤導的決策,還可能招致系統性風險,導致漏洞被攻擊,因而變得不安全可靠。例如在銀行消費者貸款領域,美國聯邦政府頒佈的平等信貸機會法(ECOA)明確要求各家銀行在拒絕每個消費者申請信用卡時,必須明確說明拒絕的理據。因此,應用複雜的機器學習模型時,我們需要構造一個“解釋器”,對模型的預測結果進行事後歸因解析,而 LIME 便是一個很好的事後解釋方法。

2. LIME 介紹

LIME 全稱 Local Interpretable Model-Agnostic Explanations,由 Marco Ribeiro, Sameer Singh 和 Carlos Guestrin 三個人在 2016 年《“Why Should I Trust You?” Explaining the Predictions of Any Classififier》這一文中提出來的,是一種事後解釋方法,即在建立模型之後所做的解釋,其名稱也很好的反應了它的特點: Local: 基於想要解釋的預測值及其附近的樣本,構建 局部 的線性模型或其他代理模型; Interpretable: LIME 做出的解釋易被人類理解。利用 局部可解釋的模型 對黑盒模型的預測結果進行解釋,構造局部樣本特徵和預測結果之間的關係; Model-Agnostic: LIME 解釋的算法與模型無關,無論是用 Random Forest、SVM 還是 XGBoost 等各種複雜的模型,得到的預測結果都能使用 LIME 方法來解釋; Explanations: LIME 是一種事後解釋方法。 LIME 可處理不同類型的輸入數據,如表格數據 (Tabular Data)、圖像數據(Image Data)或文本數據 (Text Data)。對於表格數據,如用銀行客戶行爲數據預測理財產品銷售,訓練完複雜模型後可以用 LIME 得到哪些特徵影響理財產品銷售;圖像數據,如識別圖片中的動物是否爲貓,訓練完複雜模型後可以用 LIME 得到圖片中的動物被識別爲貓是因爲哪一個或幾個像素塊;文本數據,如識別短信是否爲垃圾短信,訓練完複雜模型後可以用 LIME 得到一條信息被判斷爲垃圾短信是因爲哪一個或幾個關鍵詞。

3. LIME 原理

LIME 的算法需要輸入想要解釋的預測樣本和已經訓練好的複雜模型,基於表格數據,算法步驟如下: (1)預測樣本附近隨機採樣:對於連續型 (continuous) 特徵,LIME 在預測樣本點附近用一個標準正態分佈 N(0,1) 來產生指定個數(代碼中設置的 num_samples)的樣本;而對於類別型 (categorical) 特徵,則根據訓練集的分佈進行採樣,當新生成樣本的類別型特徵與預測樣本相同時,該類別型特徵取值爲 1,否則取值爲 0;假設,想要解釋的預測點爲 $x^{*}=(x_1,x_2,\dots,x_p)$ , 有 p 個特徵, 其中第 i 個特徵爲連續型特徵,取值爲 $x_i$ , $\sigma_{i}$ 爲 該特徵在訓練集中的標準差;生成的 N 個樣本爲 $z_k=(z_1,z_2,\dots,z_p), k=1,2,\dots ,N$, 通過標準正態分佈 $N(0,1)$ 對應生成一個隨機數 $a_{ki}$(對應第 k 個新生成樣本的第 i 個特徵),則新生成的第 k 個樣本的第 i 個特徵的取值爲 $a_{ki}*\sigma_{i}+x_{i}$。 (2)對新生成的樣本打標籤:將新生成的樣本放入已經訓練好的複雜模型中訓練,得到對應的預測結果;設訓練好的複雜模型爲 $f$,則新生成的的樣本預測結果爲 $f(z_1),f(z_2),\dots,f(z_N)$。 (3)計算新生成的樣本與想要解釋的預測點的距離並得到權重:新生成的樣本距離想要解釋的預測點越近,我們認爲這些樣本能夠更好的解釋預測點,因此需要賦予更高的權重。我們用指數核函數(exponential kernal)去定義新生成樣本的權重,設爲 $\Pi_{x^{*}}(z)=exp (\frac{-D(x^{*},z)^{2}}{\sigma^{2}})$, 此處 $D(x^{*},z)$ 爲某個新生成的樣本到 $x^{*}$ 的距離函數, $\sigma$ 則爲超參數。從公式中可以看到,距離越近, $\Pi_{x^{*}}$ 的值越大。 (4)篩選用來解釋的特徵,擬合線性模型:設想要用來解釋的特徵有 $p^{’}$ 個,則用來解釋的特徵爲 $z^{’}=(z_{(1)},z_{(2)},\dots,z_{(p^{’})})$,此處 $z_{(1)}$ 與 $z_{1}$ 不一定相等,只是用來表示從 p 個特徵中選取 $p^{’}$ 個作爲解釋;設用來解釋的線性模型爲 $g(z^{’})=\omega_{g}.z^{’}=\omega_{0}+\omega_{1}z_{(1)}+\dots \omega_{p^{’}}z_{(p^{’})}$ ,爲了求出線性模型的係數,我們用一個加權平方損失構造損失函數:$\mathcal{L}(f,h,\Pi_{x^{*}})=\sum_{k=1}^{N} \Pi_{x^{*}}(z_{k})(f(z_{k})-g(z^{’}_{k}))^2$, 找出使得損失最小的 $\omega_{g}$ ,而 $\omega_{g}.z^{’}$ 即爲我們用來解釋的特徵的線性組合;而對於 $p^{’}$ 個特徵的選擇,代碼中提供 forward selection、highest weights、lasso_path 等方法。

4. Submodular Pick

雖然 LIME 可以實現對單個預測值的事後解釋,提高了大家對黑箱模型的理解,但要看變量對模型預測值的整體影響,還需要進行全局解釋。當我們用數據集做特徵變量的全局解釋時,需要挑選具有代表性且多元化的樣本。一般的隨機挑選方法(Random pick) 得到的效果一般般,而且也不太穩定。論文中提出次模挑選(Submodular Pick)來得到具有代表性的樣本集。

4.1 什麼是 submodular?

submodular(次模)實際上是對“邊際效用遞減”這個說法的形式化。對於一個集合函數 $f: 2^{V} \rightarrow R$, 如果有一個集合 V,滿足 $V \subseteq S$, 那麼在 $V$ 中增加一個元素所增加的收益要小於等於在 $V$ 的子集中增加一個元素所增加的收益。更清晰地表示:對於函數 $f$ 而言,若 $A \subseteq B \subseteq S$, 且 $e \in S-B$,則 $f(B \cup \lbrace e \rbrace)-f(B) \leq f(A \cup \lbrace e\rbrace)-f(A)$ 在事後解釋領域裏, 我們想找到最具有代表性的樣本集,就可以借鑑次模的思想,在集合 $V$ 中不斷加入增益最大的樣本。但是如何尋找到這樣的樣本呢?在計算機領域裏,次模函數有個性質,俗稱 NP-hard,即對於一個次模函數 $f$, 如果給定一個限制條件,找出一個滿足條件的集合 $V$,使得 $f(V)$ 值最大。 貪心算法常用於解決上述的 NP-hard 問題。迭代地在解集合 $V$ 中加入增益最大且滿足條件的元素,即第 i 次迭代時解 $V_i=V_{i-1} \cup \lbrace argmax_e \Delta (e|V_{i-1})\rbrace$, 其中增益爲 $\Delta(e|V_{i-1})=f(V_{i-1} \cup \lbrace e \rbrace)-f(V_{i-1})$.

4.2 Submodular pick(SP) 的步驟

當使用 SP-LIME 時,首先得設定好 sample_size, 也就是次模挑選需要的樣本數目。假定我們從數據集中挑選 n 個樣本來做事後解釋,每個樣本是 $d^{’}$ 維的,$d^{’}$ 是用來做事後解釋的特徵變量個數。基於該樣本集 $X$ 在解釋器中得到的解釋,我們構建了 $n \times d^{’}$ 的解釋矩陣 $W$。 解釋矩陣 $W$ 中的每一個元素 $W_{ij}$, 代表第 $i$ 個樣本的第 $j$ 個可解釋成分的局部重要性。鑑於使用的是線性模型當代理模型,解釋器中對每一個樣本 $x_i$ 都會計算出對應的線性解釋 $g_i=\xi(x_i)=\alpha_0+\sum_{j=1}^{d^{’}}\alpha_j z_{ij}$, $z_{ij}$ 是經過標準化之後的 $x_{ij}$。在這裏定義 $W_{ij}=|{g_{ij}}|=|\alpha_{j}z_{ij}|$。 爲了度量解釋空間中第 j 個特徵的全局重要性,根據上文計算好的解釋矩陣 $W$,定義了重要性函數 $I_j=\sqrt{\sum_{i=1}^n W_{ij}}$, $j \in \lbrace1,2…d^{’}\rbrace$。直觀地,我們想要令選取的特徵可以解釋不同的樣本,使重要性函數可以取更高的值。 在下圖中,我們展示了一個例子。假定 $W$ 是 $5\times 5$ 的二元矩陣,即 5 個樣本,每個樣本是 5 維的,每個元素要麼取 0 要麼取 1。重要性函數 $I$ 給特徵 f2 打的分 $I_2$ 比特徵 f1 打的分 $I_1$ 要高, 所以特徵 f2 用來解釋更多的實例, 屬於重要的可解釋特徵。 爲了挑選可以覆蓋最重要特徵的樣本,解釋集一定不能冗餘,即避免選取有相似解釋性的實例。比如,第二個樣本第三個樣本的事後解釋特徵相同,所以我們只用二選一即可。 我們將非冗餘的覆蓋程度用下面的公式來計算。定義覆蓋函數 $c(x)$, 給定 $W$ 和 $I$, 計算至少出現在集合 $V$ 中的一個樣本的特徵的重要性。 $c(V,W,I)=\sum_{j=1}^{d^{’}} 1_{\exists i \in V:W_{ij} >0} I_j$ 挑選的問題由如下公式定義,找到集合 $V$, 滿足 $|V| \leq n$,可以使得 $c(x)$ 達到最大。 $Pick(W,I)=argmax_{V,|V|\leq n} c(V,W,I)$ 集合函數 $c$ 是次模函數, 上文提出貪心算法來解決挑選 n 個樣本的問題。其可以迭代地增加對函數 $c$ 有最高邊際覆蓋增益的樣本 $i$,並以常數 $1-1/e$ 的速度近似到最優。 算法展示了具體的挑選流程,我們稱之爲 submodular pick (次模挑選)。

5. 案例展示

我們以比特幣的數據集爲例,先使用 XGBoost 迴歸模型預測比特幣價格,再用 LIME 做事後解釋。用到數據集中的 15 個變量作爲特徵,響應變量爲比特幣價格。下圖展示了部分的數據集結構。 用 XGBoost 對數據集做迴歸預測,發現該模型的 $R^2$ 高達 97%。模型效果很好但是內在是黑箱模型。 因此接下來對 XGBoost 用 LIME 做事後解釋。先產生一個 LIME 的解釋器。 接着在測試集中任意挑選一個樣本,設置用 10 個特徵來開始解釋。代碼會輸出線性代理模型的截距,係數,標準化之後的樣本數據,用 LIME 得到的預測值以及 XGB 預測該樣本的比特幣價格。 上圖是在 Notebook 中展示的 LIME 解釋。左邊是用默認的 5000 個抽樣得到的樣本,通過擬合線性迴歸模型計算出來的預測值,最小是 355.03,最大是 15423.96,2295.3 則是 XGBoost 模型的預測值。中間的圖是線性模型中 10 個特徵變量對應的係數大小,positive 代表係數爲正,negative 代表係數爲負。右邊是樣本中對應 10 個特徵的取值。 下面會輸出對應的特徵變量的局部解釋圖。 接下來嘗試使用 submodular pick 來挑選 10 個代表性的樣本做全局解釋。 複製代碼
fromlimeimportsubmodular_pick
sp_obj = submodular_pick.SubmodularPick(explainer, train, reg.predict, sample_size=10, num_features=10, num_exps_desired=1)
[exp.as_pyplot_figure()forexpinsp_obj.sp_explanations]
從該全局解釋圖中可以看到,排名前三的特徵變量 BlockSizeTot, TradeFee,TradeVol 對 XGBoost 預測結果有正向的影響,TransValue 則是對 XGBoost 產生了相對大的負向的影響。排名靠後的特徵變量影響相對較小。

6. 結語

本文介紹了 LIME 作爲一種複雜模型事後解釋器,如何擬合局部代理模型,以及如何挑選全局樣本,達到模型局部解釋和整體解釋的目的。更詳細的介紹參考《“Why Should I Trust You?” Explaining the Predictions of Any Classififier》原文。爲了演示 LIME 方法的效果,我們以一個比特幣實際數據爲例,對現下流行的 XGBoost 模型進行了 LIME 局部解釋和全局解釋。

7. 參考文檔

[1] Túlio Ribeiro, M., Singh, S., Guestrin, C.: “Why Should I Trust You?”: explaining the predictions of any classifier. In: ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (2016) [2] https://github.com/marcotcr/lime

相關文章