shap(9)
-
Python) Catboost 모델링 및 Shap으로 분석해보기
In [1]: from IPython.core.display import display, HTML display(HTML("")) /tmp/ipykernel_2227596/3510566465.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display from IPython.core.display import display, HTML In [2]: import shap # train XGBoost model X,y = shap.datasets.adult() In [5]: import pandas as pd import ..
2022.11.27 -
(진행중) SHAP (Shapley Additive exPlanations) 이해하기
SHAP에 대해서 좀 더 이해를 해보고자 블로그를 참고하는데, 블로그를 보고 정확히 이해하려니 매우 어렵지만 이해해보려고 한다... 게임 이론 게임이론이란 우리가 아는 게임을 말하는 것이 아닌 여러 주제가 서로 영향을 미치는 상황에서 서로가 어떤 의사결정이나 행동을 하는지에 대해 이론화한 것을 말한다. 즉, 의사결정자는 자신의 결정뿐 아니라 상대방의 결정이 무엇이 될 것인가에 대해서 관심을 가지게 될 수밖에 없고 이러한 상황의 문제를 다루는 의사결정학의 한 분야라고 한다. 게임 이론 분류 Shapley value 개념 및 예시 게임 이론의 개념을 기반으로 하며 예측에 대한 각 피처의 기여도를 계산하여 기계 학습 모델의 예측을 설명하는 데 사용할 수 있습니다. Shap Value에 대한 간단한 이야기를 해..
2022.11.21 -
Catboost & Shap) 예시 코드
catboost와 shap 관련 예시 코드 catboost를 사용할 때, shap.Explanation을 잘 사용해야 함. cat_features = list(train_x.select_dtypes("category")) train_dataset = cb.Pool(train_x, train_y,cat_features=cat_features) test__dataset = cb.Pool(test_x, test_y,cat_features=cat_features) model = cb.CatBoostRegressor(loss_function='RMSE',random_state=1234, custom_metric=['RMSE', 'MAE', 'R2']) grid = {'iterations': [100, 150, 2..
2022.11.16 -
[변수 선택] BorutaShap 활용 (Python)
이전에도 Boruta를 이용해서 리뷰를 한 적이 있는데, 이번에는 Shap과 Brouta를 결합한 패키지를 찾게 되어서 공유한다. 해당 패키지의 장점이라고 생각하는 점은 일단 SHAP을 이용해서 변수 선택을 한다는 것이 가장 마음에 들었고, 그리고 변수 선택에서 사용하는 알고리즘이 Tree Based 알고리즘은 다 되긴 하는데, XGB , CATBOOST, DT(sklearn), RF(sklearn)... ensemble method(sklearn)이다. 특히 xgb나 catboost 같이 category feature를 변환하지 않고 변수 선택 모델링할 수 있는 패키지를 사용할 수 있어서, 실제로 category에 대한 영향도를 더 잘 표현해줄 것으로 기대한다. Algorithm Start by cre..
2020.10.06 -
PyTorch에서 SHAP을 사용하여 모델 해석하기 (정형 데이터)
Torch를 프레임워크를 사용한 Neural Network를 eXAI 알고리즘 중 하나인 SHAP을 사용해서 적용해보기 import torch, torchvision from torchvision import datasets, transforms from torch import nn, optim from torch.nn import functional as F import numpy as np import shap import pandas as pd Myutils는 개인적으로 분석하면서 모아놓은 모음집 from Myutils import * from sklearn.compose import ColumnTransformer from sklearn.pipeline import Pipeline 데이터 간단한 ..
2020.03.14 -
Interpreting complex models with SHAP values - 리뷰
광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다 ( Click my ADs! ) 적용 예제는 해당 블로그에 있으니 참고 바란다. Apply Tensor flow 1.x (SHAP or LIME) to tabular data [ Python ] SHAP (SHapley Additive exPlanations) Decision plot 설명 [ Python ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5 SHAP이라는 XAI Library를 사용하려고 하니, 막상 SHAP에 대해 잘 알지 못하는 것 같아서 글을 하나씩 읽어보면서 알아보려고 한다. 머신러닝 분야에서 중요한 질문은 왜 이 알고리즘이 이러한 결정을 했는지이다. 이것은 여러 가지 이유로..
2020.02.29 -
텐서플로우 버전 1에서 LIME 과 SHAP 을 사용하여 모델 해석하기 (정형 데이터)
딥러닝 모델들이 black-box 형태의 모델이기 때문에 해석을 하는 데 있어서 사람들의 많은 요구사항들이 있다. 그중에서 유명한 것은 eli5, shap, lime, skater와 같은 알고리즘들을 사용하고, 만약 이러한 알고리즘을 적용하기 어렵다면, surrogate model을 통해 해당 모델에 대한 설명 가능한 모델을 새로 만들어서 모델을 해석하는 방법도 있다. 아래 블로그는 XAI에 대해서 정리한 글이라서 참고하시면 될 것 같다. 해당 글에서는 ELI5 /Skater / SHAP에 대한 설명을 해주고 있다. 대한 예제는 해당 블로그에도 있으니 참고하길 바란다. 여기선 skater라는 것을 보게 됐는데, 이것도 적용을 해봐야겠다. https://towardsdatascience.com/explai..
2020.02.25 -
[ Python ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5
광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다 ( Click my ADs! ) 이번 글에서는 전체 모델링을 하고 나서 모델 해석을 위해 eli5 , shap을 사용하려고 한다. 핵심 포인트는 Pipeline과 Shap , Eli5를 보시면 될 것 같다. 모델 해석으로는 lime, shap, eli5가 있는데, 다 좋지만 개인적으로 shap가 선호하므로, 좀 더 잘 알기 위해서 추후에 정리해보려고 한다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import eli5 import shap import seaborn as sns plt.style.use('ggplot') # load the dataset from ..
2019.12.28 -
[ Python ] SHAP (SHapley Additive exPlanations) Decision plot 설명
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 기존에 내가 들었던 것은 Lime이라는 것이 있었지만, SHAP도 많이 언급되는 것 같아서 잘 정리된 자료를 리뷰해보려고 한다. SHAP FRAMEWORK는 머신러닝 모델 해석 분야에서 중요한 진보를 증명하고 있다고 한다. Scott Lundberg 그리고 Su-In Lee에 의해서 개발한 SHAP는 기존의 몇 가지 방법을 조합하여 직관적이고 이론적으로 잘 된 접근법을 만들어 어떤 모델에 대한 예측을 설명할 수 있다. SHAP 각 예측과 변수에 대한 같은 질문을 함으로써 모델의 설명을 build 한다. "변수 j가 이 모델로부터 제거될 때 얼마나 이 예측 i 에 변화를 줄까?" 그래서 이 물음에 대한 답은 SHAP values..
2019.09.08