소품집

[python] SHAP (SHapley Additive exPlanations), 설명 가능한 인공지능 (2) 본문

AI

[python] SHAP (SHapley Additive exPlanations), 설명 가능한 인공지능 (2)

sodayeong 2023. 2. 21. 16:38

1. Shapley Value

  • Shapley Value란, 게임이론을 바탕으로 Game에서 각 Player의 기여분을 계산하는 방법임.
  • 하나의 feature에 대한 중요도를 얻기 위해 다양한 feature의 조합을 구성하고, 해당 feature의 유무에 따른 평균적인 변화를 통해 얻은 값임.
  • 따라서 Shapley Value는 전체 성과(판단)을 창출하는 데 각 feature가 얼마나 공헌했는지 수치로 표현할 수 있음.

✔️ 게임이론

여러 주제가 서로 영향을 미치는 상황에서 서로가 어떤 의사결정이나 행동을 하는지에 대해 이론화한 것

  • ϕi : i 데이터에 대한 Shapley Value
  • F : 전체 집합
  • S : 전체 집합에서, i 번째 데이터가 빠진 나머지의, 모든 부분 집합
  • fSi(xSi) : i 번째 데이터를 포함한 (=전체) 기여도
  • fS(xS) : i 번째 데이터가 빠진, 나머지 부분 집합의 기여도

 

Example

  • 집 값을 결정짓는 요인으로 [숲세권, 면적, 층, 고양이 양육 가능 여부] 등의 feature가 있다 가정하자. 
  • ‘고양이 양육 가능 여부’의 집값에 대한 기여분을 제외하고, 그 외 모든 feature가 동일하다는 가정하에 310,000 (고양이 X) -320,000 (고양이 O) -10,000 으로 계산됨.
  • 이러한 과정을 모든 가능한 조합에 대해 반복함. 

  • [숲세권, 면적, 층, 고양이 양육 가능 여부] = 4개
  • 2^(4−1) = 8 개의 조합이 있고, 8개 각 조합에 대해 {f(조합1∪ 😺) - f(조합1)} + … + {f(조합8∪ 😺) - f(조합8)} 값을 산출하고, 이를 가중평균하여 ϕ(😺) 를 구함.
  • ϕ(😺) 고양이 데이터에 대한 Shapley Value

2. SHAP

SHAP : Shapley Value 의 Conditional Expectation (조건부 기댓값)

Simplified Input을 정의하기 위해 정확한 f 값이 아닌, f 의 조건부 기댓값을 계산함.

  • 오른쪽 화살표 (ϕ0,1,2,3) 는 원점으로 부터 f(x) 가 높은 예측 결과를 낼 수 있게 도움을 주는 요소
  • 왼쪽 화살표 (ϕ4)f(x) 예측에 방해가 되는 요소

SHAP은 Shapley Value (Local Explanation) 기반으로 하여, 데이터 셋의 전체적인 영역을 해석할 수 있음. (Global Surrogate)

 

모델 f 의 특징에 따라, 계산법을 달리하여 빠르게 처리함

  • Kernel SHAP : Linear LIME, Shapley Value
  • Tree SHAP : Tree based Model
  • Deep SHAP : DeepLearning based Model

 

✔️ Global vs Local 대리 분석

Global Surrogate Analysis

학습 데이터(일부 또는 전체)를 사용해 대리 분석 모델을 구축하는 것

Local Surrogate Analysis

학습 데이터 하나를 해석화는 과정

 

Tree SHAP

Tree Ensemble Model 의 Feature Importance 는 모델(or 트리)마다 산출값이 달라지기 때문에, 일관성이 없다는 한계점이 존재함.

  • Tree Model A와 B의 Feature는 Fever, Cough로 각각 동일하지만, Split 순서가 다른 것을 확인할 수 있음.
  • Split 순서에 기반하여 계산되는 Gain, Split Count 등의 산출값이 달라지는 것을 확인할 수 있음.
    • 즉, 같은 데이터로부터 학습이 된 모델이지만, 모델마다 Feature Importance가 달라지게 됨.

E[f(x)∣xS*] = *xS 가 속하는 Leaf node의 score 값 × 해당 node에 속하는 Training 데이터의 비중각 Tree 마다 Conditional Expectation E[f(x)∣xS] 를 구해, 다 더하여 최종 값을 산출함. 

시간복잡도 : O(TLD2)T : 트리의 개수, L : 모든 트리의 최대 leaf 수, D : 모든 트리의 최대 깊이Kernel SHAP 에 비해 속도가 빠름. 

따라서 SHAP은 Split 순서와 무관하게, 일관성있는 Feature Importance를 계산할 수 있음!

 

3. 시각화

Tree SHAP

# import packages 
import pandas as pd 
import numpy as np 

from xgboost import XGBRegressor, plot_importance 
from sklearn.model_selection import train_test_split

import shap 

# load data 
X, y = shap.datasets.boston()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=1)

# modeling 
model = XGBRegressor()
model.fit(X_train, y_train)

SHAP value를 통해 Feature Attribution을 파악해보자.

# load js 
shap.initjs()

explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_train)

 

Force_plot

특정 데이터 하나 & 전체 데이터에 대해, Shapley Value를 1차원 평면에 정렬해서 보여줌.

  • 집 값 상승에 긍정적인 영향을 준 요인은 LSTAT (동네의 하위 계층 비율), 부정적인 영향을 준 요인은 RM (방의 수)가 집 값 형성에 부정적인 영향을 미쳤다고 해석할 수 있음

  • DIS (주요 업무지까지 거리)가 가깝고, LSTAT (동네의 하위 계층 비율)이 적고, CRIM (범죄율)이 낮은 주택이 좋은 거주 환경 조건을 구성해 높은 집 값으로 형성되었다고 해석할 수 있음

 

Feature Importance

shap.summary_plot(shap_values, X_train, plot_type='bar')

SHAP feature importance는 평균 절대 섀플리 값으로 측정되며 내림차순으로 정렬됨

전체 Feature가 Shapley Value 분포에 어떤 영향을 미치는지 Feature Importance 시각화를 할 수 있음.

 

summary_plot

shap.summary_plot(shap_values, X_train)

summary_plot으로 feature와 예측에 미치는 영향 사이의 관계를 볼 수 있음. 

하지만 정확한 관계를 확인하려면 shap 의존도 (SHAP Dependency plot)을 확인해야함. 

위 시각화를 설명해보자면, LSTAT, DIS 가 낮을수록 집 값 상승에 좋은 영향을 미쳤음.

RM이 높을수록 집 값 상승에 좋은 영향을 미쳤음.

 

 

Dependence_plot

SHAP 특성 의존도는 가장 간단한 전역 해석도임. 1) 특성을 선택2) 각 데이터에서 인스턴스에 대해 X축에 특성값을 표시하고 Y축에 해당하는 섀플리 값을 사용하여 점을 표시 

shap.initjs()
top_inds = np.argsort(-np.sum(np.abs(shap_values), 0))  # (13, ) : 각각의 Feature 에 대해 shap value 다 더한 것 

# make SHAP plots of the three most important features
for i in range(2):
    shap.dependence_plot(top_inds[i], shap_values, X_train)

영향력이 큰 변수들을 순서대로 출력하는 방법이며, top_inds[i]에 특정 Feature를 넣어 importance를 확인할 수 있음.

 

 

 

 


참조

[2주차] SHAP (SHapley Additive exPlanation)

SHAP에 대한 모든 것 - part 3 : SHAP을 통한 시각화해석

728x90
Comments