在本文中,我們將了解SHAP(SHapley Additive exPlanations)的理論基礎,並看看SHAP值的計算方法。
博弈論與機器學習
SHAP值基於Shapley值,Shapley值是博弈論中的一個概念。但博弈論至少需要兩樣東西:遊戲和參與者。這如何應用於機器學習的可解釋性呢?假設我們有一個預測模型:
「遊戲」再現機器學習模型的結果,「玩家」是機器學習模型中包含的功能。Shapley所做的是量化每個玩家對遊戲的貢獻。SHAP所做的是量化每個特徵對機器學習模型做出的預測的貢獻。
需要強調的是,我們所謂的「遊戲」只涉及單一的觀察。一個遊戲:一個觀察。實際上,SHAP是關於預測模型的局部可解釋性的。
特徵集
舉例來說,我們將想像一個機器學習模型(假設是線性回歸,但也可以是其他任何機器學習算法),該模型可以根據一個人的年齡,性別和工作來預測該人的收入。
Shapley值基於以下思想:應考慮玩家的每個可能組合結果,以確定單個玩家的重要性。在我們的情況下,這對應於f個特徵的每種可能組合(f從0到F,F是示例3中所有可用特徵的數量)。
在數學上,這稱為「 冪集 」,可以表示為樹。
每個節點代表一個特徵組合。每條邊代表包含了一個在前一個組合中不存在的特徵。
我們從數學上知道一個冪集的勢是2的n次方,其中n是原始集合的元素數,實際上,在我們的例子中,我們有2 ^ F = 2 ^ 3 = 8個可能的特徵集合。
現在,SHAP需要為冪集中的每個不同的組合訓練一個不同的預測模型,也就是2 ^ F個模型。當然,這些模型在涉及它們的超參數和訓練數據方面是完全等價的。唯一改變的是模型中包含的一組特性。
假設我們已經在相同的訓練數據上訓練了8個線性回歸模型。我們可以採取一個新的觀察(我們稱之為x),並查看8個不同模型對同一觀測值x的預測。
在此,每個節點代表一個模型。但是邊代表什麼呢?
SHAP公式(1/2)-特徵的邊際貢獻
正如上面所看到的,兩個連接節點的預測之間的差距可以歸因於附加特徵的影響。這被稱為特徵的「邊際貢獻」。
因此,每個邊都代表要素對模型帶來的邊際貢獻。
假設我們位於節點1中,該節點是沒有特徵的模型。該模型將簡單地預測所有訓練觀測值的平均收入(5萬美元)。如果我們移到節點2,它是一個只有一個特徵(Age)的模型,則x的預測現在為40k $。這意味著知道x的年齡會使我們的預測降低10k $。
因此,Age對僅包含Age作為特徵的模型帶來的邊際貢獻為-10k $。在公式中:
當然,要獲得Age對最終模型的總體影響(即,年齡x的年齡的SHAP值),有必要考慮Age在模型(所有存在Age的模型)中的邊際貢獻。在我們的樹表示中,這意味著要考慮連接兩個節點的所有邊,使得:
上面的一個不包含Age底部的包含Age。在下圖中,這些邊以紅色突出顯示。
然後,所有這些邊際貢獻都通過加權平均值進行匯總。
其中w 1 + w 2 + w 3 + w 1 = 1。
SHAP公式(2/2)-權衡邊際貢獻
但是,我們如何確定邊的權重呢?
想法是:
1個特徵模型所有邊際貢獻的權重之和應等於2個特徵模型所有邊際貢獻的權重之和,依此類推。換句話說,同一「行」上所有權值的和應該等於任何其他「行」上所有權值的和。在我們的示例中,這意味著:w1= w2+ w3= w4。f-feature-model的所有邊際貢獻的權重應該是相等的,對於每個f,換句話說,同一「行」上的所有邊應該是相等的。在我們的示例中,這意味著:w2= w3。因此,(請記住,它們的和應為1)解是:
w = 1/3w 2 = 1/6w = 1/6w = 1/3你能猜出一般框架中確定權重的模式嗎?
說明:邊的權值是同一「行」中邊總數的倒數。或者,一個f-feature-models的邊際貢獻的權重是所有f-feature-models可能邊際貢獻的數量的倒數。
是否有計算公式呢?實際上,很簡單。
每一個f-feature模型都有f個邊際貢獻(每個特徵一個),所以計算可能的f-feature模型的數量並乘以f就足夠了。因此,問題歸結為計算可能的f-feature模型的數量,給定f,知道特徵的總數是F,這就是二項式係數的定義。
綜上所述,我們擁有所有f-feature-models 的所有邊際貢獻的數量,換句話說,每個「行」中的邊的數量為:
取它的倒數就足夠了,我們得到了f-feature-models邊際貢獻的權重。
下圖對此進行了舉例說明:
現在,我們擁有所有計算元素X 0針對Age的SHAP值:
最後
我們建立了3-feature-model來計算年齡的SHAP值。推廣到任意特徵和任意F,我們得到公式:
應用到我們的示例中,公式得出:
SHAP_Age(x) = -11.33k $SHAP_Gender(x) = -2.33k $SHAP_Job(x) = +46.66k $將它們加起來得到+ 33k $,這恰好是完整模型的輸出(83k $)與沒有特徵的虛擬模型的輸出(50k $)之差。
這是SHAP值的一個基本特徵:將給定觀測的每個特徵的SHAP值相加,得到模型預測與null模型(或其邏輯函數,如這裡所示)之間的差異。這實際上就是它們名字的由來:SHapley Additive exPlanations。
如上所述,原始的SHAP公式需要訓練2 ^ F模型。對於一個有50個6特徵的機器學習模型,這意味著要訓練1e15個模型!事實上,隨著F的增加,上面的公式很快就不適用了。這時候可以使用Slundberg 庫。