解釋產生特定NBA球員預測薪水的特征(github)
我最喜歡的庫之一是SHAP,它是解釋機器學習模型生成的輸出不可或缺的工具。 SHAP是幾種不同的當前解釋模型的頂點,并且通過為每個特征分配重要性值來表示用于解釋模型預測的統一框架。反過來,可以繪制這些重要性值,并用于產生任何人都可以輕易解釋的漂亮可視化。在您閱讀時,您會注意到主題是可解釋性,以及為什么它在機器學習中如此迫切。
在本文中,我提供了一個外行人對其作者Scott Lundberg和Su-In Lee的原始論文的評論
目的
線性模型易于解釋。 考慮用于預測NBA球員薪水的經典線性回歸模型(假設薪水完全基于每場比賽得分):
我們簡單地將其解釋為β1,即X對Y單位增加的平均影響。換句話說,如果凱文杜蘭特得到27.5分,那么我們所要做的就是乘以β1來預測他的薪水。 使用線性模型,很明顯模型如何達到預測。
但是神經網絡呢,那里有重復的矩陣乘法和激活函數? 我們如何在輸出的上下文中解釋這一點?
隨著我們轉向更復雜的模型,具有更高的準確性,我們發現越來越難以解釋這些模型如何產生預測。 由于以下幾個原因,這是一個岌岌可危的困境:
·模型偏差是一個重要問題,因為它們最終可能會對決策產生不公平的影響。 一些數據存在內在偏差,特別是在涉及種族和性別偏見時,這會對模型的預測產生負面影響。 由于沒有好的方法來解釋模型如何做出決定,因此很難確定這些固有的偏見。
·模型改進也很困難如果您不知道要改進什么。當然,您可以調整超參數,直到獲得最佳分數,但您擁有的數據類型更為重要。了解模型中不同特征的價值可為數據收集提供有價值的反饋,告知我們哪些類型的數據最重要.
·用戶信任對于采用人工智能系統非常重要。 在人工智能治理中心最近的一份報告中,作者報告說:"有更多的美國人認為高級機器智能會比那些認為對人類有益的人有害。"復雜模型的可解釋性有助于 更好的理解,建立模型如何做出決策的直覺,并最終產生用戶信任。
添加功能歸因方法
為了解釋更復雜的模型,我們需要一個更接近原始模型的簡單解釋模型。
假設我們有一個形式為f(x)的復雜模型,那么解釋模型g(z')≈f(x)。
稍微分解g(z'),我們將一些效應φ?歸因于每個特征z'。 通過總結所有這些效果及其特征,我們可以近似原始模型的輸出。 這被定義為附加特征歸屬方法。 事實證明,其他當前的解釋模型遵循相同的解釋模型,允許它們全部統一到一個單一的框架中。
附加特征歸屬方法的屬性
1.局部精度:最重要的屬性之一是解釋模型能夠匹配原始模型的輸出。
2.缺失:如果缺少特征,則該特征沒有效果,或φ?= 0。
3.一致性:如果模型發生變化,使得特征貢獻增加或保持不變,那么特征屬性或φ?不應減少。
這導致我們SHAP值,它統一了以前的方法,并展示了上述屬性。
SHAP值
SHAP值(φ?)用于描述特征的重要性。 請考慮以下圖表:
f(x)是模型預測的輸出,E[f(z)]是如果沒有特征則預測的基值。 換句話說,E[f(z)]只是平均模型輸出。
當我們包括一個特征x 1,然后φ1,解釋我們如何從基值到新的預測值,現在由E [f(z)|給出。 z 1 = x 1]。 對剩余的變量x 1,x 2,x 3重復這個過程,估計φ1,φ2和φ3的SHAP值,顯示模型最終如何到達預測輸出f(x)。
不同口味的SHAP(different favours of SHAP)
SHAP有多種實現方式,每種方式都適用于特定的模型類型,可以實現更快的逼近。
·TreeExplainer
TreeExplainer專為樹集合方法開發,如XGBoost,LightGBM或CatBoost。
·DeepExplainer
DeepExplainer是為深度學習模型開發的,支持TensorFlow / Keras。
·GradientExplainer
GradientExplainer也是為深度學習模型中的SHAP值而開發的,但速度比DeepExplainer慢,并且做出了不同的假設。 此方法基于Integrated Gradient歸因方法,并支持TensorFlow / Keras / PyTorch。
·KernelExplainer
KernelExplainer使用加權線性回歸近似任何類型模型的SHAP值。
使用特定于模型類型的算法(TreeExplainer,DeepExplainer)而不是通用KernelExplainer更快更有效。
總結
作者發現人類解釋和SHAP解釋之間的關聯比任何其他方法更強,這表明了SHAP的強大和直觀性。 計算出的SHAP值很容易在美觀,簡單的圖中顯示,這些圖解釋了特征如何影響特定預測。 這使得SHAP成為一個令人信服的工具,可以自信地解釋和解釋任何模型。
有關如何實現SHAP的教程,請查看我的筆記本,看看我們如何解釋漸變提升樹的預測結果。 SHAP github還提供了很多資源,可以提供有關如何實現DeepExplainer,KernelExplainer和其他有用功能的更多示例。
-
算法
+關注
關注
23文章
4601瀏覽量
92677 -
機器學習
+關注
關注
66文章
8382瀏覽量
132444
發布評論請先 登錄
相關推薦
評論