偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用 SHAP 使機器學習模型變的可解釋?。?!

人工智能
SHAP 借鑒了博弈論中 Shapley 值的思想,將模型視為一個合作游戲,特征被視為游戲中的“玩家”,而模型輸出(模型預測)是“收益”。

大家好,我是小寒

SHAP 是一種用于解釋機器學習模型預測結(jié)果的方法,它基于博弈論中的 Shapley值。旨在為每個特征分配一個“貢獻值”,表明該特征對模型預測結(jié)果的影響有多大。

SHAP 為復雜的黑箱模型(如深度學習模型、集成方法等)提供了一種統(tǒng)一且理論上有保障的解釋框架,幫助我們理解模型的決策過程,提高模型的透明度和可信度。

SHAP 的基本概念

SHAP 借鑒了博弈論中 Shapley 值的思想,將模型視為一個合作游戲,特征被視為游戲中的“玩家”,而模型輸出(模型預測)是“收益”。

Shap 值的計算過程

SHAP 值的計算依賴于計算所有特征組合的邊際貢獻。其計算過程如下。

  1. 采樣特征子集
    選取包含或不包含特定特征的不同組合,計算其對模型輸出的影響。
  2. 計算邊際貢獻
    比較加入和移除某特征后模型輸出值的差異。
  3. 平均邊際貢獻
    對所有可能組合計算的貢獻值取平均,得到特征的 Shap 值。

由于特征組合的數(shù)量呈指數(shù)級增長,SHAP 使用近似方法(如蒙特卡洛采樣、特定模型優(yōu)化)來減少計算成本。

SHAP 的特點

  1. 一致性
    如果某個特征對預測的影響增加,其 SHAP 值也應增加。
  2. 公平性
    所有特征的貢獻之和等于模型的預測值減去基準值(如平均預測值)。
  3. 模型無關性
    可以應用于任何機器學習模型(如 XGBoost、隨機森林、深度神經(jīng)網(wǎng)絡等)。
  4. 局部與全局解釋能力
  • 局部解釋:解釋單個預測值的貢獻。
  • 全局解釋:衡量整個數(shù)據(jù)集上特征的重要性。

SHAP 的應用

SHAP 廣泛應用于解釋機器學習模型,以下是常見的應用場景。

  • 特征重要性分析:了解哪些特征對模型預測結(jié)果影響最大。
  • 個體預測解釋:解釋特定樣本的預測結(jié)果,提供個性化解釋。
  • 模型調(diào)優(yōu):通過 SHAP 分析特征貢獻來優(yōu)化模型。
  • 異常檢測:識別在決策過程中導致異常預測的關鍵特征。

SHAP 的實現(xiàn)方式

SHAP 提供了多種計算方法,適用于不同的模型類型和規(guī)模。

  1. Kernel SHAP(通用)
    適用于任意黑盒模型,使用加權(quán)線性回歸來逼近 SHAP 值,但計算成本較高。
  2. Tree SHAP(決策樹專用)
    針對決策樹模型(如 XGBoost、LightGBM、Random Forest)進行了優(yōu)化,計算效率更高。
  3. Deep SHAP(深度學習)
    結(jié)合深度學習的梯度信息來估計 SHAP 值。

案例分享

以下是將 SHAP 與復雜的 XGBoost 模型一起使用的示例代碼。

首先訓練一個 xgboost 模型。

import shap
import xgboost as xgb
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 1. 加載加利福尼亞房價數(shù)據(jù)集
california = fetch_california_housing()
X = pd.DataFrame(california.data, columns=california.feature_names)
y = california.target

# 2. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. 訓練 XGBoost 模型
model = xgb.XGBRegressor(objective="reg:squarederror", n_estimators=100, max_depth=4, random_state=42)
model.fit(X_train, y_train)

接下來,計算 SHAP 值,并展示所有特征對預測的整體影響。

explainer = shap.Explainer(model, X_train)
shap_values = explainer(X_test)
shap.summary_plot(shap_values, X_test)

圖片圖片

接下來,使用 force_plot 圖,直觀展示單個樣本的預測分解。

shap.force_plot(explainer.expected_value, shap_values[10].values, X_test.iloc[10], matplotlib=True)

圖片圖片

使用 Dependence Plot(依賴圖) 顯示特征 AveRooms 如何影響預測,同時考慮與其他特征的交互效應。

shap.dependence_plot("AveRooms", shap_values.values, X_test)

圖片圖片

使用 Decision Plot(決策圖) 展示特征在決策路徑中的累積影響。

shap.decision_plot(explainer.expected_value, shap_values.values[:10], X_test.iloc[:10])

圖片圖片


責任編輯:武曉燕 來源: 程序員學長
相關推薦

2024-11-04 14:33:04

機器學習SHAP黑盒模型

2025-07-15 10:29:17

2019-08-29 18:07:51

機器學習人工智能

2020-08-19 09:20:00

機器學習人工智能Python

2024-05-21 09:45:40

機器學習人工智能XAI

2021-01-08 10:47:07

機器學習模型算法

2020-08-25 10:30:59

TensorFlow數(shù)據(jù)機器學習

2023-09-20 11:42:44

人工智能AI

2021-06-05 08:04:26

機器學習CARTOptimal

2021-12-30 20:20:46

機器學習銷售語言

2019-05-13 09:22:21

微軟開源機器學習

2023-11-06 10:50:35

機器學習LIME

2019-11-15 13:52:06

機器學習Shapley計算

2023-08-11 13:54:31

AI因果

2024-05-28 08:00:00

人工智能機器學習

2022-06-07 10:25:45

機器學習Shapash

2018-05-23 09:20:12

人工智能機器學習技術(shù)

2024-09-09 11:45:15

ONNX部署模型

2021-11-02 09:40:50

TensorFlow機器學習人工智能

2017-07-07 14:41:13

機器學習神經(jīng)網(wǎng)絡JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號