[ Python ] SHAP (SHapley Additive exPlanations) Decision plot 설명

2019. 9. 8. 13:12관심있는 주제/XAI

728x90

도움이 되셨다면, 광고 한번만 눌러주세요.  블로그 관리에 큰 힘이 됩니다 ^^

기존에 내가 들었던 것은 Lime이라는 것이 있었지만, SHAP도 많이 언급되는 것 같아서 잘 정리된 자료를 리뷰해보려고 한다.

SHAP FRAMEWORK는 머신러닝 모델 해석 분야에서 중요한 진보를 증명하고 있다고 한다.

Scott Lundberg 그리고 Su-In Lee에 의해서 개발한 SHAP는 기존의 몇 가지 방법을 조합하여 직관적이고 이론적으로 잘 된 접근법을 만들어 어떤 모델에 대한 예측을 설명할 수 있다.

 

SHAP 각 예측과 변수에 대한 같은 질문을 함으로써 모델의 설명을 build 한다.

"변수 j가 이 모델로부터 제거될 때 얼마나 이 예측 i 에 변화를 줄까?"

그래서 이 물음에 대한 답은 SHAP values로 표현된다.

SHAP values 는 한 예측에서 변수의 영향도를 방향과 크기로 표현한다.

이 미디엄 글에서는 SHAP VALUES가 선형 모델의 명료성을 가진 모델 설명을 만들 수 있다.

파이선에서는 shap 이름으로 한 패키지로 개발되어 있다.  

최근에는 decision plot를 shap 패키지에 추가로 넣었다. 

decision plot 는 모델 내부 작동의 상세하게 볼 수 있게 한다.

decision plot는 결국 모델이 어떻게 결정하는지를 보여주는 것을 보여주는 시각화다. 

 

이 글에서는 간단하게 decision plot에 대해 사용 예시를 보이고자한다.

  1. Show a large number of feature effects clearly.
  2. Visualize multioutput predictions.
  3. Display the cumulative effect of interactions.
  4. Explore feature effects for a range of feature values.
  5. Compare and contrast predictions for several models.
  6. Identify typical prediction paths.

Show a large number of feature effects clearly

 

force plots 

force plots 은 shap 패키지에 의해서 개별 모델 예측들을 시각화는 기본적인 방법이다. (https://www.nature.com/articles/s41551-018-0304-0.epdf?author_access_token=vSPt7ryUfdSCv4qcyeEuCdRgN0jAjWel9jnR3ZoTv0PdqacSN9qNY_fC0jWkIQU d0L2zaj3bbIQEdrTqCczGWv2brU5rTJPxyss1N4yTIHpnSv5_nBVJoUbvejyvvjrGTb2odwWKT2Bfvl0ExQKhZw%3D%3D)

 

저자는 lightgbm model로 하고 있다 UCI Adult Income dataset 사용 

예측하고자 하는 것은 일 년에 $50k 보다 넘게 벌 확률이다.

Red arrows는 예측값을 더 높게 하는 변수들의 영향도를 설명한다(SHAP values) 

Blue arrows는 반대로 지금 예측값을 더 낮게 하는 변수들의 영향도를 나타낸다.

각각의 arrows의 크기는 변수의 영향도에 대한 양을 나타낸다. 

 

여기서 base value(왼쪽 상단) 은 train set에서의 모델 평균 예측을 마킹한 것이다.

output value는 모델의 예측이다.(0.64)  가장 큰 영향을 준 변의 값은 아래에 표시가 된다. 

결국 forceplot 은 예측에 대한 효과적인 요약을 제공한다.

 


force plot과 decision plot을 비교한 것은 아래의 그림에 있다.

decision plot

decision plot은 직선의 수직선은 모델의 기본값을 나타낸다.(회색선)

색칠된 선은 예측이다. 

변수의 값들은 참고를 위해 예 측선 옆에 보여준다.

 

하단부터 시작해서 예측 선은 shap 값이 얼마나 기본값(base value)으로부터 상단까지의 마지막 결과까지 도착할 때까지 누적 값으로 보여준다.

대략적으로 이것은 통계학에서 선형 모델에서 sum of effect와 같다고 한다. 

이 Decision plot는 해석하기 쉽게 만들면 글자대로의 shap  값을 표현한다.

 

force plot과 decision plot 둘 다 모델 예측을 설명하는데 효과적이다.

주요한 영향을 방향과 크기로 표현하는 것은 동일하다.

 

그러나 앞으로 보여주겠지만, decision plot은 많은 유효한 변수가 있을 때 force plot보다 더 효과적이다.

 

아래 그림을 보면 총 101개의 변수를 사용해서 모델링한 결괏값에 대한 shap 값을 force plot으로 표현한 것이다.

force plot

 

decision plot

 

위의 두 그림을 비교해보면 확실히 decision plot이 더 시각적으로 잘 보여주는 것 같다.

그리고 선형적으로 모델을 설명하기 효과적이다.


Visualize multioutput predictions

 Decision plot은 효과적으로 multioutput model을 설명한다. 

아래 예시는 Catboost를 사용하고 HCI Heart Disease를 데이터를 훈련시켰다. 

여기에는 총 5가지의 class를 가지고 있다. 

Class 1 indicates no disease; Class 5 indicates advanced disease.

 

아래의 decisin plot은 한 관측치에 대한 모델의 multiple output를 보여준다.

여기서 x-axis는 raw scroe를 나타낸다 (확률 x) 

이 scores는 식별을 용이하게 하기 위해 legend에 포함했다.

이 모델은 class 4로 예측했다 (dotted line) 

아래의 그림은 이 모델이 질병이 있라고 강하게 예측한다 (class 1 값이 굉장히 낮다)

그러나 모델은 쉽게 3,4,5 class 사이에서 구별을 못하는 것 같다 (raw score 유사) 

 

shap 패키지에 익숙한 사람들은 shap 패키지가 각 출력의 SHAP 값에 대해 별도의 기본값을 산출한다는 것을 알고 있다.

decision plot은 모델의 평균 base value를 보여준다 그리고 모델에 score를 정확하게 재생 산하기 위해서 shap value를 shift 한. 

이러한 접근은 시각화를 간단하게 한다 그리고 같은 scale로 비교하게 하여서 어떤 숫자가 나오든 결과물을 시각화할 수 있다.


Display the cumulative effect of interactions

decision plot은 SHAP interaction value를 지원한다. 

first-order iteractions은 tree-based model로부터 추정된다. 

 

. 많은 예측을 위해서 하나의 interaction으로 보여주는 dependence plot과는 달리 

decision plot은 모든 주요한 영향도와 그리고 1개 이상의 예측을 함께 상호작용을 표시한다.

 

아래의 그림에서는 하나의 예측에 대한 decision plot이고 주요한 영향도와 상호작용을 보여주는 시각화다.

20개 이상의 주요 변수를 보여주게 환결 설정되어 있다.

이 시각화는 명백하게 몇몇의 상호작이 예측을 높게 이끄는 것을 보여준다.


Explore feature effects for a range of feature values

decision plot은 상세하게 모델의 행동을 드러낸다.

주어진 시나리오에서 변수의 값이 변할 때, 모델 예측이 변화가 어떻게 되는지 알려준다.

여기서 capital gain을 0 ~ 10,000까지 100씩 증가시켜서 합성 데이터를 만들어서 capital gain의 영향도를 측정할 수 있다. 

하지만 명심할 것은 기존의 변수들의 값은 고정을 하면서 capital gain을 증가시키는 것이므로 일반화할 수는 없다.

capital gain이 올라갈수록 다른 변수들도 변할 수 있기 때문에 

 

dependence plot는 변수의 범위에 따라서 shap 변화를 보여준다. 

이 모델의 shap value는 log odds의 변화를 표현한다. 

아래의 시각화는 약 5000 정도에서 shap value가 변한 것을 알 수 있다. 

이것은 또한 0 ~ 3000까지 유의미한 outlier라는 것을 보여준다.

dependence plot

이러한 dependence plot는 도움이 되긴 하지만, 맥락에서 shap value의 실제적인 영향을 판단하기는 어렵다.

 

위의 목적을 위해서 확률 scale로 보여주는 decision plot을 시각화한다.

첫째, context를 설정하기 위해 기록된 참조 변수를 시각화한다. 이 변수들은 합성 데이터를 따를 수 있게 매칭이 되게 수동적으로 정렬된다. 

이 예측은 0.76이다 (capital gain = 0 ) 

모델이 약간 negative effect 영향을 준다.

 

이제 생성 데이터를 사용해서 시각화를 하면 다음과 같다. 

이전 reference record는 dashed line으로 강조돼서 표현된다.

이 변수들은 또한 작은 예측 경로를 그룹 하기 위해서 hierarchical clustering에 의해서 정렬되어 있다. 

capital gain이 높게 편ㅇ될 때 0.2 ~ 0.8 사이에서 예측

We see that, in practical terms, the effect of capital gain is largely polarized; only a handful of predictions lie between 0.2 and 0.8.

여기서 발견한 것은 대략 $4,300에서 threshold 인 것을 발견했다고 한다. 그러나 anomalies가 있다고 한다.

capital gan 0 3000, 3100 은 예기치 못하게 높은 예측을 하게 했다. 

capital gain 5000은 매우 낮은 예측을 하게 했다.

이러한 anomalies는 각각의 예측을 인지하게 돕기 위해 legend에 표시했다. 

여기서 $3000, $3100은 동일 한 경로를 가졌다.

 

전체적으로 decision plot을 사용하면, 모델을 행동을 설명하기 쉬워진다.

왜냐하면 몇몇의 예측은 나란하게 시각화할 수 있다.

이 남겨진 글에서 예시는 같은 특징에 대한 설명이다.

 

Compare and contrast predictions for several models

Decision plot는 다른 모델끼리로부터 예측을 비교하는데 유용하고 또는 앙상블 모델에서의 예측을 해석하는데도 좋다.

아래의 그림은 여러 개의 light gbm을 같이 시각화했다. 

 

 


Identify typical prediction paths

decision plot는 모델들의 전형적인 예측 경로들을 드러낸다.

아래 그림은 확률 0.98~0.1 사이에 모든 예측치를  시각화했다.

변수들은 유사한 예측 경로를 그룹화하기 위해 계층적 클러스터링을 사용하여 정렬된다.

아래의 그림에서는 2가지의 뚜렷한 경로가 있는 것을 알 수 있다.

하나의 capital gain에 의해서 압도된 것과

다른 하나는 capital loss에 의해서 영향을 많이 받는 그림을 보여준다.

decision plot

위의 그림과 비교해서 multi prediction force plot은 다음과 같다.

90도 회전하고 수평으로 쌓이는 많은 개별적인 force plot의 조합이다.

시각화들 사이에서 몇 가지 차이점들이 있다. 몇가지 짚어보면 다음과 같다.

force plot 은 대적으로 예측들의 3/4이 capital gain에 의해서 압도된 예측 경로를 따르는 것을 보여준다.

decision plot은 이러한 비례감을 보여줄 수가 없다.

force plot에서는 , 마우스 오버에 변수 label이 나타나는 interactive mode에서 보지 않는 한 왼쪽의 예측이 자본 손실에 의해 좌우된다는 것은 명백하지 않다. ( it is not evident that the predictions on the left are dominated by capital loss unless it is viewed in interactive mode where feature labels appear on mouse-over. )

게다가 일반적인 나이와 관계에 대한 패턴이 나타나지 않는다.

decision plot은 효율적으로 이 양상을 드러낸다.

 

Conclusion

Decision plot은 shap package에 추가로 더해졌다. 

 

 

 

 

 

https://slundberg.github.io/shap/notebooks/plots/decision_plot.html

 

decision_plot

Upon further inspection of the predictions, we found a threshold around \$4,300, but there are anomalies. Capital gains of \\$0, \$3,000, and \\$3,100 contribute to unexpectedly high predictions; capital gains of \$5,000 contributes to unexpectedly low pre

slundberg.github.io

https://towardsdatascience.com/introducing-shap-decision-plots-52ed3b4a1cba

 

Introducing SHAP Decision Plots

Visualize the inner workings of machine learning models with greater detail and flexibility

towardsdatascience.com

 

728x90