天天看點

機器學習的可解釋性

機器學習的可解釋性

  • ​​1.可解釋性簡介​​
  • ​​2.可解釋性的重要性​​
  • ​​3.可解釋模型具體技術​​
  • ​​3.1 Permutation Importance​​
  • ​​3.2 Partial Dependency Plots​​
  • ​​3.3 SHAP​​
  • ​​3.4 SHAP Values 的進階用法​​

1.可解釋性簡介

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

機器學習的可解釋性

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

想象一下,在工作中如何跟業務的上司講解自己的模型呢,他們可是對計算機可能沒有任何背景的,如何讓上司能夠更好的了解,自己做的算法模型,有用

2.可解釋性的重要性

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

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

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

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

  • 可靠性
  • 易于調試
  • 啟發特征工程思路
  • 指導後續資料搜集
  • 指導人為決策
  • 建立信任

3.可解釋模型具體技術

想要更好的了解一個模型,需要知道以下内容:

  • 模型中最重要的特征
  • 對于每一次預估決策,不同特征變量發揮的作用
  • 每個特征在使用大量資料進行預估時發揮的作用

具體技術有:

3.1 Permutation Importance

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

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

使用方法

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

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

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

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

import eli5
from eli5.sklearn import permutationImportance

perm = PermutationImportance(my_model, random_state=1).fit(val_X, val_y)
eli5.show_weights(perm, feature_names = val_X.columns.tolist())      
機器學習的可解釋性

模型解釋

  • 最上面的特征是最重要的特征,最下面則是最不重要的特征。在這個case中,進球數(Goal Scored)是最重要的特征。
  • ±後面的數字表示多次随機重排之間的差異值
  • 有些特征重要度權重是負數,表示随機重排這些特征之後,模型的表現甚至更好了

3.2 Partial Dependency Plots

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

使用方法

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

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

from matplotlib import pyplot as plt
from pdpbox import pdp, get_dataset, info_plots

# Create the data that we will plot
pdp_goals = pdp.pdp_isolate(model=my_model, dataset=val_X, model_features=feature_names, feature='Goal Scored')

# plot it
pdp.pdp_plot(pdp_goals, 'Goal Scored')
plt.show()      
機器學習的可解釋性

模型解釋

  • Y軸表示預測相較于基準線或最左值的增加值
  • 藍色區域表示置信區間
  • 從上圖針對進球數的PDP分析看,随着進球數增多,球員獲得“足球先生”的機率也會逐漸增加,但增加到一定程度之後就收斂了。

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

機器學習的可解釋性

3.3 SHAP

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

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

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

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

sum(SHAP values for all features) = pred_for_team - pred_for_baseline_values      

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

機器學習的可解釋性

模型解釋

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

  • 這裡的base_value是0.4979,而我們的預測值是0.7。
  • 得分= 2對預測增加的影響最大,
  • 而控球率對預測減少的影響最大。

3.4 SHAP Values 的進階用法

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

  • SHAP 摘要圖繪制

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

機器學習的可解釋性

關于每個點:

  • 垂直位置顯示了它所描述的特征
  • 顔色顯示資料集中這一行的特征值是高還是低
  • 水準位置顯示該值的影響是導緻較高的預測還是較低的預測。
  • SHAP Dependence Contribution圖

繼續閱讀