譯文|LIME-分類器預測結果的解釋
先說明一下翻譯這篇文章的起因。
接觸機器學習有一段時間,但是一直沒有寫涉及這方面的文章,因為對這些模型沒有很強的把控力,沒有整體格局的把控就不敢貿然動筆。
缺失這種把控力的一個重要原因是,很多模型像一個黑箱一樣,結果難以解釋。這產生了兩個很困惑我的點
- 一是對自己得出的結果沒有信仰,即使準確率很高,我也不敢完全相信這個模型
- 二是經常無論怎麼調參數,換用哪一個模型,預測準確率都沒有得到改善,而我又沒有辦法查知是哪裡出了問題,是數據本身就只能預測到這種程度呢,還是我的模型運用的不到家
所以我非常希望能有方法探知模型是如何做出預測的,最好像決策樹那樣有一個直觀的規則,只有理解了自己的模型,在提高預測準確性上才能有的放矢,也才能將模型靈活運用在現實之中。
偶然間看到了一篇介紹LIME方法的,該方法來源於2016年的一篇論文,用於對任何分類器的預測進行解釋,該論文入選2016年KDD(數據挖掘頂級會議),已經有了python和R版本的LIME方法的開源項目。
個人目前對該方法是否有效還沒有很深入的研究,只是覺得這個方法的中文介紹實在太少,知乎上也沒有討論,希望能傳播一下這個方法,推動這方面的研究。
第一次翻譯英文文章,自知拙劣,多多包涵。
(原文出處在這裡)
文章標題:Looking beyond accuracy to improve trust in machine learning
下面是翻譯正文
傳統機器學習流程非常看重模型訓練和優化,我們常用準確率或錯誤率作為模型表現的評價指標,只要一個模型在這些評價標準下超過了某一閾值,就認為模型可以拿去發布了。但是我們常常忽略為什麼一個模型做出這樣的預測。而對模型的理解和解釋在提高模型質量、增加我們對模型的信任、增加模型透明度、減少偏差等方面都非常重要。由於複雜的機器學習模型都像黑箱一樣,太過複雜而難以理解,我們需要用近似的思想來探究模型內部是如何運作的。一個方法是LIME(Local Interpretable Model-agnostic Explanations),這是用來理解複雜機器模型做出決策的方法的一個工具。
機器學習中的準確率和錯誤率
通常來說,一個機器學習流程包括下面幾個步驟:收集數據、清洗數據、訓練模型、基於驗證或測試錯誤或其他評價指標選擇最好的模型。一般看重數字的數據科學家或統計學家喜歡比較小的錯誤率和比較高的準確率,且常常止步於此,宣稱我們獲得了一個在測試集上有99%精度的模型。模型有很好的表現,我們就會高興地把模型展示給同事、團隊領導、決策者或者其他對我們偉大模型感興趣的人。最終,我們把模型做成產品,因為它之前的良好表現,我們認為這個模型值得相信,但是我們不知道為什麼它能表現這麼好。
機器學習中,我們經常會面臨準確率和模型複雜度之間的權衡,但一個模型越複雜就越難以解釋。一個簡單的線性回歸非常好解釋,因為它只考慮了自變數與因變數之間的線性相關關係,但是也正因為如此,它無法處理更複雜的關係,模型在測試集上的預測精度也更有可能比較低。而深度神經網路處於另一個極端,因為它們能夠在多個層次進行抽象推斷,所以他們可以處理因變數與自變數之間非常複雜的關係,並且達到非常高的精度。但是這種複雜性也使模型成為黑箱,我們無法獲知所有產生模型預測結果的這些特徵之間的關係,所以我們只能用準確率、錯誤率這樣的評價標準來代替,來評估模型的可信性。
理解那些看起來很完美的模型如何做出決策不在常規的機器學習流程之中,那麼如果不是技術上必須的,我們為什麼要花費額外的時間和精力去理解模型呢?
一種提高對複雜機器學習模型理解的方法是用所謂的解釋函數(explainer function)。我認為每個分類問題的機器學習流程中都應該包括模型理解和模型解釋,下面是幾個原因
- 模型改進
- 模型可信性與透明度
- 識別和防止偏差
模型改進
理解指標特徵、分類、預測,進而理解為什麼一個機器學習模型會做出這樣的決定、什麼特徵在決定中起最重要作用,能讓我們判斷模型是否符合常理。
下面我們根據文獻考慮一個令人震驚的例子:我們有一個深度的神經網路來學習區分狼和哈士奇的圖像[1]。模型使用大量圖像訓練,並使用另外的一些圖像進行測試。90%的圖像被準確預測,這值得我們高興。但是在沒有計算解釋函數(explainer function)時,我們不知道該模型主要基於背景:狼圖像通常有一個下雪的背景,而哈士奇的圖像很少有。所以我們不知不覺地做了一個雪地探測器,如果只看準確率這樣的指標,我們就不會看到這一點。
知道了模型是如何使用特徵進行預測的,我們就能直覺地判斷我們的模型是否抓住了有意義的特徵,模型是或否能泛化到其他樣本的預測上。
模型可信度和透明度
理解機器學習模型在提高模型可信度和提供審視預測結果透明度上是非常必要的。即將於2018年3月生效的數據保護條例(General Data Protection Regulation (GDPR))也與此非常相關。即使對其中第22條是否包含演算法得到決定[2]的解釋權進行了激烈的討論,但是長久來看,讓黑箱模型來決定人們的生活是不現實的,比如貸款[3]和監獄刑法[4]。
另一個對機器學習結果可信度提出質疑的領域是藥品,模型結果會直接決定病人的生與死。機器學習模型在區分惡性腫瘤和不同類型的良性腫瘤方面是非常準確的,但是我們依然需要專家對診斷結果進行解釋,解釋為什麼一個機器學習模型將某個患者的腫瘤歸類為良性或惡性將大大幫助醫生信任和使用機器學習模型來支持他們工作。
即使在日常生活中,我們不需要面臨那麼可怕的後果,如果機器學習模型不能像預期一樣表現,仍然會帶來很嚴重的後果。長久來看,更好地理解機器學習模型可以節省大量時間、防止收入損失。如果一個模型沒有做出合理的決定,在應用這個模型並造成破壞之前,我們就可以發現這一點。
識別和防止偏差
方差和偏差是機器學習中廣泛討論的話題[5,6]。有偏差的模型經常由有偏見的事實導致,如果數據包含微妙的偏差,模型就會學習下來並認為擬合很好。一個有名的例子是,用機器學習模型來為囚犯建議句子長度,這顯然反映了司法體系在種族不平等上的內在偏差。其他例子比如用於招聘的機器學習模型,揭示了在特定職位上的性別偏差,比如男性軟體工程師和女性護士。
機器學習模型在我們生活的各個層面上都是強有力的工具,而且它也會變得越來越流行。所以作為數據科學家和決策制定者來說,理解我們訓練和發布的模型如何做出決策,讓我們可以事先預防偏差的增大以及消除他們,是我們的責任。
LIME
LIME(Local Interpretable Model-agnostic Explanations)表示對不可知模型的局部解釋,它是一個幫助我們理解和解釋複雜機器學習模型如何做出決策的一個工具。這是Marco Ribeiro, Sameer Singh 和Carlos Guestrin三個人在2016年研究出來的,可以用於解釋任何分類模型,包括隨機森林、梯度提升樹、神經網路等等。而且它可以應用於多種輸入數據之中,比如表格數據(data frame)、圖像數據或者文本數據。
LIME的核心在於三個方面
- 這裡不對模型整體提供解釋,而是局部對每一個樣本單獨進行解釋
- 即使機器學習模型訓練過程會產生一些抽象的特徵,但是解釋基於當前輸入數據的變數特徵
- 通過局部建立簡單模型進行預測來對大多數重要特徵進行解釋
這會讓我們大概了解哪些特徵對單個樣本分類貢獻最大,哪些特徵與之矛盾,以及它們如何影響預測結果。
下面的這個例子展示了如何使用LIME
建立一個關於慢性腎臟病[7]的隨機森林模型,這個模型的目的是判斷一個人是否患有慢性腎臟病。模型最後在驗證數據集上達到了99%的準確率,在測試數據集上達到95%。從技術上講,我們可以停下來宣告勝利。但是我們想要理解為什麼那些病人會被診斷為患有慢性腎臟病,而其他病人沒有。醫學專家可以評估模型學到的內容是否符合常理,是否可以相信。為了實現這一目標,我們使用LIME。
正如上面所描述的,LIME作用在單個樣本上。所以首先,我們取出一個樣本,並(permute)重複這個數據同時增加一些微小擾動,這樣就得到了一個新的數據集,數據集中包含相似的樣本,都基於取出來的那個樣本。對於這個新數據集中的每一個樣本,我們可以計算它跟取出的樣本之間的相似性,即在permutation中它被調整了多大,所有的統計距離、相似性矩陣都可以用在這裡,比如用指定寬度的指數內核將歐式距離轉化為相似度。
下一步,使用最初訓練的複雜模型,在新數據上進行預測。正因為新數據樣本間的細微差別,我們可以跟蹤那些微小擾動對預測結果的影響。
最後,我們在新數據上訓練出一個簡單模型(通常是線性模型),並使用最重要的特徵進行預測。最重要的特徵有不同的決定方法,在指定加入模型解釋中的特徵數量(通常在5到10附近)的前提下,可以
- 選擇在使用複雜模型進行預測時回歸擬合上具有最高權重的特徵
- 運用正向選擇,選擇可以提高複雜模型的預測的回歸擬合的變數
- 在複雜的機器學習模型預測的基礎上,選擇正則化的收縮率最小的lasso預測擬合的特徵
- 使用不多於我們已經選擇了的特徵的節點數量來構建決策樹
permute出來的樣本和抽取出來的原始樣本的相似性以權重形式加入簡單模型中,讓與原始樣本更相似的樣本佔據更大比重。這讓我們不能使用任何可以輸入樣本權重的簡單模型作為解釋器,比如嶺回歸。
現在我們可以解釋抽取出來的原始數據的預測結果了。使用上面描述的模型,你可以看到LIME使用8個重要特徵作用在6個樣本的輸出結果如下(註:原圖就這樣看不清,不過看下面解釋能看懂)
六張圖中每一張都表示對該樣本的預測結果的解釋。圖中題頭顯示樣本的ID、預測的類別和以多大概率進行的預測。比如左上角的樣本表示第四號樣本,以98%的概率被預測為"ckd"。在題頭下面是一個展示8個重要特徵的柱狀圖,每根柱子的長度表示該特徵的權重,正數表示該特徵對預測結果產生積極作用,負數相反。再拿左上角的樣本舉例子,柱狀圖顯示,血紅蛋白值(hemoglobin)介於0.388和0.466之間,對分類結果產生了積極作用;pcv、sc等類似產生積極作用(查看全部特徵縮寫見[這裡](Chronic_Kidney_Disease Data Set))。另一方面,該病人的年齡和白細胞計數(wbcc)與健康人不同,因此對分類結果產生消極影響。
鏈接及其他資源
[這篇文章也有德文版](Wir brauchen mehr als Genauigkeit, um Vertrauen in Maschinelles Lernen aufzubauen - codecentric AG Blog)
1.[LIME論文]("Why Should I Trust You?"):
Marco Tulio Ribeiro, Sameer Singh, and Carlos Guestrin. 2016. 「Why Should I Trust You?」: Explaining the Predictions of Any Classifier. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD 』16). ACM, New York, NY, USA, 1135-1144.
2.Edwards, Lilian and Veale, Michael, Slave to the Algorithm? Why a 『Right to an Explanation』 Is Probably Not the Remedy You Are Looking For (May 23, 2017). 16 Duke Law & Technology Review 18 (2017). Available at SSRN:
Slave to the Algorithm? Why a Right to an Explanation Is Probably Not the Remedy You Are Looking For
3.Machine Learning As A Service Market Research Report 2017 to 2022
4.MIT Sloan professor uses machine learning to design crime prediction models and https://www.nytimes.com/2017/05/01/us/politics/sent-to-prison-by-a-software-programs-secret-algorithms.html
5.https://www.bloomberg.com/news/articles/2017-12-04/researchers-combat-gender-and-racial-bias-in-artificial-intelligence
6.In 2017, society started taking AI bias seriously
7.Chronic_Kidney_Disease Data Set
- 我最近在Münster數據科學會議Münster Data Science Meetup)上進行了一次關於LIME的分享,你可以在這裡下載我的幻燈片
https://shiring.github.io/netlify_images/lime_meetup_slides_wvsh6s.pdf
- 示例分析代碼可以在這裡下載
Explaining Predictions of Machine Learning Models with LIME - Münster Data Science Meetup
- LIME的python開源項目: marcotcr/lime
- LIME的R包: thomasp85/lime
推薦閱讀:
※AI安全如何入門(上)
※1.2 如何看待與理解神經網路
※《Learning to Rank using Gradient Descent》
※機器學習-異常檢測演算法(三):Principal Component Analysis
※logistic regression