{
"cells": [
{
"cell_type": "markdown",
"id": "29ccd481",
"metadata": {},
"source": [
"# XAI(Explainable AI): Kernel SHAP for Classification\n",
"\n",
"본 핸즈온에서는 앙상블과 같은 블랙 박스 모델을 설명하는 데 적합한 SHAP(SHapley Additive exPlanations)을 사용하는 예시를 보여줍니다. SHAP은 전체 셋의 feature importance가 아니라 각 샘플 데이터마다 예측에 얼마나 기여했는지 정량화가 가능합니다.\n",
"\n",
"## SHAP(SHapley Additive exPlanations)\n",
"\n",
"SHAP에 대한 심화 주제는 아래 논문과 링크를 참조하세요\n",
"- [A Unified Approach to Interpreting Model Predictions] Lundberg, Scott M., and Su-In Lee Advances in Neural Information Processing Systems. 2017.\n",
"- Interpretable ML Book (SHAP chapter): http://christophm.github.io/interpretable-ml-book/shap.html"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a545713e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: You are using pip version 22.0.4; however, version 22.2.2 is available.\n",
"You should consider upgrading via the '/home/ec2-user/anaconda3/envs/pytorch_p38/bin/python -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n",
"\u001b[0m"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"!pip install -qU shap"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a7184265",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from autogluon.tabular import TabularDataset, TabularPredictor\n",
"import pandas as pd\n",
"import numpy as np\n",
"import sklearn\n",
"import shap\n",
"shap.initjs()\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"id": "d268416b",
"metadata": {},
"source": [
" \n",
"\n",
"## 1. Data preparation and Training"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c4817b39",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" education-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" sex \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" class \n",
" \n",
" \n",
" \n",
" \n",
" 26802 \n",
" 55 \n",
" Self-emp-not-inc \n",
" 319883 \n",
" Masters \n",
" 14 \n",
" Married-civ-spouse \n",
" Exec-managerial \n",
" Husband \n",
" White \n",
" Male \n",
" 4386 \n",
" 0 \n",
" 10 \n",
" ? \n",
" >50K \n",
" \n",
" \n",
" 19134 \n",
" 78 \n",
" ? \n",
" 167336 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" ? \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 16 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 37431 \n",
" 36 \n",
" Private \n",
" 190350 \n",
" HS-grad \n",
" 9 \n",
" Never-married \n",
" Adm-clerical \n",
" Not-in-family \n",
" Black \n",
" Female \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 20173 \n",
" 25 \n",
" Self-emp-inc \n",
" 160261 \n",
" Bachelors \n",
" 13 \n",
" Never-married \n",
" Exec-managerial \n",
" Own-child \n",
" Asian-Pac-Islander \n",
" Male \n",
" 0 \n",
" 0 \n",
" 35 \n",
" Taiwan \n",
" <=50K \n",
" \n",
" \n",
" 3869 \n",
" 47 \n",
" Private \n",
" 216096 \n",
" Some-college \n",
" 10 \n",
" Married-spouse-absent \n",
" Exec-managerial \n",
" Unmarried \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 35 \n",
" Puerto-Rico \n",
" <=50K \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education education-num \\\n",
"26802 55 Self-emp-not-inc 319883 Masters 14 \n",
"19134 78 ? 167336 HS-grad 9 \n",
"37431 36 Private 190350 HS-grad 9 \n",
"20173 25 Self-emp-inc 160261 Bachelors 13 \n",
"3869 47 Private 216096 Some-college 10 \n",
"\n",
" marital-status occupation relationship \\\n",
"26802 Married-civ-spouse Exec-managerial Husband \n",
"19134 Married-civ-spouse ? Husband \n",
"37431 Never-married Adm-clerical Not-in-family \n",
"20173 Never-married Exec-managerial Own-child \n",
"3869 Married-spouse-absent Exec-managerial Unmarried \n",
"\n",
" race sex capital-gain capital-loss \\\n",
"26802 White Male 4386 0 \n",
"19134 White Male 0 0 \n",
"37431 Black Female 0 0 \n",
"20173 Asian-Pac-Islander Male 0 0 \n",
"3869 White Female 0 0 \n",
"\n",
" hours-per-week native-country class \n",
"26802 10 ? >50K \n",
"19134 16 United-States <=50K \n",
"37431 40 United-States <=50K \n",
"20173 35 Taiwan <=50K \n",
"3869 35 Puerto-Rico <=50K "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"N_SUBSAMPLE = 500 # subsample datasets for faster demo\n",
"N_TEST = 50\n",
"NSHAP_SAMPLES = 10 # how many samples to use to approximate each Shapely value, larger values will be slower\n",
"\n",
"train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv') # can be local CSV file as well, returns Pandas DataFrame\n",
"train_data = train_data.sample(N_SUBSAMPLE)\n",
"test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')\n",
"test_data = test_data.sample(N_TEST)\n",
"\n",
"label = 'class'\n",
"\n",
"y_train = train_data[label]\n",
"y_test = test_data[label]\n",
"X_train = pd.DataFrame(train_data.drop(columns=[label]))\n",
"X_test = pd.DataFrame(test_data.drop(columns=[label]))\n",
"\n",
"display(train_data.head())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "676c8c50",
"metadata": {},
"outputs": [],
"source": [
"save_path = 'ag-03-explainable-ai'\n",
"!rm -rf $save_path"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9f9f9a2c",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Beginning AutoGluon training ... Time limit = 20s\n",
"AutoGluon will save models to \"ag-03-explainable-ai/\"\n",
"AutoGluon Version: 0.5.2\n",
"Python Version: 3.8.12\n",
"Operating System: Linux\n",
"Train Data Rows: 500\n",
"Train Data Columns: 14\n",
"Label Column: class\n",
"Preprocessing data ...\n",
"Selected class <--> label mapping: class 1 = >50K, class 0 = <=50K\n",
"\tNote: For your binary classification, AutoGluon arbitrarily selected which label-value represents positive ( >50K) vs negative ( <=50K) class.\n",
"\tTo explicitly set the positive_class, either rename classes to 1 and 0, or specify positive_class in Predictor init.\n",
"Using Feature Generators to preprocess the data ...\n",
"Fitting AutoMLPipelineFeatureGenerator...\n",
"\tAvailable Memory: 11886.91 MB\n",
"\tTrain Data (Original) Memory Usage: 0.29 MB (0.0% of available memory)\n",
"\tInferring data type of each feature based on column values. Set feature_metadata_in to manually specify special dtypes of the features.\n",
"\tStage 1 Generators:\n",
"\t\tFitting AsTypeFeatureGenerator...\n",
"\t\t\tNote: Converting 1 features to boolean dtype as they only contain 2 unique values.\n",
"\tStage 2 Generators:\n",
"\t\tFitting FillNaFeatureGenerator...\n",
"\tStage 3 Generators:\n",
"\t\tFitting IdentityFeatureGenerator...\n",
"\t\tFitting CategoryFeatureGenerator...\n",
"\t\t\tFitting CategoryMemoryMinimizeFeatureGenerator...\n",
"\tStage 4 Generators:\n",
"\t\tFitting DropUniqueFeatureGenerator...\n",
"\tTypes of features in original data (raw dtype, special dtypes):\n",
"\t\t('int', []) : 6 | ['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss', ...]\n",
"\t\t('object', []) : 8 | ['workclass', 'education', 'marital-status', 'occupation', 'relationship', ...]\n",
"\tTypes of features in processed data (raw dtype, special dtypes):\n",
"\t\t('category', []) : 7 | ['workclass', 'education', 'marital-status', 'occupation', 'relationship', ...]\n",
"\t\t('int', []) : 6 | ['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss', ...]\n",
"\t\t('int', ['bool']) : 1 | ['sex']\n",
"\t0.2s = Fit runtime\n",
"\t14 features in original data used to generate 14 features in processed data.\n",
"\tTrain Data (Processed) Memory Usage: 0.03 MB (0.0% of available memory)\n",
"Data preprocessing and feature engineering runtime = 0.28s ...\n",
"AutoGluon will gauge predictive performance using evaluation metric: 'accuracy'\n",
"\tTo change this, specify the eval_metric parameter of Predictor()\n",
"Automatically generating train/validation split with holdout_frac=0.2, Train Rows: 400, Val Rows: 100\n",
"Fitting 13 L1 models ...\n",
"Fitting model: KNeighborsUnif ... Training model for up to 19.72s of the 19.72s of remaining time.\n",
"\t0.66\t = Validation score (accuracy)\n",
"\t0.01s\t = Training runtime\n",
"\t0.04s\t = Validation runtime\n",
"Fitting model: KNeighborsDist ... Training model for up to 19.67s of the 19.66s of remaining time.\n",
"\t0.64\t = Validation score (accuracy)\n",
"\t0.01s\t = Training runtime\n",
"\t0.06s\t = Validation runtime\n",
"Fitting model: LightGBMXT ... Training model for up to 19.6s of the 19.6s of remaining time.\n",
"\t0.84\t = Validation score (accuracy)\n",
"\t1.28s\t = Training runtime\n",
"\t0.04s\t = Validation runtime\n",
"Fitting model: LightGBM ... Training model for up to 18.27s of the 18.26s of remaining time.\n",
"\t0.83\t = Validation score (accuracy)\n",
"\t0.52s\t = Training runtime\n",
"\t0.04s\t = Validation runtime\n",
"Fitting model: RandomForestGini ... Training model for up to 17.69s of the 17.69s of remaining time.\n",
"\t0.82\t = Validation score (accuracy)\n",
"\t0.9s\t = Training runtime\n",
"\t0.08s\t = Validation runtime\n",
"Fitting model: RandomForestEntr ... Training model for up to 16.68s of the 16.68s of remaining time.\n",
"\t0.81\t = Validation score (accuracy)\n",
"\t0.92s\t = Training runtime\n",
"\t0.09s\t = Validation runtime\n",
"Fitting model: CatBoost ... Training model for up to 15.64s of the 15.64s of remaining time.\n",
"\t0.85\t = Validation score (accuracy)\n",
"\t3.64s\t = Training runtime\n",
"\t0.03s\t = Validation runtime\n",
"Fitting model: ExtraTreesGini ... Training model for up to 11.97s of the 11.97s of remaining time.\n",
"\t0.82\t = Validation score (accuracy)\n",
"\t0.84s\t = Training runtime\n",
"\t0.17s\t = Validation runtime\n",
"Fitting model: ExtraTreesEntr ... Training model for up to 10.91s of the 10.91s of remaining time.\n",
"\t0.83\t = Validation score (accuracy)\n",
"\t0.92s\t = Training runtime\n",
"\t0.09s\t = Validation runtime\n",
"Fitting model: NeuralNetFastAI ... Training model for up to 9.87s of the 9.87s of remaining time.\n",
"No improvement since epoch 5: early stopping\n",
"\t0.82\t = Validation score (accuracy)\n",
"\t2.48s\t = Training runtime\n",
"\t0.05s\t = Validation runtime\n",
"Fitting model: XGBoost ... Training model for up to 7.31s of the 7.3s of remaining time.\n",
"\t0.86\t = Validation score (accuracy)\n",
"\t1.07s\t = Training runtime\n",
"\t0.03s\t = Validation runtime\n",
"Fitting model: NeuralNetTorch ... Training model for up to 6.2s of the 6.19s of remaining time.\n",
"\tRan out of time, stopping training early. (Stopping on epoch 24)\n",
"\t0.82\t = Validation score (accuracy)\n",
"\t6.23s\t = Training runtime\n",
"\t0.04s\t = Validation runtime\n",
"Fitting model: WeightedEnsemble_L2 ... Training model for up to 19.72s of the -0.11s of remaining time.\n",
"\t0.87\t = Validation score (accuracy)\n",
"\t0.64s\t = Training runtime\n",
"\t0.0s\t = Validation runtime\n",
"AutoGluon training complete, total runtime = 20.81s ... Best model: \"WeightedEnsemble_L2\"\n",
"TabularPredictor saved. To load, use: predictor = TabularPredictor.load(\"ag-03-explainable-ai/\")\n"
]
}
],
"source": [
"predictor = TabularPredictor(label=label, path=save_path, problem_type='binary').fit(train_data, time_limit=20)"
]
},
{
"cell_type": "markdown",
"id": "3b0b9ccd",
"metadata": {},
"source": [
" \n",
"\n",
"## 2. Explain predictions\n",
"\n",
"SHAP은 각 피쳐가 예측 결과에 \"얼마나\" 기여하는지 설명합니다. 구체적으로 baseline에서 positive 클래스의 예측 확률 간의 편차로 정량화되며,\n",
"신규 데이터에 대한 예측 시에는 훈련 데이터에 대한 평균 예측과 다른 각 피쳐가 예측에 얼마나 기여하는지 정량화합니다."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b5fa52ca",
"metadata": {},
"outputs": [],
"source": [
"class AutogluonWrapper:\n",
" def __init__(self, predictor, feature_names):\n",
" self.ag_model = predictor\n",
" self.feature_names = feature_names\n",
" \n",
" def predict_proba(self, X):\n",
" if isinstance(X, pd.Series):\n",
" X = X.values.reshape(1,-1)\n",
" if not isinstance(X, pd.DataFrame):\n",
" X = pd.DataFrame(X, columns=self.feature_names)\n",
" return self.ag_model.predict_proba(X)"
]
},
{
"cell_type": "markdown",
"id": "7976039a",
"metadata": {},
"source": [
"피쳐의 baseline reference 값을 정의합니다. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "eb0640d3",
"metadata": {},
"outputs": [],
"source": [
"baseline = X_train.sample(100) # X_train.mode() could also be reasonable baseline for both numerical/categorical features rather than an entire dataset."
]
},
{
"cell_type": "markdown",
"id": "d90321a0",
"metadata": {},
"source": [
"AutoGluon 예측 결과를 설명하기 위해 Kernel SHAP 값을 반환하는 KernelExplainer를 생성합니다."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "75f4351a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Baseline prediction: <=50K 0.582965\n",
" >50K 0.417035\n",
"dtype: float64\n"
]
}
],
"source": [
"ag_wrapper = AutogluonWrapper(predictor, X_train.columns)\n",
"explainer = shap.KernelExplainer(ag_wrapper.predict_proba, baseline)\n",
"print(\"Baseline prediction: \", np.mean(ag_wrapper.predict_proba(baseline))) # this is the same as explainer.expected_value"
]
},
{
"cell_type": "markdown",
"id": "c408c554",
"metadata": {},
"source": [
"### SHAP for single datapoint\n",
"\n",
"훈련 데이터셋 내의 임의의 데이터 포인트에 대해 SHAP을 plot해 보겠습니다."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f05733d8",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "91b366ced7c24c25b56889b52e3239d2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ROW_INDEX = 0 # index of an example datapoint\n",
"single_datapoint = X_train.iloc[[ROW_INDEX]]\n",
"single_prediction = ag_wrapper.predict_proba(single_datapoint)\n",
"shap_values_single = explainer.shap_values(single_datapoint, nsamples=NSHAP_SAMPLES)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "db505e59",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" Visualization omitted, Javascript library not loaded! \n",
" Have you run `initjs()` in this notebook? If this notebook was from another\n",
" user you must also trust this notebook (File -> Trust notebook). If you are viewing\n",
" this notebook on github the Javascript has been stripped for security. If you are using\n",
" JupyterLab this error is because a JupyterLab extension has not yet been written.\n",
"
\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shap.force_plot(explainer.expected_value[0], shap_values_single[0], X_train.iloc[ROW_INDEX,:])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "9c6153a8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" Visualization omitted, Javascript library not loaded! \n",
" Have you run `initjs()` in this notebook? If this notebook was from another\n",
" user you must also trust this notebook (File -> Trust notebook). If you are viewing\n",
" this notebook on github the Javascript has been stripped for security. If you are using\n",
" JupyterLab this error is because a JupyterLab extension has not yet been written.\n",
"
\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shap.force_plot(explainer.expected_value[1], shap_values_single[1], X_train.iloc[ROW_INDEX,:])"
]
},
{
"cell_type": "markdown",
"id": "34f7781c",
"metadata": {},
"source": [
"### SHAP for dataset\n",
"\n",
"테스트 데이터셋의 모든 데이터 포인트에 대해서도 SHAP을 plot할 수 있습니다."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "6b61817c",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a74096f915fc41d882de9532589c4b91",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/50 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" Visualization omitted, Javascript library not loaded! \n",
" Have you run `initjs()` in this notebook? If this notebook was from another\n",
" user you must also trust this notebook (File -> Trust notebook). If you are viewing\n",
" this notebook on github the Javascript has been stripped for security. If you are using\n",
" JupyterLab this error is because a JupyterLab extension has not yet been written.\n",
"
\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shap_values = explainer.shap_values(X_test, nsamples=NSHAP_SAMPLES)\n",
"shap.force_plot(explainer.expected_value[0], shap_values[0], X_test)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "109ebddd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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zTV1rnPIIYew/vrr06tXL3bbbTdefvnlz8oefvhhttxySyoqKthwww0ZO3YsAHPnzmXfffeld+/erL322gwZMoRly5bVWf8xxxzD3nvvTUVFRevvsIiItAslOFJWzzzzDB999BEHHHBAk9fZe++9eeONN5g9ezY77LADRxxxxGdlxx9/PLfccgsLFy7kX//6F3vssQcA1157LRtttBFz5sxh1qxZXH755YSwUpc3ERGRTkBjcKSs3n//ffr27UvXrk1/KR533HGfPR4zZgx9+vRhwYIF9OrVi27duvHKK6+w7bbb0qdPH/r06QNAt27dmDFjBtOmTWPTTTdlyJAhrb4vIiLScagFR8pqnXXWYe7cudTUNG3Q89KlSznvvPPYZJNN6NmzJwMHDgRiFxTAgw8+yMMPP8yAAQPYfffdeeaZZwAYOXIkm266KcOHD2fw4MFceeWVbbI/IiLSMSjBkbLaZZddWHPNNZk4cWKTlp8wYQKTJk1i8uTJLFiwgOrqagCyLANgp512YtKkScyePZv999+fQw89FICKigquvfZapk6dSlVVFddddx2PP/54W+ySiIh0AEpwpKx69erFJZdcwmmnncbEiRNZsmQJn376KY888gjnnHPOCssvXLiQNdZYg3XWWYclS5YwatSoz8o++eQT7rnnHhYsWEC3bt3o2bMnXbp0AeChhx5iypQpZFn22fzaslKffvopH330EcuWLaOmpoaPPvqIpUuXts0BEBGRtpFlmW6tfNtxxx27lWO7XPNp1lmNHz8+23HHHbPu3btn6623Xvatb30r+/Of/5xlWZZddNFF2RFHHJFlWZYtXLgw+/a3v5316NEj69+/f3bXXXdlQPbGG29kH3/8cfaNb3wj6927d1ZRUZGZWfbUU09lWZZl1113XTZgwICse/fu2YYbbphdcskl9cZyzDHHZMBytzvvvLPNj4GIiNRppb4TQ5ZlZU2wisDMqoE7gK8DXwGuBvYAtgK6AM8Cp7v7m2n5AJwI/D9gALAAuNLdb0zl+wMXAJsAM4DL3P2exuIIY2uy5p5gT0REpINbqb+8qouq9ZwInA30ACYCY4ANgYHAImB8btmTU/kpQG9ge+BvAGa2F3A7cBawNnAMcIOZ7dbG8YuIiBSGfu63np+7+wvp8Yu5+R+b2cXAS2a2lrsvJrbc/NDdn07LzE03gDOB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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"shap.summary_plot(shap_values, X_test)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "91766657",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"shap.summary_plot(shap_values[0], X_test)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "8908346d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"shap.dependence_plot(\"education-num\", shap_values[0], X_test)"
]
},
{
"cell_type": "markdown",
"id": "2a7d304f",
"metadata": {},
"source": [
"### Overall Feature Importance \n",
"\n",
"개별 예측을 설명하는 대신 각 피쳐가 AutoGluon의 일반적인 예측 정확도에 얼마나 기여하는지 알고 싶다면 Permutation Shuffling을 활용할 수 있습니다."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "c4053299",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Computing feature importance via permutation shuffling for 14 features using 50 rows with 5 shuffle sets...\n",
"\t7.3s\t= Expected runtime (1.46s per shuffle set)\n",
"\t0.87s\t= Actual runtime (Completed 5 of 5 shuffle sets)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" importance \n",
" stddev \n",
" p_value \n",
" n \n",
" p99_high \n",
" p99_low \n",
" \n",
" \n",
" \n",
" \n",
" marital-status \n",
" 0.064 \n",
" 0.029665 \n",
" 0.004249 \n",
" 5 \n",
" 0.125080 \n",
" 0.002920 \n",
" \n",
" \n",
" education-num \n",
" 0.048 \n",
" 0.017889 \n",
" 0.001941 \n",
" 5 \n",
" 0.084833 \n",
" 0.011167 \n",
" \n",
" \n",
" capital-gain \n",
" 0.032 \n",
" 0.017889 \n",
" 0.008065 \n",
" 5 \n",
" 0.068833 \n",
" -0.004833 \n",
" \n",
" \n",
" capital-loss \n",
" 0.024 \n",
" 0.026077 \n",
" 0.054350 \n",
" 5 \n",
" 0.077693 \n",
" -0.029693 \n",
" \n",
" \n",
" age \n",
" 0.004 \n",
" 0.043359 \n",
" 0.423322 \n",
" 5 \n",
" 0.093277 \n",
" -0.085277 \n",
" \n",
" \n",
" relationship \n",
" 0.004 \n",
" 0.016733 \n",
" 0.310654 \n",
" 5 \n",
" 0.038454 \n",
" -0.030454 \n",
" \n",
" \n",
" workclass \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" education \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" race \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" native-country \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" fnlwgt \n",
" -0.008 \n",
" 0.010954 \n",
" 0.911096 \n",
" 5 \n",
" 0.014555 \n",
" -0.030555 \n",
" \n",
" \n",
" sex \n",
" -0.008 \n",
" 0.010954 \n",
" 0.911096 \n",
" 5 \n",
" 0.014555 \n",
" -0.030555 \n",
" \n",
" \n",
" hours-per-week \n",
" -0.008 \n",
" 0.030332 \n",
" 0.706475 \n",
" 5 \n",
" 0.054453 \n",
" -0.070453 \n",
" \n",
" \n",
" occupation \n",
" -0.024 \n",
" 0.008944 \n",
" 0.998059 \n",
" 5 \n",
" -0.005584 \n",
" -0.042416 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" importance stddev p_value n p99_high p99_low\n",
"marital-status 0.064 0.029665 0.004249 5 0.125080 0.002920\n",
"education-num 0.048 0.017889 0.001941 5 0.084833 0.011167\n",
"capital-gain 0.032 0.017889 0.008065 5 0.068833 -0.004833\n",
"capital-loss 0.024 0.026077 0.054350 5 0.077693 -0.029693\n",
"age 0.004 0.043359 0.423322 5 0.093277 -0.085277\n",
"relationship 0.004 0.016733 0.310654 5 0.038454 -0.030454\n",
"workclass 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"education 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"race 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"native-country 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"fnlwgt -0.008 0.010954 0.911096 5 0.014555 -0.030555\n",
"sex -0.008 0.010954 0.911096 5 0.014555 -0.030555\n",
"hours-per-week -0.008 0.030332 0.706475 5 0.054453 -0.070453\n",
"occupation -0.024 0.008944 0.998059 5 -0.005584 -0.042416"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictor.feature_importance(test_data)"
]
},
{
"cell_type": "markdown",
"id": "cb467b92",
"metadata": {},
"source": [
" \n",
"\n",
"## 3. Multiclass Classification\n",
"다중(multi) 클래스 분류도 SHAP 적용이 가능합니다. 이번에는 개인 소득 대신 가족 관계(relationshop)를 예측하는 문제로 변경해서 훈련을 수행 후 SHAP을 확인해 보겠습니다."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "d24c1b60",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" age \n",
" workclass \n",
" fnlwgt \n",
" education \n",
" education-num \n",
" marital-status \n",
" occupation \n",
" relationship \n",
" race \n",
" sex \n",
" capital-gain \n",
" capital-loss \n",
" hours-per-week \n",
" native-country \n",
" class \n",
" \n",
" \n",
" \n",
" \n",
" 26802 \n",
" 55 \n",
" Self-emp-not-inc \n",
" 319883 \n",
" Masters \n",
" 14 \n",
" Married-civ-spouse \n",
" Exec-managerial \n",
" Husband \n",
" White \n",
" Male \n",
" 4386 \n",
" 0 \n",
" 10 \n",
" ? \n",
" >50K \n",
" \n",
" \n",
" 19134 \n",
" 78 \n",
" ? \n",
" 167336 \n",
" HS-grad \n",
" 9 \n",
" Married-civ-spouse \n",
" ? \n",
" Husband \n",
" White \n",
" Male \n",
" 0 \n",
" 0 \n",
" 16 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 37431 \n",
" 36 \n",
" Private \n",
" 190350 \n",
" HS-grad \n",
" 9 \n",
" Never-married \n",
" Adm-clerical \n",
" Not-in-family \n",
" Black \n",
" Female \n",
" 0 \n",
" 0 \n",
" 40 \n",
" United-States \n",
" <=50K \n",
" \n",
" \n",
" 20173 \n",
" 25 \n",
" Self-emp-inc \n",
" 160261 \n",
" Bachelors \n",
" 13 \n",
" Never-married \n",
" Exec-managerial \n",
" Own-child \n",
" Asian-Pac-Islander \n",
" Male \n",
" 0 \n",
" 0 \n",
" 35 \n",
" Taiwan \n",
" <=50K \n",
" \n",
" \n",
" 3869 \n",
" 47 \n",
" Private \n",
" 216096 \n",
" Some-college \n",
" 10 \n",
" Married-spouse-absent \n",
" Exec-managerial \n",
" Unmarried \n",
" White \n",
" Female \n",
" 0 \n",
" 0 \n",
" 35 \n",
" Puerto-Rico \n",
" <=50K \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age workclass fnlwgt education education-num \\\n",
"26802 55 Self-emp-not-inc 319883 Masters 14 \n",
"19134 78 ? 167336 HS-grad 9 \n",
"37431 36 Private 190350 HS-grad 9 \n",
"20173 25 Self-emp-inc 160261 Bachelors 13 \n",
"3869 47 Private 216096 Some-college 10 \n",
"\n",
" marital-status occupation relationship \\\n",
"26802 Married-civ-spouse Exec-managerial Husband \n",
"19134 Married-civ-spouse ? Husband \n",
"37431 Never-married Adm-clerical Not-in-family \n",
"20173 Never-married Exec-managerial Own-child \n",
"3869 Married-spouse-absent Exec-managerial Unmarried \n",
"\n",
" race sex capital-gain capital-loss \\\n",
"26802 White Male 4386 0 \n",
"19134 White Male 0 0 \n",
"37431 Black Female 0 0 \n",
"20173 Asian-Pac-Islander Male 0 0 \n",
"3869 White Female 0 0 \n",
"\n",
" hours-per-week native-country class \n",
"26802 10 ? >50K \n",
"19134 16 United-States <=50K \n",
"37431 40 United-States <=50K \n",
"20173 35 Taiwan <=50K \n",
"3869 35 Puerto-Rico <=50K "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Possible classes: \n",
" Husband 234\n",
" Not-in-family 114\n",
" Own-child 78\n",
" Unmarried 49\n",
" Wife 15\n",
" Other-relative 10\n",
"Name: relationship, dtype: int64\n"
]
}
],
"source": [
"label = 'relationship'\n",
"\n",
"y_train = train_data[label]\n",
"y_test = test_data[label]\n",
"X_train = pd.DataFrame(train_data.drop(columns=[label]))\n",
"X_test = pd.DataFrame(test_data.drop(columns=[label]))\n",
"\n",
"display(train_data.head())\n",
"print(\"Possible classes: \\n\", train_data[label].value_counts())"
]
},
{
"cell_type": "markdown",
"id": "1a749f8a",
"metadata": {},
"source": [
"`problem_type`을 지정하지 않아도 AutoGluon에서 자동으로 처리하지만, 안전하게 `problem_type=multiclass`로 지정합니다."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "02b62ff8",
"metadata": {},
"outputs": [],
"source": [
"save_path = 'ag-03-explainable-ai-multiclass'\n",
"!rm -rf $save_path"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "de4d4923",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Beginning AutoGluon training ... Time limit = 20s\n",
"AutoGluon will save models to \"ag-03-explainable-ai-multiclass/\"\n",
"AutoGluon Version: 0.5.2\n",
"Python Version: 3.8.12\n",
"Operating System: Linux\n",
"Train Data Rows: 500\n",
"Train Data Columns: 14\n",
"Label Column: relationship\n",
"Preprocessing data ...\n",
"Train Data Class Count: 6\n",
"Using Feature Generators to preprocess the data ...\n",
"Fitting AutoMLPipelineFeatureGenerator...\n",
"\tAvailable Memory: 13576.74 MB\n",
"\tTrain Data (Original) Memory Usage: 0.29 MB (0.0% of available memory)\n",
"\tInferring data type of each feature based on column values. Set feature_metadata_in to manually specify special dtypes of the features.\n",
"\tStage 1 Generators:\n",
"\t\tFitting AsTypeFeatureGenerator...\n",
"\t\t\tNote: Converting 2 features to boolean dtype as they only contain 2 unique values.\n",
"\tStage 2 Generators:\n",
"\t\tFitting FillNaFeatureGenerator...\n",
"\tStage 3 Generators:\n",
"\t\tFitting IdentityFeatureGenerator...\n",
"\t\tFitting CategoryFeatureGenerator...\n",
"\t\t\tFitting CategoryMemoryMinimizeFeatureGenerator...\n",
"\tStage 4 Generators:\n",
"\t\tFitting DropUniqueFeatureGenerator...\n",
"\tTypes of features in original data (raw dtype, special dtypes):\n",
"\t\t('int', []) : 6 | ['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss', ...]\n",
"\t\t('object', []) : 8 | ['workclass', 'education', 'marital-status', 'occupation', 'race', ...]\n",
"\tTypes of features in processed data (raw dtype, special dtypes):\n",
"\t\t('category', []) : 6 | ['workclass', 'education', 'marital-status', 'occupation', 'race', ...]\n",
"\t\t('int', []) : 6 | ['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss', ...]\n",
"\t\t('int', ['bool']) : 2 | ['sex', 'class']\n",
"\t0.1s = Fit runtime\n",
"\t14 features in original data used to generate 14 features in processed data.\n",
"\tTrain Data (Processed) Memory Usage: 0.03 MB (0.0% of available memory)\n",
"Data preprocessing and feature engineering runtime = 0.09s ...\n",
"AutoGluon will gauge predictive performance using evaluation metric: 'accuracy'\n",
"\tTo change this, specify the eval_metric parameter of Predictor()\n",
"Automatically generating train/validation split with holdout_frac=0.2, Train Rows: 400, Val Rows: 100\n",
"Fitting 13 L1 models ...\n",
"Fitting model: KNeighborsUnif ... Training model for up to 19.91s of the 19.91s of remaining time.\n",
"\t0.44\t = Validation score (accuracy)\n",
"\t0.0s\t = Training runtime\n",
"\t0.01s\t = Validation runtime\n",
"Fitting model: KNeighborsDist ... Training model for up to 19.9s of the 19.9s of remaining time.\n",
"\t0.33\t = Validation score (accuracy)\n",
"\t0.0s\t = Training runtime\n",
"\t0.0s\t = Validation runtime\n",
"Fitting model: NeuralNetFastAI ... Training model for up to 19.89s of the 19.89s of remaining time.\n",
"\t0.72\t = Validation score (accuracy)\n",
"\t0.82s\t = Training runtime\n",
"\t0.01s\t = Validation runtime\n",
"Fitting model: LightGBMXT ... Training model for up to 19.05s of the 19.04s of remaining time.\n",
"\t0.79\t = Validation score (accuracy)\n",
"\t0.52s\t = Training runtime\n",
"\t0.05s\t = Validation runtime\n",
"Fitting model: LightGBM ... Training model for up to 18.46s of the 18.46s of remaining time.\n",
"\t0.79\t = Validation score (accuracy)\n",
"\t0.78s\t = Training runtime\n",
"\t0.03s\t = Validation runtime\n",
"Fitting model: RandomForestGini ... Training model for up to 17.63s of the 17.63s of remaining time.\n",
"\t0.75\t = Validation score (accuracy)\n",
"\t0.64s\t = Training runtime\n",
"\t0.06s\t = Validation runtime\n",
"Fitting model: RandomForestEntr ... Training model for up to 16.91s of the 16.91s of remaining time.\n",
"\t0.75\t = Validation score (accuracy)\n",
"\t0.69s\t = Training runtime\n",
"\t0.08s\t = Validation runtime\n",
"Fitting model: CatBoost ... Training model for up to 16.11s of the 16.11s of remaining time.\n",
"\tRan out of time, early stopping on iteration 312.\n",
"\t0.81\t = Validation score (accuracy)\n",
"\t16.08s\t = Training runtime\n",
"\t0.01s\t = Validation runtime\n",
"Fitting model: ExtraTreesGini ... Training model for up to 0.02s of the 0.02s of remaining time.\n",
"\tWarning: Model is expected to require 1.0s to train, which exceeds the maximum time limit of 0.0s, skipping model...\n",
"\tTime limit exceeded... Skipping ExtraTreesGini.\n",
"Fitting model: WeightedEnsemble_L2 ... Training model for up to 19.91s of the -0.03s of remaining time.\n",
"\t0.81\t = Validation score (accuracy)\n",
"\t0.22s\t = Training runtime\n",
"\t0.0s\t = Validation runtime\n",
"AutoGluon training complete, total runtime = 20.26s ... Best model: \"WeightedEnsemble_L2\"\n",
"TabularPredictor saved. To load, use: predictor = TabularPredictor.load(\"ag-03-explainable-ai-multiclass/\")\n"
]
}
],
"source": [
"predictor_multi = TabularPredictor(label=label, path=save_path, problem_type='multiclass').fit(train_data, time_limit=20)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "e3fdd66d",
"metadata": {},
"outputs": [],
"source": [
"baseline = X_train.sample(100) # X_train.mode() could also be reasonable baseline for both numerical/categorical features rather than an entire dataset.\n",
"\n",
"ag_wrapper = AutogluonWrapper(predictor_multi, X_train.columns)\n",
"explainer = shap.KernelExplainer(ag_wrapper.predict_proba, baseline)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "fdf21cbf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" Husband \n",
" 0.491491 \n",
" \n",
" \n",
" Not-in-family \n",
" 0.213104 \n",
" \n",
" \n",
" Other-relative \n",
" 0.011575 \n",
" \n",
" \n",
" Own-child \n",
" 0.191880 \n",
" \n",
" \n",
" Unmarried \n",
" 0.072857 \n",
" \n",
" \n",
" Wife \n",
" 0.019095 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
" Husband 0.491491\n",
" Not-in-family 0.213104\n",
" Other-relative 0.011575\n",
" Own-child 0.191880\n",
" Unmarried 0.072857\n",
" Wife 0.019095"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(np.mean(ag_wrapper.predict_proba(baseline),axis=0))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "a8fb0561",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Class Info: \n",
" [' Husband', ' Not-in-family', ' Other-relative', ' Own-child', ' Unmarried', ' Wife']\n"
]
},
{
"data": {
"text/html": [
" "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Class Info: \\n\", predictor_multi.class_labels)\n",
"\n",
"NSHAP_SAMPLES = 10 # how many samples to use to approximate each Shapely value, larger values will be slower\n",
"shap.initjs()"
]
},
{
"cell_type": "markdown",
"id": "8294338d",
"metadata": {},
"source": [
"class 중 Not-in-family에 대해서 SHAP을 plot해 보겠습니다."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "eb36161d",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "12ba0b3896fe44e89e5a2c6109636654",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Shapely values: \n",
" {' Husband': array([[0. , 0. , 0. , 0. , 0. ,\n",
" 0.38148441, 0. , 0. , 0.09544831, 0. ,\n",
" 0. , 0. , 0. , 0. ]]), ' Not-in-family': array([[ 0. , 0. , 0. , 0. , 0. ,\n",
" -0.20806026, 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. ]]), ' Other-relative': array([[ 0. , 0. , 0. , 0. , 0. ,\n",
" -0.00548243, 0. , 0. , -0.00209195, 0. ,\n",
" 0. , 0. , 0. , 0. ]]), ' Own-child': array([[ 0. , 0. , 0. , 0. , 0. ,\n",
" -0.1856742, 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. ]]), ' Unmarried': array([[ 0. , 0. , 0. , 0. , 0. ,\n",
" -0.05492021, 0. , 0. , -0.01444695, 0. ,\n",
" 0. , 0. , 0. , 0. ]]), ' Wife': array([[ 0. , 0. , 0. , 0. , 0. ,\n",
" 0.07131596, 0. , 0. , -0.0775727 , 0. ,\n",
" 0. , 0. , 0. , 0. ]])}\n",
"Force_plot for class: Not-in-family\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" Visualization omitted, Javascript library not loaded! \n",
" Have you run `initjs()` in this notebook? If this notebook was from another\n",
" user you must also trust this notebook (File -> Trust notebook). If you are viewing\n",
" this notebook on github the Javascript has been stripped for security. If you are using\n",
" JupyterLab this error is because a JupyterLab extension has not yet been written.\n",
"
\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ROW_INDEX = 0 # index of an example datapoint\n",
"class_of_interest = ' Not-in-family' # can be any value in set(y_train)\n",
"class_index = predictor_multi.class_labels.index(class_of_interest)\n",
"\n",
"single_datapoint = X_train.iloc[[ROW_INDEX]]\n",
"single_prediction = ag_wrapper.predict_proba(single_datapoint)\n",
"\n",
"shap_values_single = explainer.shap_values(single_datapoint, nsamples=NSHAP_SAMPLES)\n",
"print(\"Shapely values: \\n\", {predictor_multi.class_labels[i]:shap_values_single[i] for i in range(len(predictor_multi.class_labels))})\n",
"\n",
"print(f\"Force_plot for class: {class_of_interest}\")\n",
"shap.force_plot(explainer.expected_value[class_index], shap_values_single[class_index], X_train.iloc[ROW_INDEX,:])"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "f0bec6a3",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bb75a241cd944135852b48f4a08682d1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/50 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Force_plot for class: Not-in-family\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" Visualization omitted, Javascript library not loaded! \n",
" Have you run `initjs()` in this notebook? If this notebook was from another\n",
" user you must also trust this notebook (File -> Trust notebook). If you are viewing\n",
" this notebook on github the Javascript has been stripped for security. If you are using\n",
" JupyterLab this error is because a JupyterLab extension has not yet been written.\n",
"
\n",
" "
],
"text/plain": [
""
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shap_values = explainer.shap_values(X_test, nsamples=NSHAP_SAMPLES)\n",
"\n",
"print(f\"Force_plot for class: {class_of_interest}\")\n",
"shap.force_plot(explainer.expected_value[class_index], shap_values[class_index], X_test)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "1d7069b6",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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o0aN4oEHHuC8886jadOm5OTkUFBQwIQJmYeMXnjhhbRt25a8vDxOPvlk5s+fv71s1qxZdOvWjdzcXNq1a8fEiRMBWLt2LQMGDKBFixa0bNmSPn36sG3bTkNteffdd3n99df5wQ9+wIEHHsj555/Psccey/PPP19t26wER0REJOHmzZvHpk2bOPfcc7Nepn///ixatIjVq1dzwgknMHDgwO1lV155JVOmTKG0tJS3336b0047DYBJkyZx2GGHsWbNGlatWsW4ceOIop07WObPn0+nTp3Izf3iurrdu3ffIYnaW3s7BqfWufvg2o5BRESkLvv4449p3bo1jRtn/7U/ZMiQ7Y8LCwvJz8+npKSEvLw8cnJyWLBgAd27dyc/P5/8/HwAcnJyWLlyJcuXL6dLly706dMnY9vr168nLy9vh3l5eXl8+OHuhulmTz04IiIiCdeqVSvWrl1LWVl244G2bt3K8OHD6dy5M82bN6dDhw5AOAQF8PzzzzNr1iyOOOIITjnlFObNmwfArbfeSpcuXejXrx+dOnVi/PjxGdtv1qwZn3766Q7zPv300x16dPZWve/BkS/8putsCgoKCCe0AZy7w//6PZxcRET2VO/evWnSpAkzZszgggsu2G396dOnU1RUxNy5c+nQoQMlJSXk5+dTfmJSr169KCoqYsuWLdx///1cdNFFvP/+++Tm5jJp0iQmTZrE/PnzOfXUU+nVqxenn376Du0fc8wxLFmyhNLS0u1JzZtvvsm3v/3tattm9eCIiIgkXF5eHqNHj+aGG25gxowZbNy4kS1btjB79mxuu+22neqXlpZywAEH0KpVKzZu3MiIESO2l23evJmnnnqKkpIScnJyaN68OY0aNQJg5syZLF68mFQqtX1+eVm6o446ih49evCDH/yATZs28etf/5p//etfnH/++dW2zerBERERqUFVuU5NTbrllls45JBDGDt2LAMHDiQ3N5eePXsycuTIneoOGjSIOXPm0K5dO1q2bMmYMWN48MEHt5c/+eSTDBs2jK1bt9K1a9ftp5YvWrSIYcOGsWbNGvLz8xk6dCh9+/bNGM8zzzzD4MGDyc/Pp3379vzyl7/ck1PEK1Xvr4MjXyguLk6FQ1QiIiINhq6DIyIiIg2DEhwRERFJHCU4IiIikjhKcERERCRxlOCIiIhI4ijBSZBv/rt/uGttdM4O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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'Class 0': ' Husband', 'Class 1': ' Not-in-family', 'Class 2': ' Other-relative', 'Class 3': ' Own-child', 'Class 4': ' Unmarried', 'Class 5': ' Wife'}\n"
]
}
],
"source": [
"shap.summary_plot(shap_values, X_test)\n",
"print({\"Class \"+str(i) : predictor_multi.class_labels[i] for i in range(len(predictor_multi.class_labels))})"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "244b48e1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dependence_plot for class: Not-in-family and for feature: marital-status \n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dependence_feature = \"marital-status\"\n",
"print(f\"Dependence_plot for class: {class_of_interest} and for feature: {dependence_feature} \\n\")\n",
"\n",
"shap.dependence_plot(dependence_feature, shap_values[class_index], X_test)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "250efa4d",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Computing feature importance via permutation shuffling for 14 features using 50 rows with 5 shuffle sets...\n",
"\t7.57s\t= Expected runtime (1.51s per shuffle set)\n",
"\t0.87s\t= Actual runtime (Completed 5 of 5 shuffle sets)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" importance \n",
" stddev \n",
" p_value \n",
" n \n",
" p99_high \n",
" p99_low \n",
" \n",
" \n",
" \n",
" \n",
" marital-status \n",
" 0.064 \n",
" 0.029665 \n",
" 0.004249 \n",
" 5 \n",
" 0.125080 \n",
" 0.002920 \n",
" \n",
" \n",
" education-num \n",
" 0.048 \n",
" 0.017889 \n",
" 0.001941 \n",
" 5 \n",
" 0.084833 \n",
" 0.011167 \n",
" \n",
" \n",
" capital-gain \n",
" 0.032 \n",
" 0.017889 \n",
" 0.008065 \n",
" 5 \n",
" 0.068833 \n",
" -0.004833 \n",
" \n",
" \n",
" capital-loss \n",
" 0.024 \n",
" 0.026077 \n",
" 0.054350 \n",
" 5 \n",
" 0.077693 \n",
" -0.029693 \n",
" \n",
" \n",
" age \n",
" 0.004 \n",
" 0.043359 \n",
" 0.423322 \n",
" 5 \n",
" 0.093277 \n",
" -0.085277 \n",
" \n",
" \n",
" relationship \n",
" 0.004 \n",
" 0.016733 \n",
" 0.310654 \n",
" 5 \n",
" 0.038454 \n",
" -0.030454 \n",
" \n",
" \n",
" workclass \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" education \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" race \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" native-country \n",
" 0.000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 5 \n",
" 0.000000 \n",
" 0.000000 \n",
" \n",
" \n",
" fnlwgt \n",
" -0.008 \n",
" 0.010954 \n",
" 0.911096 \n",
" 5 \n",
" 0.014555 \n",
" -0.030555 \n",
" \n",
" \n",
" sex \n",
" -0.008 \n",
" 0.010954 \n",
" 0.911096 \n",
" 5 \n",
" 0.014555 \n",
" -0.030555 \n",
" \n",
" \n",
" hours-per-week \n",
" -0.008 \n",
" 0.030332 \n",
" 0.706475 \n",
" 5 \n",
" 0.054453 \n",
" -0.070453 \n",
" \n",
" \n",
" occupation \n",
" -0.024 \n",
" 0.008944 \n",
" 0.998059 \n",
" 5 \n",
" -0.005584 \n",
" -0.042416 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" importance stddev p_value n p99_high p99_low\n",
"marital-status 0.064 0.029665 0.004249 5 0.125080 0.002920\n",
"education-num 0.048 0.017889 0.001941 5 0.084833 0.011167\n",
"capital-gain 0.032 0.017889 0.008065 5 0.068833 -0.004833\n",
"capital-loss 0.024 0.026077 0.054350 5 0.077693 -0.029693\n",
"age 0.004 0.043359 0.423322 5 0.093277 -0.085277\n",
"relationship 0.004 0.016733 0.310654 5 0.038454 -0.030454\n",
"workclass 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"education 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"race 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"native-country 0.000 0.000000 0.500000 5 0.000000 0.000000\n",
"fnlwgt -0.008 0.010954 0.911096 5 0.014555 -0.030555\n",
"sex -0.008 0.010954 0.911096 5 0.014555 -0.030555\n",
"hours-per-week -0.008 0.030332 0.706475 5 0.054453 -0.070453\n",
"occupation -0.024 0.008944 0.998059 5 -0.005584 -0.042416"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictor.feature_importance(test_data)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "conda_pytorch_p38",
"language": "python",
"name": "conda_pytorch_p38"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}