Q . PDP( Partial dependence plot )란?
A . 특성의 값에 따라 타겟값이 증가 / 감소하는지, 어떻게 영향을 미치는지에 대한 정보를 파악하는 그림이다.
- 부분의존도그림(Partial dependence plots, PDP)
- 개별 특성과 타겟간의 관계 확인
from pdpbox.pdp import pdp_isolate, pdp_plot
feature = 'annual_inc'
isolated = pdp_isolate(
model=linear,
dataset=X_val,
model_features=X_val.columns,
plot_lines=True, # ICE plots
feature=feature,
grid_type='percentile', # default='percentile', or 'equal'
num_grid_points=10 # default=10
)
pdp_plot(isolated, feature_name=feature);
Q . 한 특성에 대해 PDP를 그릴 경우 얼마나 많은 예측이 필요할까요?
A . 데이터셋 사이즈에 grid points를 곱한 수 만큼 예측을 해야한다.
- grid point를 크게 주면 겹치는 점이 생겨 Number of unique grid points는 grid point 보다 작을 수 있다.
from pdpbox.pdp import pdp_interact, pdp_interact_plot
features = ['annual_inc', 'fico_range_high']
interaction = pdp_interact(
model=boosting,
dataset=X_val_encoded,
model_features=X_val.columns,
features=features
)
pdp_interact_plot(interaction, plot_type='grid',
feature_names=features);
Q . SHAP이란?
A . 게임이론을 바탕으로 하나의 특성 대한 중요도를 알기위해 여러 특성들의 조합을 구성하고 해당 특성의 유무에 따른 평균적인 변화를 통해 얻어낸 값이 바로 shapley value이다.
- SHAP = SHapley Additive exPlanations
Q . 게임이론이란?
A . 우리가 아는 게임을 말하는 것이 아닌 여러 주제가 서로 영향을 미치는 상황에서 서로가 어떤 의사결정이나 행동을 하는지에 대해 이론화한 것을 말한다.
row = X_test.iloc[[1]] # 중첩 brackets을 사용하면 결과물이 DataFrame입니다
# 모델이 이렇게 예측한 이유를 알기 위하여
# SHAP Force Plot을 그려보겠습니다.
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(row)
shap.initjs()
shap.force_plot(
base_value=explainer.expected_value,
shap_values=shap_values,
features=row
)