天天看點

可解釋的機器學習

可解釋的機器學習

原文标題 | Interpretable Machine Learning

作者 | Parul Pandey

譯者 | intelLigenJ(算法工程師)、鸢尾   

編輯 | 王立魚

原文連結:

https://towardsdatascience.com/interpretable-machine-learning-1dec0f2f3e6b
可解釋的機器學習

圖源Pexels的Pixabay

是時候擺脫黑盒模型,建構起對機器學習的信任了!

想象你是一個資料科學家,你想要在業餘時間根據你朋友在facebook和twitter上釋出的資訊,來預估你朋友假期要去度假的地方。如果你預測對了,你朋友一定歎為觀止,覺得你是錦鯉附身。如果你猜錯了也沒啥,隻不過有點影響身為資料科學家的口碑而已。但如果你和其他人打了賭,就賭這個朋友暑假會去哪裡,這時候預測錯誤的成本就有點高了。也就是說,當模型對錯本身不造成很大影響的時候,解釋性并不算是很重要的要素。不過當預測模型用于金融、公共事務等重大影響決策時,解釋性就顯得尤為重要了。

  可解釋的機器學習

了解(interpret)表示用可被認知(understandable)的說法去解釋(explain)或呈現(present)。在機器學習的場景中,可解釋性(interpretability)就表示模型能夠使用人類可認知的說法進行解釋和呈現。[Finale Doshi-Velez]

可解釋的機器學習

來自:可解釋的機器學習

機器學習模型被許多人稱為“黑盒”。這意味着雖然我們可以從中獲得準确的預測,但我們無法清楚地解釋或識别這些預測背後的邏輯。但是我們如何從模型中提取重要的見解呢?要記住哪些事項以及我們需要實作哪些功能或工具?這些是在提出模型可解釋性問題時會想到的重要問題。

可解釋性的重要性

總有人會問,為什麼模型給出預測結果了還不滿意,還要這麼執意于知道模型是如何做出預測的?這和模型在真實世界中産生的影響有很大關系。對于僅僅被用來做電影推薦的模型而言,其影響性相較于做藥物效果預估所使用的模型要小得多。

問題在于一個單一名額,就好比分類準确率,是不足以刻畫真實世界中的大部分問題的。(Doshi-Velez and Kim 2017)

這裡有一個可解釋機器學習的大架構。在某種程度上,我們通過從真實世界(World)中擷取一些原始資料(Data),并用這這些資料進行更深入的預測分析(Black Box Model)。而模型的解釋性方法(Interpretability)隻是在模型之上增加了一層,以便于人們(Humans)更好地了解預測過程。

可解釋的機器學習

可解釋機器學習的大架構

以下是一些由可解釋性帶來的好處:

可靠性

易于調試

啟發特征工程思路

指導後續資料搜集

指導人為決策

建立信任

  模型解釋的具體技術

實踐是檢驗真理的唯一标準。如果你想對這個領域有一個更真切的了解,你可以試試Kaggle上的機器學習解釋性crash課程。這裡頭有足夠多的理論和代碼來幫助你将模型解釋性的概念應用到真實世界的問題中去。

點選下面的連接配接來進入課程頁面。不過如果你想先對課程内容有一個簡單的了解,你可以先繼續閱讀本文。

可解釋的機器學習
https://www.kaggle.com/learn/machine-learning-explainability

洞悉模型

想要了解一個模型,我們需要洞悉如下的内容:

模型中最重要的特征

對于每一次預估決策,不同特征變量發揮的作用

每個特征在使用大量資料進行預估時發揮的作用

接下來,我們會探讨從模型中擷取上述資訊所使用的具體技術:

1. Permutation Importance

對于模型來說,哪一個特征才是最重要的?哪一個特征對于模型做決策有更大的影響?這個概念被稱為特征重要度,而Permutation Importance正是目前被廣泛采用計算特征重要度的方式。當我們的模型預測出了難以了解的結果時,我們可以通過這個名額來知道到底發生了什麼。當然,如果我們需要向别人解釋自己模型的預測時也可以用這種方法。

Permutation Importance對很多scikit-learn中涉及到的預估模型都有用。其背後的思想很簡單:随機重排或打亂樣本中的特定一列資料,其餘列保持不變。如果模型的預測準确率顯著下降,那就認為這個特征很重要。與之對應,如果重排和打亂這一列特征對模型準确率沒有影響的話,那就認為這列對應的特征沒有什麼作用。

使用方法

試想我們現在做了一個預測足球隊裡誰會獲得“足球先生”稱号的模型,并且該模型并不是幾個簡單參數就能刻畫的。當然,隻有表現最好的球員才能獲得此稱号。

Permutation Importance是在模型完成拟合之後才進行計算的。是以,我們先用RandomForestClassifier在訓練樣本上拟合出一個分類模型,我們不妨稱之為my_model。

我們使用ELI5庫可以進行Permutation Importance的計算。ELI5是一個可以對各類機器學習模型進行可視化和調試Python庫,并且針對各類模型都有統一的調用接口。ELI5中原生支援了多種機器學習架構,并且也提供了解釋黑盒模型的方式。

通過eli5庫來計算并展示特征重要度:

可解釋的機器學習

點選此處檢視完整代碼

可解釋的機器學習

模型解釋

最上面的特征是最重要的特征,最下面則是最不重要的特征。在這個case中,進球數(Goal Scored)是最重要的特征。

±後面的數字表示多次随機重排之間的差異值

有些特征重要度權重是負數,表示随機重排這些特征之後,模型的表現甚至更好了

練習

現在,我們可以用一個完整的例子來檢驗一下你對該方法的了解,你可以點選下面的連接配接來進入Kaggle的頁面:

https://www.kaggle.com/dansbecker/permutation-importance

2. Partial Dependency Plots

Partial Dependency Plots(後續用PDP或PD簡稱)會展示一個或兩個特征對于模型預測的邊際效益(J. H. Friedman 2001)。PDP可以展示一個特征是如何影響預測的。與此同時,我們可以通過繪制特征和預測目标之間的一維關系圖或二維關系圖來了解特征與目标之間的關系。

PDP也是在模型拟合完成之後開始計算的。用剛剛足球球員的例子來說,模型使用了很多特征,類似傳球數、射門次數、進球數等等。我們從中抽取一個樣本球員來進行說明,比如該球員占全隊50%的持球時長、傳球過100次、射門10次并進球1次。

我們先訓練模型,然後用模型預測出該球員獲得“足球先生”的機率。然後我們選擇一個特征,并變換球員該特征值下的特征輸入。比如我們調整剛剛抽取的那名球員,将其進球數分别設定成一次、兩次、三次,然後畫出預測機率随着進球數變化的走勢圖。

Python中使用partial dependence plot toolbox來畫PDP圖,該工具簡稱PDPbox。

可解釋的機器學習
可解釋的機器學習

Y軸表示預測相較于基準線或最左值的增加值

藍色區域表示置信區間

從上圖針對進球數的PDP分析看,随着進球數增多,球員獲得“足球先生”的機率也會逐漸增加,但增加到一定程度之後就收斂了。

我們同樣可以使用二維圖上畫出針對兩個特征的PDP分析圖:

可解釋的機器學習

練習

可解釋的機器學習
https://www.kaggle.com/dansbecker/partial-plots

3. SHAP Values

SHAP(SHapley Additive exPlanation)有助于細分預測以顯示每個特征的影響。它基于Shapley values,這是一種用于博弈論的技術,用于确定協作遊戲中每個玩家促成其成功的貢獻有多少¹。通常情況下,在準确性和可解釋性之間取得正确的權衡可能是一個困難的平衡行為,但SHAP值可以同時提供這兩者。

操作

再一次,以足球為例,我們想要預測一個球隊有一名球員赢得“最佳球員”的機率。SHAP values解釋了給定特性具有特定值的影響,并與我們在該特性具有某些基線值時所做的預測進行比較。 

SHAP values 使用Shap庫進行計算。從PyPI或conda安裝Shap 庫很簡單.

Shap值顯示給定的特性對我們的預測有多大的改變(與我們在該特性的某個基線值上進行預測相比)。假設我們想知道當球隊進了3個球而不是某個固定的底線時預測是什麼。如果我們能夠解決這個問題,我們可以對其他功能執行相同的步驟如下:  

可解釋的機器學習

點選此處檢視完整代碼

是以,預測可以分解為如下圖:

可解釋的機器學習

這裡是一個更大視圖的連結

解釋

上面的解釋顯示了推動模型輸出從基本值(我們傳遞的訓練資料集中的平均模型輸出)到模型輸出的每個特性。将預測推高的特征用紅色表示,将預測推低的特征用藍色表示。

這裡的base_value是0.4979,而我們的預測值是0.7。

得分= 2對預測增加的影響最大,

而控球率對預測減少的影響最大。  

有一個比我在這裡解釋的更深層次的SHAP values理論,你可通過下面的連結了解得更全面:

https://www.kaggle.com/dansbecker/shap-values

4. SHAP Values 的進階用法

聚合許多SHAP Values有助于更詳細的了解模型。  

SHAP 摘要圖繪制

為了了解模型中哪些特性最重要,我們可以為每個示例繪制每個特性的SHAP values 。摘要圖說明哪些特性是最重要的,以及它們對資料集的影響範圍。

可解釋的機器學習

摘要圖

關于每個點:

垂直位置顯示了它所描述的特征  

顔色顯示資料集中這一行的特征值是高還是低  

水準位置顯示該值的影響是導緻較高的預測還是較低的預測。

左上方的點是一個進球很少的球隊,預測降低了0.25。 

SHAP Dependence Contribution圖

雖然SHAP摘要圖給出了每個特性的一般概述,但是SHAP dependence圖顯示了模型輸出如何随特性值而變化。SHAP dependence contribution圖提供了與PDP類似的見解,但添加了更多的細節.

可解釋的機器學習
可解釋的機器學習
可解釋的機器學習

依賴貢獻細節

上述依賴性貢獻表明,擁有球會增加球隊讓球員赢得獎勵的機會。但如果他們隻得到一個進球,那麼這個趨勢就會逆轉而且如果他們得分那麼少,那麼裁判可能會因為得分而懲罰他們。雷鋒網(公衆号:雷鋒網)雷鋒網雷鋒網

https://www.kaggle.com/dansbecker/advanced-uses-of-shap-values

  總結

機器學習不再是黑盒了。如果我們無法向其他人解釋結果,那麼怎樣使用才是好模型。可解釋性與建立模型同樣重要。為了在人群中獲得更廣泛的認可,機器學習系統能夠為其決策提供令人滿意的解釋至關重要。

正如阿爾伯特·愛因斯坦所說:“如果你不能簡單地解釋它,你就不能很好地了解它。”

參考文獻:

可解釋的機器學習:制作黑盒模型的指南可解釋.Christoph Molnar

機器學習可解釋性微課程:Kaggle

想要繼續檢視該篇文章相關連結和參考文獻?

點選【可解釋的機器學習】即可通路!

今日資源推薦:Machine Learning Mastery 實戰機器學習 - 從入門到精通 7 本教材打包(含代碼)

Jason Brownlee 博士是機器學習圈子裡著名的實踐者。他不僅有多個人工智能相關的高等學位,自己長期專注于機器學習知識、技術思考以及實戰經驗的分享;他創辦的交流社群 Machine Learning Mastery 也是知名的機器學習學生、研究員、程式員栖息地。Jason Brownlee 自己編著了一系列偏重于實踐的機器學習教程,我們分享的這 7 本包括:

《機器學習中的線性代數基礎 - Python 中的資料數學語言》、

《Python 深度學習 - 用 Theano 和 Keras 開發深度學習模型》、

《Python LSTM 網絡 - 開發深度學習序列預測模型》、

《從零學習機器學習算法》、

《精通 Python 機器學習 - 了解你的資料,建立準确的模型,嘗試端到端項目》、

《精通 R 機器學習 - 開始,建立準确的模型,嘗試一步步打通項目》、

《精通機器學習算法 - 從零開始學習它們如何運作、如何實作》。并且帶有部分項目代碼供參考。

點選連結擷取資源:

https://ai.yanxishe.com/page/resourceDetail/634

繼續閱讀