LIME:模型預測結果是否值得信任?
花了一天時間對LIME論文:http://arxiv.org/pdf/1602.04938v1.pdf 細致閱讀和代碼閱讀,實驗。大體理解了作者的設計思路。
背景:
我們在建立模型的時候,常常會思考我們的模型是不是夠穩定,會不會出現樣本偏差效應。 p>>N時候會不會過擬合? 我們檢查模型穩定。我們進行一些cross-validation來看看各項評估指標方差大不大。
但是假設樣本一開始由於採樣偏差導致樣本有偏,導致模型和實際情況有差異。這個就不太好評估了。
相同。p>>N也會有類似的問題。尤其在文本挖掘領域。
普通情況。假設特征不是非常多的話。尤其像logistic regression這種model,我們會把模型權重給打印出來看看,看看訓練出的模型結果,是否和人的經驗吻合。以下是lime
文章中提到一個文本分類的case。預測一段文本是無神論相關的。還是基督徒相關的。文中分類器預測結果這篇文本是無神論相關的,但是主要區分特征卻與人的經驗十分不吻合的,這種模型是不能讓人信服的,當我們把這幾個特征刪除後。預測結果又反向了。我們能夠通過人工構建一些由這些特征組成的文本來增加到預測實驗中,會大大減少模型性能。
LIME解釋原理:
LIME是Local Interpretable Model-Agnostic Explanations的縮寫。LIME的目的是試圖解釋模型在預測樣本上的行為。這樣的解釋是可被理解的。而且這樣的解釋是模型無關的,不須要深入到模型內部。
作者提出的方法一種局部方法,非全局的,在每一個預測樣本附近隨機採樣產生一些樣本,就像下圖所,紅色“x”是預測樣本。周邊‘*’和圓形樣本都是採樣得到的。
採樣的機制是隨機替換掉原始樣本中若幹個特征。
如文本a="我女朋友很喜歡看奇葩說",生成的樣本能夠是“我很喜歡看奇葩說”,“我女朋友看奇葩說”等等。每一個生成樣本和原始樣本都有個權重,權重的計算方式: w=exp(-d^2/theta^2), d是距離,文本中我們能夠採用cosine 距離來表征文本樣本間的距離。
以下是lime_text.py 中__data_labels_distances函數的代碼,針對是文本文本分類的解釋。以下代碼的主要作用怎樣給預測樣本生成近鄰採樣樣本。以及對應權重,採樣樣本在當前分類器的預測概率。 生成的樣本表征方式是bag of word: [0,1,0,0,1]。註意這時候採樣樣本特征不是高維的,最大長度僅僅是預測樣本的長度。
有了採樣樣本。以及採樣樣本的權重。預測概率。
有了這些東西,我們以下該幹什麽呢?記住我們的目的是要解釋我們分類器在該預測樣本中怎樣起作用的? 簡單的說是在該預測樣本,分類器都是哪些特征起到作用?我們能夠事先設定個數值K,我們僅僅看前K個起作用的特征(太多了。人無法查看)
選取K個特征後,我們就能夠在採樣的樣本。以及這K個特征上,做個加權回歸模型。回歸模型輸出的K個特征以及權重,就是分類器對預測樣本的解釋。以下是explain_instance_with_data函數代碼:
上面的方法整體能夠用paper上的描寫敘述來概括:
總結: 上面主要環繞文本分類解釋展開的,而且主要是基於文本bag of word方式。
事實上基於文本嵌入表征方式也是可行的,文本中詞的替換機制一樣。僅僅是在預測採樣樣本分類概率前須要把採樣樣本變成向量方式。 事實上能夠拓展到非常多其它領域,比方風控征信等。
預測一個行為是否有風險,當我們的模型預測到該行為是有風險的,我們須要給我們分析師。客服解釋這個行為為什麽有風險。模型識別風險行為特征是什麽。
拓展時候預測樣本的近鄰採樣機制可能要優化設計下。很多其它場景非常多特征不是離散或者二值的。而是連續的。尤其像Random Forest等樹模型事實上更適合處理連續的這樣的變量。
針對這樣的情況,怎樣處理? 採樣怎麽做? 一種簡單的方法是把連續特征進行離散化。one-hot編碼。這樣就和lime對文本分類模型的解釋中採樣機制是一樣的啦。一種就是全然和文本一樣,對特征進行置0採樣,無論是否是連續變量。
整體上來說,LIME對模型的解釋方法比較簡單,論文描寫敘述略顯復雜(本來非常easy的東西為啥寫的這麽復雜呢?),論文很多其它是從實驗角度來分析LIME方法的有效性。沒有太多理論分析。讓人感覺不是非常放心(想想這種方法有哪些坑)。畢竟實驗是依據樣本有關的。在一些復雜的場景是否有效? 還有實驗很多其它用的文本和圖像場景。其它領域是否奏效? 為什麽在預測樣本的採樣樣本中做加權回歸分析。回歸模型結果特征權重大小能代表原始模型在預測樣本的表現呢?
LIME:模型預測結果是否值得信任?