原文標題 | 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有助於更詳細的了解模型。