shap 실습 :: 머신 러닝 모형 해석 - mindscale
Skip to content

shap 실습

설치

!pip install shap

준비

전처리된 데이터를 불러온다.

import joblib
data = joblib.load('tmi.pkl')
locals().update(data)

학습된 모형을 불러온다.

import tensorflow as tf
model = tf.keras.models.load_model('simple-text-model.krs')

설명

import shap
e = shap.DeepExplainer(model, x_train.toarray())

테스트 데이터의 5번에 대해 설명을 생성하기로 한다.

idx = 5
review_test.iloc[idx]
'This is an excellent film.'

테스트 데이터의 단어 문서 행렬에서 5번 행을 추출한다.

features = x_test[[idx]].toarray()

추출된 데이터로 SHAP 가치를 계산한다.

values = e.shap_values(features)

계산된 가치를 표로 만들어, 큰 순서로 정렬해본다.

import pandas as pd
vdf = pd.DataFrame({'word': cv.get_feature_names(), 
                    'value': values[0].flat})
vdf.sort_values('value', ascending=False).head()
word value
268 film 0.029624
240 excellent 0.019064
55 bad 0.002164
575 plot 0.001517
831 time 0.001084

가치를 예쁘게 그려본다.

shap.initjs()
shap.force_plot(e.expected_value.numpy(), values[0], features=features, feature_names=cv.get_feature_names())